Zabbix观看MySQL表

时间:2014-04-28 15:07:36

标签: mysql zabbix

我有一个应用程序将事件记录到MySQL中的表中,每个条目(行)都有一个时间戳,状态和一些其他任意位元数据。

以非常简化的形式,日志表可能看起来像 log_id | datetime | result_code |消息

我想要求Zabbix离开并直接向数据库查询统计数据可能有点雄心勃勃,但我想知道它是如何构建的。

我可以有一个单独的进程查询表并写出一个日志文件,但感觉有点笨拙。我可以从zabbix_agent.conf运行一个脚本,但我不确定如何将该数据转换为Zabbix解释的度量标准。

3 个答案:

答案 0 :(得分:3)

我理解这个问题的方法是能够以与Zabbix'大致相同的方式监视具有日志记录的数据库。 built-in log monitoring

如果是这样,这个问题分为两部分:(1)如何仅为数据库轮询新记录,以及(2)如何以可以理解的方式将数据发送到Zabbix。我将(1)留给你,但会提出一种方法来处理(2)。

在Zabbix代理处理Windows事件日志的方式之后,我们可以将解决方案建模为(2)。如果我们要求Windows上的Zabbix代理监视,例如" eventlog [Application]",我们会注意到它向Zabbix服务器发送如下的JSON:

{
    "data": [
        {
            "clock": 1398753145,
            "ns": 928525552,
            "eventid": 9003,
            "host": "Windows 2008",
            "key": "eventlog[Application]",
            "lastlogsize": 51,
            "severity": 1,
            "source": "Desktop Window Manager",
            "timestamp": 1375273705,
            "value": "The Desktop Window Manager was unable to ..."
        }
    ],
    "request": "agent data"
}

现在,我们可以使用相同的协议发送我们想要的数据。例如,根据日志表的简化形式,我们可以将" log_id"进入" lastlogsize"," datetime"进入" timestamp"," result_code"进入" eventid"和"消息"进入"价值"。然后,我们可以使用Zabbix源代码中提供的便捷misc / debug / sender.pl脚本将此数据发送到Zabbix服务器:

$ cat mysql.json
{
    "data": [
        {
            "clock": 1398753145,
            "ns": 928525552,
            "eventid": 12345,
            "host": "MySQL Server",
            "key": "eventlog[mysql.log]",
            "lastlogsize": 1,
            "severity": 1,
            "source": "My Application",
            "timestamp": 1375273705,
            "value": "My Application was unable to ..."
        }
    ],
    "request": "agent data"
}

$ ./sender.pl -h 127.0.0.1 -p 10051 -i mysql.json
ZBXD^{
        "response":"success",
        "info":"processed: 1; failed: 0; total: 1; seconds spent: 0.000130"}

但有两点需要注意。一个是为了享受Zabbix前端的Windows事件日志工具(比如在#34中显示Windows事件日志列;监控"""最新数据"),密钥应以&#开头34;事件日志[&#34 ;.其次是" lastlogsize"应该随着你发送的每条记录而增加,但如果你正在使用" log_id" for" lastlogsize"那会很自然。

除此之外,您现在应该能够享受特定于Windows事件日志的trigger functions,例如logeventid(),logseverity()和logsource()以及macros {ITEM.LOG.EVENTID}, {ITEM.LOG.SEVERITY}和{ITEM.LOG.SOURCE}。

项目的配置示例可能如下:

enter image description here

答案 1 :(得分:1)

答案 2 :(得分:0)

对于asaveljevs答案中提到的part1,我会在这里查看MySQL Trigger来提供帮助。 因此触发器可以推送一个脚本,将信息推送到Zabbix。