目录
在做自定义监控项的时候,一个一个取值比较麻烦,取出一个数值,就要把该数值相关信息以一定格式写入/etc/zabbix/zabbix_agentd.d/下的配置文件里,当遇到需要取很多数值的时候,这样的操作会很繁琐,当有一种简单方法可以取很多数值的时候,这样叠加这些感觉效率又很低,所以我们可以采取脚本取数值的方式去取我们要监控的数值。
1.用脚本自定义监控项
我们先以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)关联至被监控主机
2.监控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
3.自定义监控项以及监控 MySQL 状态信息的优点
(1)灵活性和可扩展性
自定义监控项:通过脚本自定义监控项,用户可以根据具体的业务需求和环境,灵活地定义监控内容。这意味着可以监控特定的数据库性能指标、应用程序状态或其他任何系统级别的参数。
扩展性:可以根据需求随时扩展监控项,添加新的指标而不受限于 Zabbix 默认监控项。
(2)实时监控
即时反馈:通过脚本监控 MySQL 状态信息,可以实时获取数据库的性能指标,如连接数、查询执行情况、慢查询等。这有助于及时发现潜在问题并进行处理。
告警机制:Zabbix 提供强大的告警功能,可以在监控项达到预设阈值时自动发送通知,帮助运维人员快速响应。
(3)全面的监控能力
多维度监控:可以监控 MySQL 的多个方面,如性能、可用性、错误日志等,确保数据库的健康状态。
结合其他监控内容:可以将 MySQL 监控与其他系统(如应用服务器、网络设备等)的监控结合,实现全面的系统监控。
(4)自动化和简化运维
减少人工干预:通过自动化监控脚本,可以减少人工监控的工作量,降低运维成本。
数据可视化:Zabbix 提供丰富的图表和仪表板功能,可以将 MySQL 的监控数据可视化,方便运维人员进行分析和决策。
(5)历史数据分析
趋势分析:Zabbix 能够存储监控数据,用户可以对历史数据进行分析,识别性能瓶颈、使用趋势等,为后续优化提供依据。
容量规划:通过分析历史监控数据,可以更好地进行容量规划,确保系统资源的合理使用。
(6)高效的资源利用
低开销:通过定制监控脚本,可以优化监控的频率及方式,减少对系统资源的消耗,确保监控过程不会影响数据库的性能。