我需要在 nagios 中找出某项服务的历史记录。因此我点击了该服务,然后点击“查看此服务的历史记录”,但只收到一条错误消息,提示“在当前日志文件中未找到此服务的历史记录信息”。我查看了 /usr/local/nagios/var 中的日志文件,找到了 nagios.log,但该文件每天轮换一次,这似乎很合理。该目录中还有许多其他临时文件,其名称格式为 nagios.tmp[0-9a-z]{6},我推测这些文件是其他日期的滚动日志,但它们的格式不同,不太合适。我认为 nagios 只查看第一个日志文件,然后就放弃了。
那么,如何在保持日志轮换的同时通过 Web 界面查看整个历史记录?
答案1
我建议运行类似下面的操作(您可能需要调整您实际 grep 的内容,以使搜索更具限制性,和/或在第一个 grep 之后通过管道传输到第二个 grep,在数字/-n
排序之前进一步选择行):
grep -rni "HOST;SERVICE" /usr/local/nagios/var | sort -n | perl -pe 's/(\d+)/localtime($1)/e' | gzip > /tmp/myservice.gz
此命令将:
- 递归地通过 grep 查找下面的任何
/usr/local/nagios/var
字符串 (HOST;SERVICE
) - 按数字顺序对输出进行排序:假设使用 UNIX 时间戳,这意味着无论文件 grep:d 的顺序如何,输出都将按顺序排列
- 使用 perl 将所有 unix 时间戳转换为人类可读的格式(本地时间)
- 压缩输出以
/tmp/myservice.gz
供检查zless
此命令可能会花费很长时间,因此2019*
如果您希望限制范围,您可以试验实际 grep 的文件(也许),和/或您也可以使用正则表达式通过 UNIX 时间戳进行 grep。