第十四篇 zabbix创建自定义Item

2020-08-21 10:28:21 浏览数 (1)

为了满足用户的其它监控需求,zabbix允许用户创建自定义监控任务,假设现在有这么一个监控任务,要求监控数据库中某一张表当天更新的数据条数。你会发现zabbix中并不存在这样的Item,为了满足用户的其它需求,zabbix允许用户创建自定义的监控项。

利用zabbix创建自定义监控项需要执行以下操作: 1.在配置文件zabbix_agentd.conf中设置允许添加自定义监控项 2.在zabbix_server.conf中设置监控脚本文件存放路径 3.在指定的路径下创建监控脚本 4.在userparameter_script.conf文件中添加Item key 5.在web端创建监控项

第一步:找到你的zabbix_agentd.conf,设置允许添加自定义脚本将#Include=/usr/local/etc/zabbix_agentd.conf.d/前的#号去掉即可

第二步:设置创建监控脚本的存放路径,打开zabbix_server.conf配置文件,找到AlertScriptsPath,设置路径为

代码语言:javascript复制
AlertScriptsPath=/usr/local/share/zabbix/alertscripts

第三步:创建监控脚本,会到刚开始的问题,我们要监控的是数据库中一张表的数据更新条数。为了模拟这个环境,我在sqlserver下建了一个pythontest数据库,并在其中建了一张表secumain,建表语句如下:

代码语言:javascript复制
CREATE TABLE secumain(
    [id] [int] NULL,
    [content] [varchar](32) NULL,
    [updatetime] [datetime] NULL
) 

我的监控脚本是用python写的,代码如下:

代码语言:javascript复制
#!/usr/bin/python
#coding=utf-8
import pymssql

server = "198.192.1.1"
user = "sa"
password = "6527293"

conn = pymssql.connect(server, user, password, "pythontest")
cursor = conn.cursor()
cursor.execute("select COUNT(*) from secumain where updatetime>(select cast(convert(varchar(10),getdate()-1,120) ' 00:00:00' as datetime)) and updatetime<getdate()")

result=cursor.fetchall()[0][0]
result=float(result)
print (result)
cursor.close()
conn.close()

注意:为了确保脚本无误,你最好执行一下写好的脚本

第四步:在userparameter_script.conf文件中添加Item key,Item key的格式为

代码语言:javascript复制
UserParameter=<key>,<command>

前面是key值,也就是在web端添加监控脚本时的key值,command就是该key值对应的执行脚本,也就是脚本执行路径。配置如下:

代码语言:javascript复制
UserParameter=script.getUpdateCountFromSecumain,/usr/local/share/zabbix/alertscripts/getUpdateCountFromSecumain.py

每添加一个新的执行脚本,只需要按照上面的方式,在userparameter_script.conf文件中添加即可。添加完成之后切记需要重启zabbix_server和zabbix_agentd服务,可以通过zabbix_get检测监控脚本是否添加成功,检测指令如下:

代码语言:javascript复制
zabbix_get -s 127.0.0.1 -k script.getUpdateCountFromSecumain
(检测格式zabbix_get -s host -k key)

由于我没有在该表中添加任何数据,的到的结果是0

第五步:在web端创建监控项,和之前创建监控项的方式一样,这是这里需要手动输入key值

代码语言:javascript复制
script.getUpdateCountFromSecumain

我现在在表中添加五条数据

点击检测中-》最新数据找到get count from secumain这个监控项,点击右侧的图形,可以看到检测到的数据是5条

看到这样的结果说明成功创建了自定义监控项

0 人点赞