版本v6 客户端版本v0.2.40 mtail根据官网github示例测试过程中无日志如何排查呢?

Viewed 102

image.png
地址:https://github.com/flashcatcloud/categraf/tree/main/inputs/mtail

示例日志:
cat /data/test/logs/test3.logs

日志内容

192.168.0.1 GET /foo
192.168.0.2 GET /bar
192.168.0.1 POST /bar

配置文件内容:
image.png

规则文件内容:

test.mtail

counter my_http_requests_total by log_file, verb
/^/ +
/(?P[0-9A-Za-z.:-]+) / +
/(?P[A-Z]+) / +
/(?P\S+).*/ +
/$/ {
my_http_requests_total[getfilename()][$verb]++
}
测试过程 无日志指标显示
image.png

自己写的简单测试
image.png

简单测试规则

日志解析规则

counter error_logs_total
/$[ERROR]/ {
error_logs_total++
}

4 Answers

这块没有太好的排查手段,思路就是拿着 mtail 文件中配置的正则去匹配,看看能否匹配成功

是否可以理解为 只有测试没输出指标 就是规则有问题

通常是的。我们提供的官方文档,当时孔飞老师测试过是没问题的,你还是需要检查一下是哪里细节的问题,尤其是正则。抱歉没法帮你远程排障只能提供思路,商业客户的话可以支持远程排障。

好的 非常感谢回复

测试这个目的的来源是我们自己写了其他规则也不显示指标所以就用官网的demo测试下

我实际需求日志

日志内容
2023-04-23 10:30:25.123 [ERROR] [User Management Module] [User Registration] User name cannot be empty
2023-04-23 10:30:25.123 [INFO] [test abcio] [test xzczxczx] Failed to authenticate user due to invalid credentials.
2023-04-23 10:30:25.123 [WROM] [egular expre ssio] [system atsssion] Unable to send email. Please check your email server configuration

mtail规则

# 设置指标名称和标签
counter my_logs_total by log_file, log_level, log_module, log_action

# 定义匹配第一行日志的正则表达式
/^(\S+ )+\[(?P<log_level>[A-Z]+)\] \[(?P<log_module>[^\]]+)\] \[(?P<log_action>[^\]]+)\] User name cannot be empty$/ {
    # 匹配成功后递增计数器,使用日志文件、日志级别、日志模块和日志动作标签
    my_logs_total[getfilename()][$log_level][$log_module][$log_action]++
}

# 定义匹配第二行日志的正则表达式
/^(\S+ )+\[(?P<log_level>[A-Z]+)\] \[(?P<log_module>[^\]]+)\] \[(?P<log_action>[^\]]+)\] Failed to authenticate user due to invalid credentials\.$/ {
    # 匹配成功后递增计数器,使用日志文件、日志级别、日志模块和日志动作标签
    my_logs_total[getfilename()][$log_level][$log_module][$log_action]++
}

# 定义匹配第三行日志的正则表达式
/^(\S+ )+\[(?P<log_level>[A-Z]+)\] \[(?P<log_module>[^\]]+)\] \[(?P<log_action>[^\]]+)\] Unable to send email\. Please check your email server configuration$/ {
    # 匹配成功后递增计数器,使用日志文件、日志级别、日志模块和日志动作标签
    my_logs_total[getfilename()][$log_level][$log_module][$log_action]++
}

跟上面问题一致

规则文件以.mtail结尾,最好单独放到一个单独的prog目录内