1. zabbix自定义监控项:

在上一节课中,我们通过添加模板,zabbix自动为我们创建了很多监控项,但是往往模板中的监控项并不能满足我们业务需要,我们时常需要自己根据业务需要创建一系列的监控项,也成为自定义监控项。

监控项:zabbix进行监控的一个指标,zabbix中称为item,它的值由独立的key进行识别 。

1.1 监控redis服务:

先在122客户端部署好redis,并且启动redis服务:

yum install redis -y
systemctl start redis
  • 方式一:利用zabbix自带的功能创建监控项:

98931-twxtifsmwhc.png

95948-a81h4gidp3k.png

14787-rvb4dr592od.png

43159-ga4w8g26p05.png

监控项配置好后,可以点击最新数据看下:

28152-l60hqv5jhvo.png

81412-uguu2k9unc.png

  • 方式二:自定义脚本创建监控项:
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界面添加监控项:

55996-54ptcwdgh9l.png

配置好监控项后,同样可以点击监控台的最新数据查看数据是否有过来。

以上是对远程服务器的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界面添加监控项:

30566-540b1tollyw.png

1.2.5 创建图像:

65053-kq69xsi2vl.png

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端配置监控项与前面一样,就不在演示,下一篇我们将继续演示触发器的使用。

标签: zabbix, zabbix监控, zabbix配置, linux

添加新评论