如何在 Zabbix 中使用基于日志条目计数的计算字段创建图表?

Posted

技术标签:

【中文标题】如何在 Zabbix 中使用基于日志条目计数的计算字段创建图表?【英文标题】:How do I create a graph in Zabbix with a calucated field based on the count of log entries? 【发布时间】:2011-11-13 04:19:10 【问题描述】:

我有一个项目设置来监控致命错误,我想添加另一个项目,以便计算致命错误的计数并绘制图表。

使用此键: 日志["/d2/httpd/logs/myDomain-error_log","php 致命","UTF-8",100]

它正确地获取了我想要的数据,但是它不会绘制这个,我想我必须计算条目并将格式作为整数,但这不起作用:

count(log["/d2/httpd/logs/myDomain-error_log","PHP Fatal","UTF-8",100], 60)

任何关于我的密钥应该是什么的想法,或者我将如何绘制这些数据以查看随着时间的推移有多少错误?

动作和触发器工作正常,做应该做的事,但无法从中创建图表。

【问题讨论】:

您的问题有没有得到任何解决方案。我也在努力从我的日志文件监控数据创建图表。一切正常,显示历史数据,触发触发器和操作。但是当我在图表中添加相同的项目时,不会显示任何数据。甚至有人告诉我,你可以创建一个新的 orabbix 模板来使用 zabbix 监控你的日志文件。但我没有任何线索。你能分享你的解决方案吗?非常感谢。 我现在对模板已经很清楚了......没有什么可以做的......请帮助我从日志文件监控数据创建图表 【参考方案1】:

什么对我有用:

创建用于解析日志中某些字符串的项目。

密钥log["C:/Logs/log.log",ERROR]。 输入Zabbix agent (active) 信息类型Log

此项应显示日志中带有指定字符串“ERROR”的所有行。

其次,创建带有转义引号的计算项:

密钥my.special.app.error.count 输入Calculated 公式count("log[\"C:/Logs/log.log\",ERROR]", 60)

这将计算 60 秒内日志中“错误”重复的次数。

现在这个项目可以绘制、触发等。

我不太确定为什么需要解析项,但没有它,这个计算项将不起作用。

【讨论】:

这不起作用。我像这样更改了日志文件: log["/var/log/nginx/access.log",HTTP] 它说:不支持。只能作为主动检查访问 Accessible only as active check 有点不同的配置问题,试试here的一些建议(比如在zabbix文件中设置主机名等)【参考方案2】:

这里是通过Zabbix监控日志文件的步骤。

1) 创建一个批处理文件,例如。

//test.bat

@echo off

or /F %%x in ('findstr /r /n "ERROR" C:\test.log ^| find /C ":"') do echo %%x

2) 将“test.log”替换为您的日志文件

3) 在 Zabbix_agentd.config 文件中做如下修改

EnableRemoteCommands=1

DisableActive=0

UnsafeUserParameters=1

UserParameter=key.in.zabbix.frontend,c:/temp/test.bat

4) C:/temp/test.bat 是批处理文件的路径

5) 在 Zabbix GUI 中使用以下详细信息创建项目

Key= key.in.zabbix.frontend // This is any name but the name in GUI and abbix_agentd.config file must be same.

Type=Zabbix_Agent or Zabbix_Agent(Active)

Type of Information= Numeric(Unsigned)

其余的都一样。

6) 重启 Zabbix 代理。并检查监控->最新值。

7)为了测试,我们也可以通过命令检查服务器上的输出

Go to root->zabbix 1.8.6->src->zabbix_get

【讨论】:

我注意到您使用了 Windows 的 C 盘中的日志文件。 Linux 日志呢?相同的脚本可以吗? @echo off or /F %%x in ('findstr /r /n "ERROR" var/log/nginx/access.log ^| find /var/log/nginx ":"') do echo %%x跨度> 【参考方案3】:

这将计算自上次签入文件后新日志记录中正则表达式 @NginxNotOK 的匹配,该文件的名称在宏 $NGINX_ACCESS_LOG_FILE 中定义:

log.count[$NGINX_ACCESS_LOG_FILE,@NginxNotOK,,,skip]

【讨论】:

以上是关于如何在 Zabbix 中使用基于日志条目计数的计算字段创建图表?的主要内容,如果未能解决你的问题,请参考以下文章

Chrome时间轴 - 如何确定“重新计算样式”日志条目的原因?

计算基于时间的指标(每小时)

zabbix 主动模式监控日志(多关键字)

如何将视图条目计数传输到类方法

禁止单个 sudo 命令的日志条目

从日志文件中搜索和分组