
7000 字 | 20 图 | 一文带你搭建一套 ELK Stack 日志平台(一)
前言
最近在折腾 ELK 日志平台,它是 Elastic 公司推出的一整套日志收集、分析和展示的解决方案。
专门实操了一波,这玩意看起来简单,但是里面的流程步骤还是很多的,而且遇到了很多坑。在此记录和总结下。
本文亮点:一步一图、带有实操案例、踩坑记录、与开发环境的日志结合,反映真实的日志场景。日志收集平台有多种组合方式:
• ELK Stack 方式:Elasticsearch + Logstash + Filebeat + Kibana,业界最常见的架构。
• Elasticsearch + Logstash + Kafka + Kibana,用上了消息中间件,但里面也有很多坑,放到下一讲。
这次先讲解 ELK Stack 的方式,这种方式对我们的代码无侵入,核心思想就是收集磁盘的日志文件,然后导入到 Elasticsearch。
比如我们的应用系统通过 logback 把日志写入到磁盘文件,然后通过这一套组合的中间件就能把日志采集起来供我们查询使用了。
整体的架构图如下所示,流程如下:
• 先使用 Filebeat 把日志收集起来,然后把数据再传给 Logstash。
• 通过 Logstash 强大的数据清洗功能。
• 最终把数据写入到 Elasticsearch 中。
• 并由 Kibana 进行可视化。
温馨提示:以下案例都在一台 ubuntu 虚拟机上完成,内存分配了 6G。
一、部署 Elasticsearch 数据库
获取 elasticsearch 镜像
docker pull elasticsearch:7.7.1
创建挂载目录
mkdir -p /data/elk/es/{config,data,logs}
赋予权限
chown -R 1000:1000 /data/elk/es
创建配置文件
cd /data/elk/es/config
touch elasticsearch.yml
-----------------------配置内容----------------------------------
cluster.name: "my-es"
network.host: 0.0.0.0
http.port: 9200
启动 elasticsearch 容器
docker run -it -d -p 9200:9200 -p 9300:9300 --name es -e ES_JAVA_OPTS="-Xms1g -Xmx1g" -e "discovery.type=single-node" --restart=always -v /data/elk/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /data/elk/es/data:/usr/share/elasticsearch/data -v /data/elk/es/logs:/usr/share/elasticsearch/logs elasticsearch:7.7.1
验证 elasticsearch 是否启动成功
curl http://localhost:9200
二、部署 Kibana 可视化工具
2.1 安装 Kibana
获取 kibana 镜像
docker pull kibana:7.7.1
获取elasticsearch容器 ip
docker inspect --format '{{ .NetworkSettings.IPAddress }}' es
结果:172.17.0.2
创建 kibana 配置文件
mkdir -p /data/elk/kibana/
vim /data/elk/kibana/kibana.yml
配置内容:
#Default Kibana configuration for docker target
server.name: kibana
server.host: "0"
elasticsearch.hosts: ["http://172.17.0.2:9200"]
xpack.monitoring.ui.container.elasticsearch.enabled: true
2.2 运行 kibana
docker run -d --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 --name kibana -p 5601:5601 -v /data/elk/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml kibana:7.7.1
访问 http://192.168.56.10:5601。这个 IP 是服务器的 IP。Kibana 控制台的界面如下所示,打开 kibana 时,首页会提示让你选择加入一些测试数据,点击 try our sample data 按钮就可以了。Kibana 界面上会提示你是否导入样例数据,选一个后,Kibana 会帮你自动导入,然后就可以进入到 Discover 窗口搜索日志了。
image-20220427161645270
