Zabbix 2.0正确读取日志,但触发状态是“UNKNOWN”

我试图监视一个日志文件的单词“错误”,如果出现这个词,触发每一个新的“错误”的触发器。 我开始简单地使用世界可读的文件( /var/log/test.log )。 它包含以下几行:

 test error also an error but not this 

Zabbix中的项目是log[/var/log/test.log,error] ,input“Zabbix Agent(Active)”,信息types为“log”。

我使用下面的触发器绑定到这个项目: {nero:log[/var/log/test.log,error].str(error)}=1

我已经尝试将“错误”部分从项目中移出,并将触发器值更改为0.无论我做什么,都会在“事件”选项卡中获得“未知”触发器状态。

我不确定我在这里错过了什么,有人看到这个问题? 我检查了服务器上的代理日志,并没有提到任何问题。

尝试在项目中使用引号:

 log[/var/log/test.log,"error"] 

并确保您使用“Zabbix代理(活动)”types和“日志”作为项目的types。

您可能还需要设置文件的编码,但我不确定。 我对引号不是很确定,但是文档里写的很多,而且我发现的很多例子都是这样说的,当时我正在处理与日志有关的问题。

首先,确保你的项目实际上得到这些错误行。 检查监测 – >最新数据。 如果没有,这是一个活动的代理configuration问题,而不是日志监视问题。 validation代理主机名(代理守护程序configuration文件,参数Hostname)是否与前端中的主机名匹配 – 请注意区分大小写。

如果您的物品已收到错误行,则在设置触发器后,您的物品很可能没有新的值。 确保标记“多个PROBLEM事件生成”checkbox,然后运行:$ echo error >> /var/log/test.log

代理应该拿起新的线路并将其发送到服务器。 服务器仅在获取新值之后评估此触发器。

为了logging,我从来没有能够解决这个问题。 相反,我设置了一个cron作业来遍历日志文件的每一行,并使用zabbix_sender将其发送到Zabbix服务器。

 log_file="/var/log/rsmonit_errors.log" # File to read zabbix_server="host.foo.com" # FQDN or IP of Zabbix Sever zabbix_host="servername" # Host name as defined in the entry in the Zabbix Server. NOT DNS or $HOSTNAME, this is specific to zabbix. Case sensitive. item_key="rsmonit.errors" # Item name, as defined for the host in the Zabbix Server # Loop through each line and feed it via zabbix_sender to the Zabbix server while read line; do echo $line | xargs -0 zabbix_sender -v -z $zabbix_server -s $zabbix_host -k $item_key -o done < $log_file 

这似乎工作得很好,虽然我似乎得到了一些重复的警报,而不是每行独特的警报。 请随时指出,这是可以改善的地方,因为这是我第一次做这样的脚本。

与其他许多现代监控应用程序一样,Zabbix允许用户实现自定义插件。 在你的情况下,要尽可能无痛地监视日志文件,你将需要一个专门为此构build的插件; 一个允许您轻松指定要查找的日志模式以及在日志中find这些模式时分配给这些模式的阈值。

这种工具的一个例子是autoresolve.kl.sh

这个工具的安装过程很简单:

 1. Log into the host on which you have log files to monitor 2. wget (the-url-link-of-zip-file-of-autoresolve.kl.sh) 3. cd /tmp ; unzip (the-downloaded-zip-file) 4. ./install.sh /var/tmp/KINGLAZY/SHIELDX-autoresolve.kl.sh /home/jserver -force 

用你的zabbix插件目录replace' / home / jserver '。 此外,请确保以普通用户的身份运行上述安装命令 – 不是root用户,除非您正在testing。

安装之后,您可以使用一个简单的命令来开始监视日志:

./autoresolve.kl.sh localhost / var / tmp / logXray,fixer,0n-1y-2y,0-uname,1-who,2-uptime autonda /var/log/rsmonit_errors.log 60m'error''。 1 2 error_watch -ndshow

你需要改变的最重要的参数是:

  1. /var/log/rsmonit_errors.log – 这是您正在监视的日志文件

  2. 错误 – 这是您在日志文件中查找的string。 要监视日志中的多个模式,只需按照以下方式指定它们:“error_P_fail_P_segfault_P_crash_P_panic”。 下划线P下划线表示“|”。 在外部应用程序中使用该工具时,指定pipe道符号是一种更安全的方法,例如Zabbix。

  3. error_watch – 这是您分配给此特定日志检查的名称/标记。 稍后,如果您愿意,可以使用此标记来帮助您在监视的日志上生成图表。

有关每个参数的含义的详细说明,可以直接访问帮助页面 。

在同一个帮助页面上,你还可以find如何让这个工具与Zabbix一起工作的一步一步的说明…即你需要更新什么zabbixconfiguration文件…以及你需要在zabbix上有什么设置网页界面。