基于centos7实战zabbix5自定义监控redis、nginx、mysql服务
1. zabbix自定义监控项:
在上一节课中,我们通过添加模板,zabbix自动为我们创建了很多监控项,但是往往模板中的监控项并不能满足我们业务需要,我们时常需要自己根据业务需要创建一系列的监控项,也成为自定义监控项。
监控项:zabbix进行监控的一个指标,zabbix中称为item,它的值由独立的key进行识别 。
1.1 监控redis服务:
先在122客户端部署好redis,并且启动redis服务:
yum install redis -y
systemctl start redis
- 方式一:利用zabbix自带的功能创建监控项:
监控项配置好后,可以点击最新数据看下:
- 方式二:自定义脚本创建监控项:
1.1.1 修改zabbix-agent的配置文件:
vim /etc/zabbix/zabbix_agentd.conf
# 指定监控项及获取值的方式:
UserParameter=redis.status,bash /data/sh/redis_status.sh
# redis.status: 键(监控项)
# bash /data/sh/redis_status.sh 值(获取监控项的方式)
1.1.2 客户端创建脚本:
mkdir -p /data/sh
cat > /data/sh/redis_status.sh <<EOF
#!/bin/bash
# by lutixia
######################
killall -0 redis-server &>/dev/null
if [ $? -eq 0 ];then
echo 1
else
echo 0
fi
EOF
### 在客户端安装提供killall命令的包:
yum install psmisc -y
1.1.3 测试脚本:
一定要先测试脚本有没有问题,没有问题之后才能继续。而且,测试需要在客户端及服务端都进行测试!
### 客户端测试
# 当redis进程存在时测试:
[root@localhost ~]# ps -ef |grep redis
redis 2246 1 0 11:12 ? 00:00:00 /usr/bin/redis-server 127.0.0.1:6379
root 2549 1556 0 11:34 pts/0 00:00:00 grep --color=auto redis
[root@localhost ~]# /data/sh/redis_status.sh
1
# 停止redis测试:
[root@localhost ~]# systemctl stop redis
[root@localhost ~]# /data/sh/redis_status.sh
0
### 服务端测试:
# 当redis进程存在时测试:
[root@localhost ~]# yum install zabbix-get -y
[root@localhost ~]# zabbix_get -s 192.168.75.135 -k "redis.status"
1
# 停止redis测试:
[root@localhost ~]# zabbix_get -s 192.168.75.135 -k "redis.status"
0
# 如果出现,不管redis是启动还是停止,zabbix_get拿到的值都是0,则可以在agent端执行以下命令:
chmod u+s /usr/bin/killall
1.1.4 web界面添加监控项:
配置好监控项后,同样可以点击监控台的最新数据查看数据是否有过来。
以上是对远程服务器的redis服务的监控,如果是想监控nginx,MySQL服务,则只需要把6379端口改为80或者3306端口即可。
1.2 监控nginx服务:
1.2.1 修改zabbix-agent配置文件:
vim /etc/zabbix_agentd.conf
# 指定监控项及获取值的方式:
UserParameter=nginx.status[*],bash /data/sh/nginx_status.sh $1
1.2.2 创建脚本(一):
vim /data/sh/nginx_status.sh
#!/bin/bash
# by lutixia
#######################
function active {
curl 192.168.75.135/status 2>/dev/null |awk 'NR==1{print $NF}'
}
function accepts {
curl 192.168.75.135/status 2>/dev/null | awk 'NR==3{print $1}'
}
function handled {
curl 192.168.75.135/status 2>/dev/null | awk 'NR==3{print $2}'
}
function requests {
curl 192.168.75.135/status 2>/dev/null | awk 'NR==3{print $3}'
}
function reading {
curl 192.168.75.135/status 2>/dev/null | awk 'NR==4{print $2}'
}
function writing {
curl 192.168.75.135/status 2>/dev/null | awk 'NR==4{print $4}'
}
function waiting {
curl 192.168.75.135/status 2>/dev/null | awk 'NR==4{print $NF}'
}
$1
1.2.3 测试脚本:
[root@node7 ~]# zabbix_get -s 192.168.75.135 -k nginx.status[requests]
2079
1.2.4 web界面添加监控项:
1.2.5 创建图像:
1.2.6 创建脚本(二):
#!/bin/bash
# by lutixia
#######################
values=`curl 192.168.75.135/status 2>/dev/null |awk 'NR==1{print $NF};NR==3{print $1};NR==3{print$2};NR==3{print $3};NR==4{print $2};NR==4{print $4};NR==4{print $NF}'`
case $1 in
active)
echo `echo $values | awk '{print $1}'`
;;
accepts)
echo `echo $values | awk '{print $2}'`
;;
handled)
echo `echo $values | awk '{print $3}'`
;;
requests)
echo `echo $values | awk '{print $4}'`
;;
reading)
echo `echo $values | awk '{print $5}'`
;;
writing)
echo `echo $values | awk '{print $6}'`
;;
waiting)
echo `echo $values | awk '{print $7}'`
;;
esac
在web端配置监控项与前面一样,就不在演示,下一篇我们将继续演示触发器的使用。