zabbix自定义监控项
日行一善 人气:0一.监控端口
关系说明
触发器: 根据客户端的脚本获取值,当客户端的某项值达到要求后,将发出告警
监控项:根据客户端的脚本获取值,可设定采集值得间隔时间,将值保留记录下来,可形成曲线图
应用集:用来分类存放监控项,比如将监控80,8080等web服务的监控项放在WEB应用集中,将监控22,21等小服务的监控项放入SMALL应用集中。
模板:模板是一套定义好的监控项的合集,任何主机连接模板,则将模板中的监控项等等在主机上应用,但要修改这些监控项只能去模板中修改,并且修改后其他连接的主机也会跟着变动。
操作
1.创建模板,模板名称用来表示,这里监控端口,取名为Port,模板必须加入某群组,可单独创建群组来区分。
2.创建应用集,应用集只用取名字即可
3.创建监控项,名称用来区分监控的哪些值,可能是监控nginx的访问数量,也可能是mysql的读数量。
键值有2种,一种是点击选择使用系统自带值,另一种自定义脚本key。
这里选择net.tcp.listen[port],通过telnet来查找某主机是否监听某端口,[port]填写需要监控的端口号。
4.创建触发器,{HOST.NAME}将获取主机名,用作报警显示。表达式点击添加,或复制其他自带触发器的值进行修改。
连接监控项,这个就是刚刚创建的监控项,其余不动。
5.选择相应群组,从群组里找到刚建立的监控项。
6.Port是模板名,如果这里选择写主机名或主机ip,则会变成单个主机的监控项,而不是模板的。
二.监控服务
关系说明
脚本:执行脚本获得值
配置文件:允许自定义key,将key的键值和脚本获取值关联起来。
服务端测试: 服务端发送指令给客户端,客户端运行脚本获取值再返回给服务端。
操作
1.创建脚本,用于获取值
cd /etc/zabbix/script
vim web_status.sh
#!/bin/bash case $1 in Lian) netstat -anptu | grep 172.26.98.247:80 | wc -l ;; Ping) netstat -unltp | grep -w 80 &>/dev/null && echo 1 || echo 0 ;; *) echo "Lian | Ping" ;; esac
测试脚本 ./web_status.sh Ping
,看是否可以获得1
2.修改客户端配置文件,让他允许自定义key
vim /etc/zabbix/zabbix_agentd.conf
Include=/etc/zabbix/zabbix_agentd.conf.d/*.conf #加载其他配置文件 UnsafeUserParameters=1 #开启允许自定义 Key
systemctl restart zabbix-agent
3.修改配置文件,设定键值的名字和脚本所在位置,这样配置文件才能知道这个键值需要执行哪个脚本获得
web.ping是自定义的键值名字,后面是脚本路径
vim /etc/zabbix/zabbix_agentd.d/web_status.conf
UserParameter=web.ping,/etc/zabbix/script/web_status.sh Ping UserParameter=web.lian,/etc/zabbix/script/web_status.sh Lian
如果执行的是命令要用绝对路径,如下也能获取值,并不一定要用脚本。
比如
UserParameter=web.shu,/bin/netstat -anptu | wc -l
4.检测,客户端测试
zabbix_agentd -t web.ping
#返回1则正确
服务端测试:
/ops/server/zabbix/bin/zabbix_get -s 192.168.1.1 -k web.ping
#获得1则正确
5.出现(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
是因为脚本中用netstat 这个命令,但是客户端使用zabbix这个用户启动脚本,没有权限用这个命令。
客户端执行chmod +x /bin/netstat
即可
网页操作:
键值是找不到的,手动写上,触发器的表达式也是连接这个监控项。
三.模板的导入和导出
导入:
导出:
选择模板拉倒最下面
加载全部内容