一.监控端口
关系说明
触发器: 根据客户端的脚本获取值,当客户端的某项值达到要求后,将发出告警
监控项:根据客户端的脚本获取值,可设定采集值得间隔时间,将值保留记录下来,可形成曲线图
应用集:用来分类存放监控项,比如将监控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
即可
网页操作:
键值是找不到的,手动写上,触发器的表达式也是连接这个监控项。
三.模板的导入和导出
导入:
导出:
选择模板拉倒最下面
到此这篇关于zabbix自定义监控项和触发器的文章就介绍到这了,更多相关zabbix自定义监控项内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!