我们在做自定义监控项的时候,一个一个取比较麻烦,取出一个数值,就要把该数值相关信息以一定格式写入/etc/zabbix/zabbix_agentd.d/下的配置文件里,当遇到需要取很多数值的时候,这样的操作会很繁琐,当有一种简单方法可以取很多数值的时候,这样叠加这些感觉效率又很低,所以我们可以采取脚本取数值的方式去取我们要监控的数值。
目录
用脚本自定义监控项
1、书写脚本进行取值
2、修改zabbix客户端配置文件
3、zabbix创建模板及监控项
4、关联至被监控主机
监控MySQL状态信息
1、使用脚本定义监控项
2、服务端创建MySQL监控模板
3、添加触发器
4、配置图形
5、关联至被监控的主机
6、测试并查看数据
用脚本自定义监控项
我们先以Nginx为例,当Nginx取的值比较多时,可以用脚本方式使我们的条例清晰
1、书写脚本进行取值
[root@Web01 ~]# cat /etc/zabbix/zabbix_agentd.d/nginx.sh
#!/bin/sh
case $1 in
active)
curl -s 127.0.0.1:88/nginx_status|awk 'NR==1{print $NF}'
;;
accepts)
curl -s 127.0.0.1:88/nginx_status|awk 'NR==3{print $1}'
;;
handled)
curl -s 127.0.0.1:88/nginx_status|awk 'NR==3{print $2}'
;;
requests)
curl -s 127.0.0.1:88/nginx_status|awk 'NR==3{print $3}'
;;
*)
echo "Usage: $0 [active|accepts|handled|requests]"
esac
[root@Web01 ~]# chmod +x /etc/zabbix/zabbix_agentd.d/nginx.sh #增加执行权限
2、修改zabbix客户端配置文件
[root@Web01 ~]# cat /etc/zabbix/zabbix_agentd.d/nginx.conf
UserParameter=nginx.[*],sh /etc/zabbix/zabbix_agentd.d/nginx.sh $1
#用[*]实现可以自定义内容的效果,zabbix自带的监控端口就是这个原理,可以自己填端口
#经测试里面的脚本必须使用sh运行,用绝对路径+给可执行权限不行,不知道zabbix之前版本行不行,反正5.0版本不行
3、zabbix创建模板及监控项
4、关联至被监控主机
成功监控!
监控MySQL状态信息
我们此次监控MySQL尝试使用脚本自定义监控项,监控MySQL状态信息
通过命令查看MySQL状态信息是show global status,通过awk取值进行监控
[root@DB01 ~]# mysql -uroot -e 'show global status'
+------------------------------------------+-------------+
| Variable_name | Value |
+------------------------------------------+-------------+
| Aborted_clients | 0 |
| Aborted_connects | 18926 |
| Access_denied_errors | 0 |
| Aria_pagecache_blocks_not_flushed | 0 |
| Aria_pagecache_blocks_unused | 15737 |
| Aria_pagecache_blocks_used | 0 |
| Aria_pagecache_read_requests | 0 |
......
Threads_connected # 连接数
Com_select # 查询总量
Com_insert # 插入总量
Com_update # 更新总量
Com_delete # 删除总量
Bytes_received # 流入总流量
Bytes_sent # 流出总流量
Slow_queries # 慢查询总量
1、使用脚本定义监控项
[root@DB01 ~]# cat /etc/zabbix/zabbix_agentd.d/mysql.sh
mysql -uroot -e 'show global status;'|grep -w $1|awk '{print $NF}'
[root@DB01 ~]# cat /etc/zabbix/zabbix_agentd.d/mysql.conf
UserParameter=mysql.[*],sh /etc/zabbix/zabbix_agentd.d/mysql.sh $1
#服务端测试
[root@Zabbix ~]# zabbix_get -s 172.16.1.51 -k mysql.[Threads_connected]
1
2、服务端创建MySQL监控模板
其他自定义的值可以根据需求自行添加,此处省略......
再添加个zabbix自带的端口监控
最终完成添加
3、添加触发器
4、配置图形
5、关联至被监控的主机
6、测试并查看数据
如果添加了上面我列举的那些监控项,可以通过运行下面的脚本生成出一些数据
[root@web02 ~]# cat mysql.sh
for i in `seq 100`
do
mysql -uroot -e "create database IF NOT EXISTS db;
use db;
DROP TABLE IF EXISTS test${i};
create table test${i}(id int);
insert into db.test${i} values (123456);
select * from db.test${i};
delete from test${i} where id=123456;"
done
我是koten,10年运维经验,持续分享运维干货,感谢大家的阅读和关注!