categraf mtail无法根据规则采集到指标

Viewed 65

(一)、环境
1、操作系统:centos7.6环境
2、categraf版本:v0.3.30

(二)、问题现象
使用简单的规则可以获取日志指标,但是使用by添加标签无法获取到日志指标:tcms_499没有使用by则可以获取到日志指标,但是paycenter使用了by则无法获取
image.png
(三)、mtail.toml配置
image.png

(四)、tcms_499.mtail和paycenter.mtail 规则文件如下:
tcms_499.mtail
image.png
paycenter.mtail
image.png

/(?PA-Z(Exception|Error)):(?P.)/ {
exception_count[$exception][$log]++
}
执行测试的时候,发现无法获取到日志指标

3 Answers

通过测试,知道问题了:
1、启动的时候读取日志,如果新日志不满足匹配规则,则没有指标值展示。所以并不是指标值为0.
2、如果规则与日志不匹配,则会一直没有指标值信息。所以正则表达式很重要,需要去确认,自己的规则是否准确匹配

感谢大佬的答复,但是我修改为如下规则,都无法匹配
hidden text env
env="production"
counter line_total by logfile,env
/$/ {
line_total[getfilename()][env]++
}
执行categraf --debug --test --inputs mtail,只有如下输出输出:
024/02/02 14:13:55 store.go:189: Starting metric store expiry loop every 1h0m0s
2024/02/02 14:13:55 runtime.go:188: Loaded program tcms_499.mtail
2024/02/02 14:13:55 runtime.go:84: unmarking tcms_499.mtail
2024/02/02 14:13:55 tail.go:288: Tailing /home/fintech_operations/categraf/conf/input.mtail/tcms_access.log
2024/02/02 14:13:55 store.go:189: Starting metric store expiry loop every 1h0m0s
2024/02/02 14:13:55 runtime.go:188: Loaded program paycenter.mtail
2024/02/02 14:13:55 runtime.go:84: unmarking paycenter.mtail
2024/02/02 14:13:55 tail.go:288: Tailing /data/app/paycenter/logs/server.log
2024/02/02 14:13:55 metrics_agent.go:299: I! input: local.mtail started
2024/02/02 14:13:55 agent.go:47: I! [*agent.MetricsAgent] started
2024/02/02 14:13:55 agent.go:50: I! agent started
2024/02/02 14:13:55 metrics_reader.go:54: D! local.mtail : before gather once
14:13:55 mtail_errors address=192.168.0.5 agent_hostname=192.168.0.5 appname=nginx exporter=categraf mtaillogs=tcms_access.log type=mtail 0
2024/02/02 14:13:55 metrics_reader.go:60: D! local.mtail : after gather once, duration: 450.154µs
2024/02/02 14:13:58 heartbeat.go:165: D! heartbeat response: {"err":""} status code: 200

假设日志格式如下:cat testPaycenter.log
RuntimeExcetipn Exception java.lang.ArrayIndexOutOfBoundsException

测试这是可以匹配的,cat progs/paycenter.mtail
counter exception_count by exception, log
/^/ +
/(?P\S+)/ +
/(\s+Exception\s+)/ +
/(?P[\s\S]+)/ +
/$/ {
exception_count[$exception][$log]++
}