filebeat采集docker日志
1.运行一个nginx的docker容器
1 2 3
| [root@elk01:2 ~]# docker run --name nginx -d -p 88:80 nginx:alpine
|
2.访问测试
1 2 3
| [root@elk01:2 ~]# curl 10.0.0.211:88
|
3.编写filebeat实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| [root@elk01:0 ~]# cat /etc/filebeat/08-docker-log.yaml filebeat.inputs: - type: docker tags: 'docker' containers.ids: - "*" output.elasticsearch: hosts: ["http://10.0.0.211:9200","http://10.0.0.212:9200","http://10.0.0.213:9200"] indices: - index: "filebeat-docker-%{+yyyy.MM.dd}" when.contains: tags: "docker"
setup.ilm.enabled: false setup.template.name: "filebeat" setup.template.pattern: "filebeat*" setup.template.overwrite: false setup.template.settings: index.number_of_shards: 5 index.number_of_replicas: 0
[root@elk01:2 ~]# filebeat -e -c /etc/filebeat/08-docker-log.yaml
|
3.访问nginx使之产生日志
1 2
| [root@elk01:2 ~]# curl 10.0.0.211:88
|
filebeat模块
模块是filebeat内置的一些中间件日志监控方案,比如常见的nginx,tomcat,mysql,zookeeper等日志监控。
1 2 3 4 5
| filebeat内置模块在 /etc/filebeat/modules.d/下。 被禁用的模块后缀带.disabled
[root@elk01:2 ~]# filebeat modules list
|
启禁用模块
1 2 3
| [root@elk01:2 ~]# filebeat modules enable nginx tomcat
[root@elk01:2 ~]# filebeat modules disable tomcat
|
模块分析nginx访问日志
前提准备
1 2 3 4 5 6 7 8
| 1.防止索引冲突,删除所有索引和索引模式 2.还原nginx日志格式(如果之前你做过nginx输出格式为json格式的话就将nginx配置文件还原为原格式) 3.检查nginx是否启用,配置文件是否OK(nginx -t),启用nginx模块(filebeat modules enable nginx) 4.如果你的nginx日志文件不在默认的目录则修改实例nginx文件,如果默认目录则跳过 [root@elk01:2 ~]# vim /etc/filebeat/modules.d/nginx.yml ···#修改你的日志文件目录 var.paths: ["/yourpath/nginx/access.log*"] ···
|
编写filebeat的配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| [root@elk01:0 ~]# cat /etc/filebeat/10-nginx-modules.yaml
filebeat.config.modules: path: ${path.config}/modules.d/*.yml reload.enabled: true
output.elasticsearch: hosts: ["http://10.0.0.211:9200","http://10.0.0.212:9200","http://10.0.0.213:9200"] index: "filebeat-nginx-%{+yyyy.MM.dd}"
setup.ilm.enabled: false setup.template.name: "filebeat-nginx" setup.template.pattern: "filebeat-nginx*" setup.template.overwrite: false setup.template.settings: index.number_of_shards: 5 index.number_of_replicas: 0
[root@elk01:1 ~]# filebeat -e -c /etc/filebeat/10-nginx-modules.yaml
|
日后便可以在 菜单栏–>Discover里查询分析nginx日志 如下图
统计网站日PV量
可以理解为 一个页面就是一条PV,filebeat是按行统计,nginx的每个访问记录都为一行,以计数方式统计为日PV
点击保存即可保存可视化库
统计网站日UV
这个统计不太准确,获取的ip是日志里每行第一个的ip,这个ip其实是负载均衡的ip,如果想要获取每个用户真实ip,nginx配置文件需要设置获取用户真实ip才算是日UV量,保存uv库
统计带宽
统计设备类型
统计设备操作系统
全球流量统计
创建仪表板
菜单栏–>Dashboard 新建仪表板,数据从前面保存的库中添加
刷新可显示在线实时数据
filebeat的多行处理
filestream文件流也是采集文件的,log的替代
官网
multiline的count类型
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| [root@elk01:0 ~]# cat /etc/filebeat/11-filestream_multiline.yaml filebeat.inputs: - type: filestream paths: - /tmp/student.info parsers: - multiline: type: count count_lines: 4 output.console: pretty: true
例如: count: 2 (数据都是4行4行的或N行N行的) [root@elk01:0 ~]# cat /tmp/student.info { "name": "张三", "hobby": ["学习","跑步"] } { "name": "李四", "hobby": ["学习","看书"] }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| [root@elk01:0 ~]# filebeat -e -c /etc/filebeat/11-filestream_multiline-.yaml }, "log": { "offset": 384, "file": { "path": "/tmp/student.info" }, "flags": [ "multiline" ] }, "message": "{\n \"name\": \"张三\",\n \"hobby\": [\"学习\",\"跑步\"]\n}", "input": { "type": "filestream" } }
|
multiline的pattern类型
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| [root@elk01:0 ~]# cat /etc/filebeat/12-filestream_multiline_pattern.yaml filebeat.inputs: - type: filestream paths: - /tmp/student.info parsers: - multiline: type: pattern pattern: '^\{' negate: true match: after output.console: pretty: true
pattern: '^\{' 匹配以{开头的 negate: 匹配规则 match: 匹配规则 见下图
|
filebeat采集tomcat日志
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| 1.部署tomcat [root@elk01:0 app]# wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.30/bin/apache-tomcat-10.1.30.tar.gz
2.解压安装tomcat(提前创建安装目录) [root@elk01:0 app]# tar xf apache-tomcat-10.1.30.tar.gz -C /app [root@elk01:0 app]# ln -s /app/apache-tomcat-10.1.30/ /app/tomcat
3.配置tomato的jdk环境,使用elasticsearch的jdk即可,查看java版本 [root@elk01:0 app]# /usr/share/elasticsearch/jdk/bin/java --version openjdk 22.0.1 2024-04-16 OpenJDK Runtime Environment (build 22.0.1+8-16) OpenJDK 64-Bit Server VM (build 22.0.1+8-16, mixed mode, sharing)
[root@elk01:0 app]# cat /etc/profile.d/jdk.sh
export JAVA_HOME=/usr/share/elasticsearch/jdk export PATH=$PATH:$JAVA_HOME/bin
[root@elk01:0 app]# source /etc/profile.d/jdk.sh [root@elk01:0 app]# java --version openjdk 22.0.1 2024-04-16 OpenJDK Runtime Environment (build 22.0.1+8-16) OpenJDK 64-Bit Server VM (build 22.0.1+8-16, mixed mode, sharing)
4.启动tomcat [root@elk01:0 app]# /app/tomcat/bin/startup.sh
|
编写filebeat实例 使用tomcat采集日志
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| 1.启用tomcat模块 [root@elk01:0 app]# filebeat modules enable tomcat
2.修改tomcat模块里日志路径 [root@elk01:0 app]# vim /etc/filebeat/modules.d/tomcat.yml ··· var.input: file var.paths: - /app/tomcat/logs/localhost_access_log.* ···
3.编写filebeat实例 [root@elk01:0 app]# cat /etc/filebeat/13.modules_tomcat.yaml filebeat.config.modules: path: ${path.config}/modules.d/*.yml reload.enabled: true
output: elasticsearch: hosts: - "http://10.0.0.211:9200" - "http://10.0.0.212:9200" - "http://10.0.0.213:9200" index: "modules-tomcat-%{+yyyy.MM.dd}"
setup.ilm.enabled: false setup.template.name: "modules-tomcat" setup.template.pattern: "modules-tomcat*" setup.template.overwrite: false setup.template.settings: index.number_of_shards: 3 index.number_of_replicas: 0
[root@elk01:0 ~]# filebeat -e -c /etc/filebeat/13.modules_tomcat.yaml
|