欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > filebeat采集应用程序日志和多行匹配

filebeat采集应用程序日志和多行匹配

2025/5/12 0:34:41 来源:https://blog.csdn.net/qq_73797346/article/details/144897656  浏览:    关键词:filebeat采集应用程序日志和多行匹配

1 filebeat采集nginx json日志

01 修改nginx的日志为json格式

elk93节点安装nginx,注释掉默认的nginx日志格式:# access_log /var/log/nginx/access.log;,在下方增加以下配置。然后重启nginx

log_format wzy_nginx_json '{"@timestamp":"$time_iso8601",''"host":"$server_addr",''"clientip":"$remote_addr",''"SendBytes":$body_bytes_sent,''"responsetime":$request_time,''"upstreamtime":"$upstream_response_time",''"upstreamhost":"$upstream_addr",''"http_host":"$host",''"uri":"$uri",''"domain":"$host",''"xff":"$http_x_forwarded_for",''"referer":"$http_referer",''"tcp_xff":"$proxy_protocol_addr",''"http_user_agent":"$http_user_agent",''"status":"$status"}';

02 配置filebeat采集nginx日志

cat > 07-nginx-to-es.yaml <<EOF
filebeat.inputs:
- type: logpaths:- /var/log/nginx/access.log# 将message的json格式解析后放在顶级字段中,而不是放到message字段中json.keys_under_root: trueoutput.elasticsearch:hosts: - "http://10.0.0.91:9200"- "http://10.0.0.92:9200"- "http://10.0.0.93:9200"index: "zhiyong18-luckyboy-log-nginx"setup.ilm.enabled: false
setup.template.name: "zhiyong18-luckyboy"
setup.template.pattern: "zhiyong18-luckyboy-log*"
setup.template.overwrite: false
setup.template.settings:index.number_of_shards: 5index.number_of_replicas: 0
EOF

可视化

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

过滤状态码

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

过滤状态码为200且域名是 pc.wzy666.com

domain :"pc.wzy666.com and status : "200"

03 根据nginx访问日志绘制dashboard

1 绘制单个指标

保存

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

IP统计

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

统计UV(带宽流量)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2 把指标制作为仪表盘

创建仪表盘时,导入库中的制作好的图

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2 filebeat采集tomcat日志

01 tomcat部署和配置

1.elk93节点下载tomcat,配置JDK借用elasticsearch的自带的JDK,并加载环境变量

cat > /etc/profile.d/tomcat.sh <<EOF
#!/bin/bash
export JAVA_HOME=/usr/share/elasticsearch/jdk
export TOMCAT_HOME=/app/apache-tomcat-10.1.25
export PATH=$PATH:$JAVA_HOME/bin:$TOMCAT_HOME/bin
EOF

2.设置tomcat的访问日志为json格式,修改conf/server.xml,删除143到159行

          <Host name="tomcat.zhiyong18.com"  appBase="webapps"unpackWARs="true" autoDeploy="true"><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="tomcat.oldboyedu.com_access_log" suffix=".json"
pattern="{&quot;clientip&quot;:&quot;%h&quot;,&quot;ClientUser&quot;:&quot;%l&quot;,&quot;authenticated&quot;:&quot;%u&quot;,&quot;AccessTime&quot;:&quot;%t&quot;,&quot;request&quot;:&quot;%r&quot;,&quot;status&quot;:&quot;%s&quot;,&quot;SendBytes&quot;:&quot;%b&quot;,&quot;Query?string&quot;:&quot;%q&quot;,&quot;partner&quot;:&quot;%{Referer}i&quot;,&quot;http_user_agent&quot;:&quot;%{User-Agent}i&quot;}"/></Host>

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3.启动tomcat

catalina.sh start

4.在Windows或linux主机上添加host记录,访问:http://tomcat.zhiyong18.com:8080

curl -H 'HOST: tomcat.zhiyong18.com' 10.0.0.93:8080

5.查看tomcat的访问日志为json格式

[root@elk93~]# tail -2 /app/apache-tomcat-10.1.25/logs/tomcat.zhiyong18.com_access_log.2024-11-16.json 
{"clientip":"10.0.0.253","ClientUser":"-","authenticated":"-","AccessTime":"[16/Nov/2024:17:38:58 +0000]","request":"GET /asf-logo-wide.svg HTTP/1.1","status":"200","SendBytes":"27235","Query?string":"","partner":"http://tomcat.zhiyong18.com:8080/tomcat.css","http_user_agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/112.0"}
{"clientip":"10.0.0.253","ClientUser":"-","authenticated":"-","AccessTime":"[16/Nov/2024:17:38:58 +0000]","request":"GET /favicon.ico HTTP/1.1","status":"200","SendBytes":"21630","Query?string":"","partner":"http://tomcat.zhiyong18.com:8080/","http_user_agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/112.0"}

02 部署filebeat采集tomcat日志

1.elk93节点执行该filebeat配置文件

cat > 08-tomcat-to-es.yaml <<EOF
filebeat.inputs:
- type: logpaths:- /app/apache-tomcat-10.1.25/logs/tomcat.zhiyong18.com_access_log*.jsonjson.keys_under_root: trueoutput.elasticsearch:hosts: - "http://10.0.0.91:9200"- "http://10.0.0.92:9200"- "http://10.0.0.93:9200"index: "zhiyong18-luckyboy-log-tomcat"setup.ilm.enabled: false
setup.template.name: "zhiyong18-luckyboy"
setup.template.pattern: "zhiyong18-luckyboy-log*"
setup.template.overwrite: false
setup.template.settings:index.number_of_shards: 5index.number_of_replicas: 0
EOF

2.创建索引模式后,在 analysis --> discover 查询对应日志

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3 filebeat多行匹配

4.3.1 ES官方多行匹配介绍

多行匹配官方文档

为什么需要多行匹配,java程序报错很有特点,基本上看到行首连续出现的 at ,然后往上看就能快速定位问题。就像下图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1.先看图。ES官方介绍了4种多行匹配模式

multiline.negate

  • 描述:正则表达式匹配的行被视为前一行的延续或新多行事件的开始

  • 默认值:false

  • 如果设置为 true:匹配到的行作为一个事件的开始,不匹配的行会参与到多行合并

  • 如果设置为 false:匹配的行会参与到多行合并,反之不匹配的就作为一个事件的开始

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2.方式1的匹配模式示例:java报错采集

提示:看懂官方的 mutiline.pattern 需要正则表达式基础

示例图外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • multiline.negate: false,正则匹配到的 以空白字符开头的行,并不是新事件的开始,会参与到多行合并
  • multiline.match: after,表示将匹配到的行(以空白字符开头的行)附加到前一行(即事件行)的后面

3.示例

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • multiline.negate: true,正则匹配到的 以日期开头的行,是新事件的开始,其余的没有被正则匹配到会参与多行合并
  • multiline.match: after,非事件行放到事件行的后面

4.3.2 tomcat错误日志采集案例

1.修改tomcat的 server.xml 故意制造一点报错。先观察 catalina.out 的日志格式特点,发现只有2个数字开头和非2个数字开头

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2.filebeat执行该配置:

cat > 09-tomcat_errlog-to-es.yaml <<EOF
filebeat.inputs:
- type: logpaths:- /app/apache-tomcat-10.1.25/logs/catalina.outmultiline:# 指定多行匹配的模式,支持pattern模式type: pattern# 指定匹配模式,事件行是2个数字开头的行,其余都参与合并pattern: '^\d{2}'negate: truematch: afteroutput.elasticsearch:hosts: - "http://10.0.0.91:9200"- "http://10.0.0.92:9200"- "http://10.0.0.93:9200"index: "zhiyong18-luckyboy-log-tomcat-errorlog"setup.ilm.enabled: false
setup.template.name: "zhiyong18-luckyboy"
setup.template.pattern: "zhiyong18-luckyboy-log*"
setup.template.overwrite: false
setup.template.settings:index.number_of_shards: 5index.number_of_replicas: 0
EOF

3.创建索引模式后去查看

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

4 count多行匹配+input写入到不同的索引案例

需求:

  • input1是/tmp/xixi.log,写入到 zhiyong18-luckyboy-log-xixi-%{+yyyy.MM.dd} 索引
  • input2是TCP数据流,写入到 zhiyong18-luckyboy-log-haha-%{+yyyy.MM.dd}

思路:

给不同的input打上标签(tag),在 output.elasticsearch 判断标签,再匹配合适的索引

1.filebeat执行该文件

cat > 10-mutiple-to-es.yaml <<EOF
filebeat.inputs:
- type: logpaths:- /tmp/xixi.log# 给数据打标签tags: xiximultiline:# 每4行才会看做1条文档type: countcount_lines: 4- type: tcphost: "0.0.0.0:9000"tags: hahaoutput.elasticsearch:hosts: - "http://10.0.0.91:9200"- "http://10.0.0.92:9200"- "http://10.0.0.93:9200"# 根据tags字段判断将events事件写入到不同的索引indices:- index: "zhiyong18-luckyboy-log-xixi-%{+yyyy.MM.dd}"# 判断tags字段是否包含 xixiwhen.contains:tags: xixi- index: "zhiyong18-luckyboy-log-haha-%{+yyyy.MM.dd}"# 判断tags字段是否包含 hahawhen.contains:tags: hahasetup.ilm.enabled: false
setup.template.name: "zhiyong18-luckyboy"
setup.template.pattern: "zhiyong18-luckyboy-log*"
setup.template.overwrite: false
setup.template.settings:index.number_of_shards: 5index.number_of_replicas: 0
EOF

2.准备测试数据 /tmp/xixi.log,内容如下

name: wenzyhobby:- 博客- 唱歌
name: shehobby:- 跳舞- 钓鱼

TCP数据流数据如下:

[root@elk91~]# echo -e '1 \n 2 \n 3 \n 4 \n A \n B \n C \n D' | nc 10.0.0.93 9000

3.验证创建成功的2条索引。去 discover 查看内容

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

of_shards: 5
index.number_of_replicas: 0
EOF


2.准备测试数据 /tmp/xixi.log,内容如下```yaml
name: wenzyhobby:- 博客- 唱歌
name: shehobby:- 跳舞- 钓鱼

TCP数据流数据如下:

[root@elk91~]# echo -e '1 \n 2 \n 3 \n 4 \n A \n B \n C \n D' | nc 10.0.0.93 9000

3.验证创建成功的2条索引。去 discover 查看内容

[外链图片转存中…(img-GSd2Tdq5-1735833529783)]

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词