1.系统架构
通常我们说的elastic stack,也就是elk,通过es 收集日志数据,存到elasticsearch,最后通过kibana进行统计分析,但是elastic公司后续又推出了新的日志收集产品beats,这里更推荐使用beats,性能更高
2.搭建es
2.1 创建docker 网络,用于不同容器间通信
之前常用--link container_name,因后面--link会被官方舍弃,故改用network方式
docker network creat efknetwork
docker search elasticsearch
docker pull elasticsearch:7.13.0(这里需要加上版本号)
2.2 启动es
docker run -idt \
--restart=always \
--name elasticsearch \
-e ES_JAVA_POTS="-Xms512m -Xmx512m"
-p 9200:9200 \
--net efknetwork \
-e "discovery.type=single-node" \
elasticsearch:7.13.0
2.3 将配置文件copy出来,方便后续更改配置
docker cp elasticsearch:/usr/share/elasticsearch/config/elasticsearch.yml
2.4 重启es,映射配置文件
docker run -idt \
--restart=always \
--name elasticsearch \
-e ES_JAVA_POTS="-Xms512m -Xmx512m"
-p 9200:9200 \
--net efknetwork \
-v /home/workspace/elk/elasticsearch/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-e "discovery.type=single-node" \
elasticsearch:7.13.0
2.5 查看es启动情况
3.搭建kibana
docker pull kibana:7.13.0
3.1 启动kibana
docker run -idt \
--restart=always \
--name kibana \
--net efknetwork \
-p 5601:5601 \
-e "I18N_LOCALE=zh-CN" \
kibana:7.13.0
3.2 将配置文件copy出来,方便后面更改
docker cp kibana:/usr/share/kibana/config/kibana.yml /home/workspace/elk/kibana/config
3.3 更改kibana.yml配置文件
server.name: kibana
server.host: "0"
elasticsearch.hosts: [ "http://elasticsearch:9200" ]
monitoring.ui.container.elasticsearch.enabled: true
i18n.locale: "zh-CN"
这里直接使用容器名,默认的network只能使用ip地址,而新创建的network使用容器名,可以自动解析,默认是英文界面,zh-CN改为中文
3.4 重启kibana
docker run -idt \
--restart=always \
--name kibana \
--net efknetwork \
-v /home/workspace/elk/kibana/config:/config \
-p 5601:5601 \
-e "I18N_LOCALE=zh-CN" \
kibana:7.13.0
3.5 查看kibana启动情况
4.搭建logstash
docker pull logstash:7.13.0
4.1 创建需要映射的配置文件logstash.conf 和 logstash.yml
logstash.conf
logstash.yml
说明:
logstash.yml:用于挂载logstash相关配置
logstash.conf:用于挂载logstash日志处理配置文件
4.2 启动logstash
docker run -idt \
--restart=always \
-p 5044:5044 \
--name logstash \
--net efknetwork \
-v /home/workspace/elk/logstash/config/logstash.conf:/usr/share/logstash/pipeline/logstash.conf \
-v /home/workspace/elk/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml \
logstash:7.13.0
4.3 查看日志收集情况
docker logs logstash
5.搭建filebeat
docker pull filebeat:7.13.0
5.1 创建需要映射的配置文件filebeat.docker.yml
大致结构
以mysql慢查询为例,简单配置以示效果
这里为什么不去容器内修改配置文件呢?因为filebeat容器内的配置文件是只读的不可更改,所以只能通过映射配置文件的方式修改
5.2 启动filebeat
docker run -idt \
--restart=always \
-v /home/workspace/elk/filebeat/conf/filebeat.docker.yml:/usr/share/filebeat/filebeat.yml:ro \
-v /home/mysql/log:/var/log/filebeat:rw \
--name filebeat \
--net efknetwork \
-e setup.kibana.host=192.168.0.101:5601 \
elastic/filebeat:7.13.0
5.3 查看filebeat启动情况
docker logs filebeat
5.4 检验是否收集所需日志
在收集日志的目录下面添加日志文件,或者更新日志,然后去kibana查看是否有filebeat的索引生成,我在这里生成一个mysql慢查询日志,mysql_slow.log
可以通过搜索或者日期,字段进行筛选