检索不到日志问题
最近更新时间: 2024-10-17 17:10:00
检索日志时,可能会出现检索不到日志的状态异常。出现该状态异常时,可通过以下几种方式排查问题。
确认检索条件
检索不到日志,很多情况下是检索时间范围不正确或检索语句有问题导致。用户先选择较大时间范围(如最近30分钟),检索条件为空,确定是否有日志。
如果检索数据成功,则可能是检索语句或者时间范围有误导致,建议用户查看 检索语法 或修改检索时间范围。
检查索引配置
索引配置是使用日志服务进行检索分析的必要条件,单击检索页左上方【索引配置】入口,查看索引配置是否开启。索引配置区分全文索引和键值索引。
说明:
索引配置仅对新写入数据生效,每次更改索引配置,约有1分钟生效延时。
确认日志采集是否成功
使用 LogListener 客户端采集日志
若您是通过 CLS 提供的日志采集客户端 LogListener 采集日志,可按以下步骤排查:
检查机器组状态。
在检索分析页面,选择待排查的日志集和日志主题,单击左上角【LogListener 采集配置】,确认待采集机器状态是否正常。
说明:
若待采集日志的机器状态异常,请参见 机器组异常排查 文档。
检查 LogListener 是否成功拉取采集配置
在命令行下执行如下命令:
/etc/init.d/loglistenerd check
如果出现如下图所示“[OK] check loglistener config ok”表示调用拉取配置接口成功。
返回结果中的
logconf
字段为采集配置,如果为空表示没有拉取到对应的采集配置,参考 LogListener 使用流程 创建机器组并绑定采集配置。尽可能确保是最新版本的 LogListener。
执行以下命令,查看版本号。当前最新版本可查看 LogListener安装 文档。
/etc/init.d/loglistenerd -v
注意:
LogListener 低于2.3.0版本,不能监听软连接方式的日志文件。
确认日志上报成功。
打开 LogListener Debug 日志, 在 LogListener 安装目录下编辑
etc/loglistener.conf
配置文件,将 level 设置为 DEBUG,并重启 LogListener。执行如下命令重启 LogListener。
/etc/init.d/loglistenerd restart
执行以下命令,查看日志是否成功上报:
tail -f log/loglistener.log | grep "ClsFileProc::readFile" | grep send
如果日志成功上报到服务后台,则会出现类似下图所示的日志:
注意:
如果日志通过 HTTP 方式上报,可以通过抓包查看80端口,判断日志是否上报成功。
日志未上报,请按以下步骤排查:
在安装目录下执行以下命令,检查 LogListener 采集配置是否正确。
tail -f log/loglistener.log | grep "ClsServerConf::load"
如果已配置下发,日志则如下所示:
下发配置需要检查 log_type、path 信息是否正确:
log_type 表示配置的日志解析类型(单行全文:minimalist_log,分隔符:delimiter_log,json日志:json_log,多行全文:regex_log)。
path 表示日志采集目录。
在安装目录下执行以下命令,检查文件是否被正常监听。
grep [上报日志文件的文件名] log/loglistener.log
如果 grep 失败,使用
grep regex_match log/loglistener.log
搜索,检查控制台的正则表达式是否配置合理。如果出现下图所示的内容,表示文件名匹配正则失败,请登录控制台更改表达式。检查日志正则解析是否正确。
对于完全正则和多行全文提取模式,需要指定正则表达式。多行全文中,首行正则表达式匹配的是整个首行的内容,而非首行开头的部分内容。 例如,下图所示的日志样例。 INFO、ERROR、WARN 为日志首行,除了匹配(INFO|ERROR|WARN)外,还需将 INFO、ERROR、WARN 后面的字符匹配上。
错误配置方法:
^(INFO|ERROR|WARN)
正确配置方法:
^(INFO|ERROR|WARN).*
确认一个文件被一个日志主题采集、单行日志最大不超过1M。
未按上述要求可能导致采集缺失。