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

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

我正在尝试监视日志文件中是否存在单词“error”,如果出现该单词,则在每次出现新的“error”时触发触发器。我从一个/var/log/test.log所有人都可读的文件 ( ) 开始。它包含以下几行:

test
error
also an error
but not this

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

我正在使用与该项目相关的以下触发器:{nero:log[/var/log/test.log,error].str(error)}=1

我尝试将“错误”部分从项目中删除,并将触发值更改为 0。无论我做什么,我都会在“事件”选项卡中看到“未知”的触发状态。

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

答案1

尝试在项目中使用引号:

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

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

您可能还需要设置文件的编码,但我对此不太确定。我不确定引号是否正确,但当我处理日志问题时,文档和我发现的许多示例都这么说。

答案2

首先,确保您的项目确实收到这些错误行。检查监控 -> 最新数据。如果没有,那就是活动代理配置问题,而不是日志监控问题。验证代理主机名(代理守护程序配置文件,参数主机名)是否与前端中的主机名匹配 - 请注意它区分大小写。

如果您的项目收到错误行,则很可能是设置触发器后您的项目没有获得新值。确保选中该触发器的“多个问题事件生成”复选框,然后运行:$ echo error >> /var/log/test.log

代理应拾取新行并将其发送到服务器。服务器仅在获取新值后才评估此触发器。

答案3

顺便说一下,我从来没有能够解决这个问题。相反,我设置了一个 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

这似乎效果很好,尽管我似乎收到了一些重复的警报,而不是每行都有唯一的警报。请随时指出任何可以改进的地方,因为这是我第一次编写这样的脚本。

答案4

Zabbix 和许多其他现代监控应用程序一样,允许用户实现自定义插件。对于您来说,为了尽可能轻松地监控日志文件,您需要一个专门为此构建的插件;该插件允许您轻松指定要查找的日志模式以及在日志中找到这些模式时要分配给这些模式的阈值。

这种工具的一个例子是自动解析

该工具的安装过程很简单:

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

代替 '/主页/jserver' 与您的 zabbix 插件目录。此外,请确保以普通用户身份运行上述安装命令 - 而不是 root 用户,除非您正在测试。

安装后,您可以使用如下简单命令开始监控日志:

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

您需要更改的最重要的参数是:

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

  2. error - 这是您在日志文件中查找的字符串。要监控日志中的多个模式,只需按以下方式指定它们:“error_P_fail_P_segfault_P_crash_P_panic”。下划线 P 表示“|”。当将该工具与外部应用程序(例如 Zabbix)一起使用时,指定管道符号是一种更安全的方法。

  3. error_watch - 这是您为该特定日志检查指定的名称/标签。稍后,如果您愿意,可以使用此标签帮助您生成受监控日志的图表。

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

在同一个帮助页面上,您还可以找到有关如何使此工具与 Zabbix 协同工作的分步说明...即您需要更新哪个 zabbix 配置文件...以及您需要在 zabbix Web 界面上进行哪些设置。

相关内容