zabbix自定义监控实例训练
一. 使用脚本监控 nginx访问状态
- 查看nginx访问状态脚本
#!/bin/sh
nginx_status_fun(){
NGINX_PORT=$2
NGINX_COMMAND=$1
nginx_active(){
/usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'
}
nginx_reading(){
/usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Reading' | awk '{print $2}'
}
nginx_writing(){
/usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Writing' | awk '{print $4}'
}
nginx_waiting(){
/usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
}
nginx_accepts(){
/usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $1}'
}
nginx_handled(){
/usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $2}'
}
nginx_requests(){
/usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $3}'
}
case $NGINX_COMMAND in
active)
nginx_active;
;;
reading)
nginx_reading;
;;
writing)
nginx_writing;
;;
waiting)
nginx_waiting;
;;
accepts)
nginx_accepts;
;;
requests)
nginx_requests;
;;
handled)
nginx_handled;
esac
}
nginx_status_fun $1 $2
- 给文件执行权限
[root@zabbix-agent ~]# chmod +x zabbix_nginx.sh
- 测试
[root@zabbix-agent ~]# sh zabbix_nginx.sh active 80
1
[root@zabbix-agent ~]# sh zabbix_nginx.sh reading 80
0
[root@zabbix-agent ~]# sh zabbix_nginx.sh writing 80
1
[root@zabbix-agent ~]# sh zabbix_nginx.sh accepts 80
1558
[root@zabbix-agent ~]# sh zabbix_nginx.sh requests 80
1559
- 创建监控项配置文件
[root@zabbix-agent ~]# vim /etc/zabbix/zabbix_agentd.d/nginx_status.conf
[root@zabbix-agent ~]# cat /etc/zabbix/zabbix_agentd.d/nginx_status.conf
UserParameter=nginx_status[*],/etc/zabbix/zabbix_agentd.d/.sh "$1" "$2"
- 重启zabbix-agent
[root@zabbix-agent ~]# systemctl restart zabbix-agent.service
- 在zabbix_server上测试
[root@zabbix-server /]# zabbix_get -s 192.168.126.130 -k nginx_status[active,80]
1
[root@zabbix-server /]# zabbix_get -s 192.168.126.130 -k nginx_status[accepts,80]
104
- web界面创建模板,添加监控项
- 创建模板
- 添加监控项
进入后点击创建监控项
填好之后点击添加
- 按照上一步方法将剩余6项添加到同一个模板下,可以克隆后修改数据
点击创建好的监控项----》点击最下方的克隆
- 全部添加
- 将监控项绘制成图像
点击配置 —》找到模板nginx_status---->找到图像-----》点击创建图像
- 将模板连接到nginx的机器
- 查看检测到的数据
-
检查数据
-
检查图像
因此不建议将多个数据值差异大的数据放在一起。
- 导出模板,方便下次使用,避免都是,方便传递。
二. 使用模板监控 MySQL
使用percona插件监控mysql
percona 官网: www.percona.com
percona插件组成:
- php脚本:用来采集数据
- shell脚本:用来调用采集信息
- zabbix配置文件
- zabbix模板文件
- 安装percona插件
[root@zabbix-agent ~]# wget https://www.percona.com/downloads/percona-monitoring-plugins/percona-monitoring-plugins-1.1.7/binary/redhat/7/x86_64/percona-zabbix-templates-1.1.7-2.noarch.rpm #下载rpm包
[root@zabbix-agent ~]# yum install percona-zabbix-templates-1.1.7-2.noarch.rpm -y
[root@zabbix-agent ~]# yum install percona-zabbix-templates php php-mysql -y #安装依赖工具
percona 插件是通过 php 去获取 mysql 的参数,所以我们要安装 php 和 php-mysql
- 查看安装包位置
[root@zabbix-agent ~]# rpm -ql percona-zabbix-templates
/var/lib/zabbix/percona
/var/lib/zabbix/percona/scripts
/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh #shell脚本
/var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php #php文件,获取mysql信息
/var/lib/zabbix/percona/templates
/var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf #zabbix监控项配置文件
/var/lib/zabbix/percona/templates/zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.7.xml #zabbix模板文件
- 将模板文件导入zabbix
- 将模板文件下载到本地后上传到zabbix。
- 导入
- 这个时候是会出现错误的
解决方法有两个
将模板导入到2.4环境中,然后再导出到3的环境中,不会报错。
百度上下载一个模板。(我是下载的)
- 使用下载好的模板成功导入
- 将脚本文件和php文件中数据库用户名和密码修改
[root@zabbix-agent ]# cd /var/lib/zabbix/percona/scripts
[root@zabbix-agent scripts]# ls
get_mysql_stats_wrapper.sh ss_get_mysql_stats.php
- 修改脚本件
[root@zabbix-agent scripts]# vim get_mysql_stats_wrapper.sh
#找到第19行,加上 -uroot -p123456
19 RES=`HOME=~zabbix mysql -uroot -p123456 -e 'SHOW SLAVE STATUS\G' | egrep '(Slave_IO_Running|Slave_SQL_Running):' | awk -F: '{print $2}' | tr '\n' ','`
- 修改php文件
[root@zabbix-agent scripts]# vim ss_get_mysql_stats.php
#找到以下几项
30 $mysql_user = 'root';
31 $mysql_pass = '116902';
- 将监控项配置文件放在指定位置:/etc/zabbix/zabbix_agentd.d/。并测试
[root@zabbix-agent ~]# cp /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/ #userparameter_percona_mysql.conf 就是一个自定义监控项,其中有许多监控项
- 在zabbix-server测试监控项:MySQL.Sort-scan就是userparameter_percona_mysql.conf 中一个监控项。
[root@zabbix-server ~]# zabbix_get -s 192.168.126.130 -k MySQL.Sort-scan
0
测试成功,取到了数据。
- 页面配置监控
- 将上传的模板连接到需要监控的主机上
- 检查是否收集到数据
此时已经陆续收集到了数据
也可以看到图形
mysql监控配置完成