这是我想要监控的日志文件:
/test/James-2018-11-16_15215125111115-16.15.41.111-appserver0.log
我希望 Nagios 读取这个日志文件,以便我可以监控特定的字符串。
问题在于15215125111115这是生成的随机 ID
这是我的脚本,其中 Nagios 正在检查日志档案小路:
可变量:
HOSTNAMEIP=$(/bin/hostname -i)
DATE=$(date +%F)
..
检查 = $(/usr/lib64/nagios/plugins/check_logfiles/check_logfiles --tag ='failorder'--logfile = / test / james-${date +“%F”} _-${HOSTNAMEIP}-appserver0.log ....
我在 nagios 中得到以下输出:
could not find logfile /test/James-2018-11-16_-16.15.41.111-appserver0.log
15215125111115这个数字总是随机生成的,但我不知道如何让 nagios 识别它。有没有办法为此添加一个变量或类似的东西?我尝试添加星号“*”,但没有用。
任何想法都将不胜感激。
答案1
我将通过 cron 运行一个单独的脚本,该脚本识别最新的日志文件并为其创建符号链接(命名为“latest.log”之类的名称)。有几种方法可以做到这一点(例如,使用ls -rt | tail
或)。find -mtime
如果新的日志文件每天在同一时间创建,则安排它在此之后立即运行。如果不是,则让它每隔 (1 分钟、5 分钟等) 运行一次,检查是否有新的日志文件。
...然后让 check_logfiles 使用该符号链接。
答案2
现在可以在自述文件 - check_logfiles 目录中找到要使用的预定义宏
$CL_HOSTNAME$ - the hostname without domain.
$CL_IPADDRESS$ - the IP address of the aforementioned.
$CL_DATE_YYYY$ - the year (1970...)
$CL_DATE_MM$ - the month (01..12)
$CL_DATE_DD$ - the day of month (01..31)
$CL_DATE_HH$ - the hour (00..23)
$CL_DATE_MI$ - the minute (00..59)
$CL_DATE_SS$ - the second (00..59)
$CL_SERVICEDESC$ - the service description derived from the config file.
$CL_NSCA_SERVICEDESC$ - dto.
$CL_NSCA_HOST_ADDRESS$ - the local address 127.0.0.1
$CL_NSCA_PORT$ - 5667
$CL_NSCA_TO_SEC$ - 10
$CL_NSCA_CONFIG_FILE$ - send_nsca.cfg