基于Docker环境部署ELKF日志分析系统
案例环境
操作系统 | IP地址 | 主要软件 | 硬件要求 | 备注 |
---|---|---|---|---|
centos7.9 | 192.168.10.128 | docker FilebeatElasticserach、Logstash、Kibana | 4G |
关闭防火墙
systemctl stop firewalld systemctl disable firewalld
修改selinux
搭建时间同步
yum -y install ntpdate ntpdate ntp.aliyun.com
案例需求
(1) 利用 ELKF 收集容器里面的日志。
(2) 通过 Kibana 将收集到日志做图表分析。
案例实现思路
(1) 准备系统环境。
(2) 构建 ELKF 组件镜像。
(3) 创建 ELKF 容器收集容器里面的 Nginx 日志。
(4) 创建 Kibana 图形展示。
案例实施
基于 Docker 环境部署 ELKF 日志分析系统,实现日志分析功能(安装docker)
修改系统参数
[root@localhost ~]# vi /etc/sysctl.conf #可以访问的最大文件数,在末尾添加 vm.max_map_count=655360 [root@localhost ~]# sysctl -p
[root@localhost ~]#vi /etc/security/limits.conf #设置 * soft nofile 65535 * hard nofile 65535 * soft nproc 65535 * hard nproc 65535 * soft memlock unlimited * hard memlock unlimited
上传ELKF到/root/下,解压
tar zxvf ELKF.tar.gz cd elkf/ cd logstash/ mkdir -p /opt/logstash/conf/ #创建 cp nginx-log.conf /opt/logstash/conf/
基于dockfile创建镜像
cd /root/elkf/elasticsearch;docker build -t elasticsearch . cd /root/elkf/kibana;docker build -t kibana . cd /root/elkf/logstash;docker build -t logstash . cd /root/elkf/filebeat;docker build -t filebeat . docker images #查看镜像
配置网络
docker network ls docker network create kgc docker network ls
2启动 Filebeat+ELK 日志收集环境
docker run -itd -p 80:80 --network=kgc -v /var/log/nginx:/var/log/nginx --name kgc_nginx nginx docker run -itd --network=kgc -v /var/log/nginx:/var/log/nginx --name kgc_filebeat --hostname filebeat filebeat docker run -itd --network=kgc -p 5044:5044 -v /opt/logstash/conf:/opt/logstash/conf/ --name kgc_logstash --hostname logstash logstash docker run -itd --network=kgc -p 9200:9200 -p 9300:9300 -v /var/log/elasticsearch:/var/log/elasticsearch --name kgc_elasticsearch --hostname elasticsearch elasticsearch docker run -itd --network=kgc -p 5601:5601 --name kgc_kibana --hostname kibana kibana docker ps
3、Kibana Web 管理
因为 Kibana 的数据需要从 Elasticsearch 中读取,所以需要 Elasticsearch 中有数据才能 创建索引,创建不同的索引区分不同的数据集
浏览器输入 http://192.168.10.128:5601 访问 kibana 控制台。在 Management 中找到 Indexpatterns , 单 击 进 去 可 以 看 到 类 似 以 下 图 片 中 的 界 面 , 写 nginx-access-log-*作为索引,
先访问一下nginx
#!/bin/bash for i in {1..100} do curl 192.168.207.131 sleep 1 done
在 TimeFilterfieldname 选项框中选中@timestemp 这个选项, 如图 3.10 所示。在kibana 中,默认通过时间戳来排序。如果将日志存入 Elasticsearch 的时候没有指定@timestamp 字段的内容,则 Elasticsearch 会分配接收到该日志时的时间作为该日志@timestamp 的值。
单击 Discover 标签,可能会看不到数据。需要将时间轴选中为“Thisyear”才可以看到的内容,显示的条数和日志的条数一致。具体时间轴的选择可以根据当前时间和日志里面的访问时间进行推算,如
相关配置文件解释说明,请看补充====基于Docker环境部署ELKF日志分析系统说明