最近业务上有个需求需要对通道连接情况进行检测,最直接的方法就是检查日志,但大多日志监控方法都是将日志集中保存后进行处理,总感觉这种方式太重了,所以就重新找到mtail想办法
需求描述:
从指定的日志样式中获取通道名称和状态码加上标签
指标样式如下:
mtaillog_suberror{ident="bj-sv006", mgname="反诈骗中心", status="17 ", yw="bj"}
日志样例:
[2022-12-31 16:40:39:329] [INFO] - net.id.sms.cmpp.CmppNettyClientConnection.bind(CmppNettyClientConnection.java:164) - 反诈骗中心-CMPP-0-1672196434121登录网关失败,status=17
使用https://regex101.com/ 测试正则语句(感谢王琼帮忙编写正则,让我少掉了一把头发)
^\[\S+\s\d+:\d+:\d+:\d+]\s\[\w+]\s-\s[^:]+:\S+\s-\s(?P<mgname>[^-]+)-(.*)-(.*)-\S+status=(?P<status>.*)$

使用echo生成测试用日志
echo '[2022-12-31 16:40:39:329] [INFO] - net.id.sms.cmpp.CmppNettyClientConnection.bind(CmppNettyClientConnection.java:164) - 反诈骗中心-CMPP-0-1672196434121登录网关失败,status=17' >>/data/app/tomcat8_client/logs/catalina.out
编写test.mtail:
counter mtaillog_suberror by mgname, status/^\[\S+\s\d+:\d+:\d+:\d+]\s\[\w+]\s-\s[^:]+:\S+\s-\s(?P<mgname>[^-]+)-(.*)-(.*)-\S+status=(?P<status>.*)$/ {mtaillog_suberror[$mgname][$status]++}
mtail启动语句:
mtail -logs=/data/app/tomcat8/logs/catalina.out -progs=./t1.mtail

单独使用mtail测试通过后,编写categraf(注意,0.22有bug,感谢夜莺的晓辉总帮忙提醒,更换0.27后正常)的input.mtail插件,将获取到的指标自动推送到n9e
[[instances]]progs = "/opt/categraf/prog" # prog dir1logs = ["/data/app/tomcat8/logs/catalina.out"]# override_timezone = "Asia/Shanghai"# emit_metric_timestamp = "true" #string type

文章转载自老柴杂货铺,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




