快速搞定docker部署Filebeat、ELK全家桶( 二 )

 
grok过滤的message对应的五种日志形式示例:

【快速搞定docker部署Filebeat、ELK全家桶】2020-03-04 13:25:27.488 [http-nio-9000-exec-11] INFO com.xxx.classpath - oper log b peron login 231148
2020-03-04 14:19:34.428 [http-nio-9000-exec-8] INFO com.xxx.classpath - REQUEST DATA : uri=/url;client=10.13.180.91];&&&®ion=TW%platform=2%version=unknown%mobileModel=unknown%osVersion=unknown%connectType=unknown%uuid=unknown&&&&;耗时:6ms
2020-03-07 08:09:51.890 [http-nio-9000-exec-3] INFO com.xxx.classpath - REQUEST DATA : uri=/url?offset=10&playerUserUuid=231002;client=10.13.180.36];&&&®ion=unknown%platform=1%version=unknown%mobileModel=unknown%osVersion=unknown%connectType=unknown%uuid=unknown&&&&;耗时:126ms
2020-03-02 09:55:28.196 [http-nio-9000-exec-4] INFO com.xxx.classpath - REQUEST DATA : uri=/url;client=10.13.180.91;payload={“ticket”:“xxx”}];&&&®ion=TW%platform=3%version=unknown%mobileModel=unknown%osVersion=unknown%connectType=unknown%uuid=unknown&&&&;耗时:45ms
2020-03-03 03:05:33.634 INFO 13175[io-9000-exec-12] com.xxx.classpath : oper log c peron login 254264
记得要映射logstash.yml中的两个路径 。
docker run --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 -it -d -p 5044:5044 --name logstash --net somenetwork -v /home/ec2-user/docker_config/logstash/logstash.yml:/usr/share/logstash/config/logstash.yml -v /home/ec2-user/docker_config/logstash/conf.d/:/home/ec2-user/docker_config/logstash/conf.d/ -v /home/ec2-user/docker_logs/logstash:/var/log/logstash logstash:7.5.1查看容器运行状态docker ps
写logstash配置,grok插件是必须要学会的 。
安装Kibana
Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的 。你可以用Kibana搜索、查看、交互存放在Elasticsearch索引里的数据,使用各种不同的图表、表格、地图等Kibana能够很轻易地展示高级数据分析与可视化 。
# 在本例中,Kibana使用默认配置# 运行 Kibanadocker run --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 -d --name kibana --net somenetwork -p 5601:5601 kibana:7.5.1# 查看容器启动状态docker ps1安装FilebeatFilebeat是本地文件的日志数据采集器,可监控日志目录或特定日志文件,并将它们转发给Elasticsearch或Logstatsh进行索引、Kafka等 。带有内部模块(Apache,Nginx,System和MySQL等),可通过一个指定命令来简化通用日志格式的收集,解析和可视化 。
filebeat.yml配置,更多配置选项可以查看官网 。
filebeat.inputs:- type: logenabled: true# 需要收集的日志所在的位置,可使用通配符进行配置paths:- /home/ec2-user/jenkins/logs/server-api/*.log# 这个文件记录日志读取的位置,如果容器重启,可以从记录的位置开始取日志registry_file: /home/ec2-user/docker_config/filebeat_registry# 为每个项目标识,或者分组,可区分不同格式的日志tags: ["java-logs"]exclude_lines: ['.*uri=/basic/time/current;.*']# 日志输出配置output.logstash:# 内网B机器的ip:porthosts: ['10.13.180.42:5044']enabled: truedocker运行filebeat,映射需要的配置文件
docker run --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 --name filebeat -d -v /home/ec2-user/docker_config/filebeat.docker.yml:/usr/share/filebeat/filebeat.yml -v /home/ec2-user/jenkins/logs/server-api/:/home/ec2-user/jenkins/logs/server-api/ -v /home/ec2-user/filebeat_collect/:/home/ec2-user/filebeat_collect/ -v /home/ec2-user/docker_config/filebeat_registry:/home/ec2-user/docker_config/filebeat_registry docker.io/store/elastic/filebeat:7.5.1启动Kibana查看数据如果没有配置Kibana所在服务器域名的话,可以浏览器访问"ip:5601"来访问,不过值得注意的是Kibana自身没有安全限制,一般采用网关鉴权限制或者第三方安全插件,可以谷歌搜索下 。
进入Kibana,点击下面Discover菜单 。
快速搞定docker部署Filebeat、ELK全家桶

文章插图
 
作为初学者,直接输入"*",然后点击"next step" 。先别理会是什么,看看数据建立初始成就感很重要 。
快速搞定docker部署Filebeat、ELK全家桶

文章插图
 
选择@timestamp作为时间坐标 。点击"Create index pattern" 。然后再次查看Discover菜单,就发现日志数据输出到kibana了 。
快速搞定docker部署Filebeat、ELK全家桶


推荐阅读