我们在做自定义监控项的时候,一个一个取比较麻烦,取出一个数值,就要把该数值相关信息以一定格式写入/etc/zabbix/zabbix_agentd.d/下的配置文件里,当遇到需要取很多数值的时候,这样的操作会很繁琐,当有一种简单方法可以取很多数值的时候,这样叠加这些感觉效率又很低,所以我们可以采取脚本取数值的方式去取我们要监控的数值。
用脚本自定义监控项
我们先以Nginx为例,当Nginx取的值比较多时,可以用脚本方式使我们的条例清晰
1、书写脚本进行取值
1. [root@Web01 ~]# cat /etc/zabbix/zabbix_agentd.d/nginx.sh 2. #!/bin/sh 3. case $1 in 4. active) 5. curl -s 127.0.0.1:88/nginx_status|awk 'NR==1{print $NF}' 6. ;; 7. accepts) 8. curl -s 127.0.0.1:88/nginx_status|awk 'NR==3{print $1}' 9. ;; 10. handled) 11. curl -s 127.0.0.1:88/nginx_status|awk 'NR==3{print $2}' 12. ;; 13. requests) 14. curl -s 127.0.0.1:88/nginx_status|awk 'NR==3{print $3}' 15. ;; 16. *) 17. echo "Usage: $0 [active|accepts|handled|requests]" 18. esac 19. [root@Web01 ~]# chmod +x /etc/zabbix/zabbix_agentd.d/nginx.sh #增加执行权限
2、修改zabbix客户端配置文件
1. [root@Web01 ~]# cat /etc/zabbix/zabbix_agentd.d/nginx.conf 2. UserParameter=nginx.[*],sh /etc/zabbix/zabbix_agentd.d/nginx.sh $1 3. 4. #用[*]实现可以自定义内容的效果,zabbix自带的监控端口就是这个原理,可以自己填端口 5. #经测试里面的脚本必须使用sh运行,用绝对路径+给可执行权限不行,不知道zabbix之前版本行不行,反正5.0版本不行
3、zabbix创建模板及监控项
4、关联至被监控主机
成功监控!
监控MySQL状态信息
我们此次监控MySQL尝试使用脚本自定义监控项,监控MySQL状态信息
通过命令查看MySQL状态信息是show global status,通过awk取值进行监控
1. [root@DB01 ~]# mysql -uroot -e 'show global status' 2. +------------------------------------------+-------------+ 3. | Variable_name | Value | 4. +------------------------------------------+-------------+ 5. | Aborted_clients | 0 | 6. | Aborted_connects | 18926 | 7. | Access_denied_errors | 0 | 8. | Aria_pagecache_blocks_not_flushed | 0 | 9. | Aria_pagecache_blocks_unused | 15737 | 10. | Aria_pagecache_blocks_used | 0 | 11. | Aria_pagecache_read_requests | 0 | 12. ...... 13. Threads_connected # 连接数 14. Com_select # 查询总量 15. Com_insert # 插入总量 16. Com_update # 更新总量 17. Com_delete # 删除总量 18. Bytes_received # 流入总流量 19. Bytes_sent # 流出总流量 20. Slow_queries # 慢查询总量
1、使用脚本定义监控项
1. [root@DB01 ~]# cat /etc/zabbix/zabbix_agentd.d/mysql.sh 2. mysql -uroot -e 'show global status;'|grep -w $1|awk '{print $NF}' 3. [root@DB01 ~]# cat /etc/zabbix/zabbix_agentd.d/mysql.conf 4. UserParameter=mysql.[*],sh /etc/zabbix/zabbix_agentd.d/mysql.sh $1 5. 6. #服务端测试 7. [root@Zabbix ~]# zabbix_get -s 172.16.1.51 -k mysql.[Threads_connected] 8. 1
2、服务端创建MySQL监控模板
其他自定义的值可以根据需求自行添加,此处省略......
再添加个zabbix自带的端口监控
最终完成添加