架构师的成长之路初片~zabbix-自定义监控

四:自定义监控案例
沿用前面的练习,使用自定义key监控常用监控项目,实现以下目标:
  1. 监控Nginx状态
  2. 监控网络连接状态
步骤一:监控Nginx服务状态
1)准备环境,部署nginx软件
安装nginx软件,开启status模块
先把web1主机的之前的httpd服务停掉,以免一会儿在启动nginx服务时有影响。
[root@web1 ~]# systemctl stop httpd
[root@web1 ~]# systemctl disable httpd

  

[root@web1 ~]# tar -xf nginx-1.12.2.tar.gz
[root@web1 ~]# cd nginx-1.12.2
[root@web1 nginx-1.12.2]# yum -y install gcc pcre-devel openssl-devel
[root@web1 nginx-1.12.2]# ./configure \
> --with-http_stub_status_module 
[root@web1 nginx-1.12.2]# make && make install
[root@web1 ~]# vim /usr/local/nginx/conf/nginx.conf  #参考前面的课程内容
location /status {
                stub_status on;
        }
[root@web1 ~]# /usr/local/nginx/sbin/nginx      #启动服务
[root@web1 ~]# curl  http://192.168.2.100/status
Active connections: 1 
server accepts handled requests
10 10 3 
Reading: 0 Writing: 1 Waiting: 0

  

2)自定义监控key
编写自定义监控脚本(仅供参考,未检测完整状态)
#!/bin/bash
case $1 in
active)
curl -s  http://192.168.2.100/status |awk '/Active/{print $NF}' ;;
accepts)
curl -s  http://192.168.2.100/status |awk 'NR==3{print $1}' ;;
waiting)
curl -s  http://192.168.2.100/status |awk '/Waiting/{print $6}' ;;
esac

  

测试:如果参数正确会输出正确的内容。

[root@web1 ~]# /usr/local/bin/nginx_status.sh waiting
0
[root@web1 ~]# /usr/local/bin/nginx_status.sh active
1
[root@web1 ~]# /usr/local/bin/nginx_status.sh
[root@web1 ~]# /usr/local/bin/nginx_status.sh  haha

 

解释:
UserParameter=nginx.status,/usr/local/bin/nginx_status.sh
2.5远程连接2.100,说我要你的监控数据(nginx.status)
2.100触发 执行后面的命令或脚本 /usr/local/bin/nginx_status.sh。

UserParameter=nginx.status[*],/usr/local/bin/nginx_status.sh $1
2.5远程连接2.100,说我要你的监控数据(nginx.status[active])
2.100触发 执行后面的命令或脚本。/usr/local/bin/nginx_status.sh active

UserParameter=nginx.status[*],/usr/local/bin/nginx_status.sh $1
2.5远程连接2.100,说我要你的监控数据(nginx.status[waiting])
2.100触发 执行后面的命令或脚本。/usr/local/bin/nginx_status.sh waiting

UserParameter=nginx.status[*],/usr/local/bin/nginx_status.sh $1
2.5远程连接2.100,说我要你的监控数据(nginx.status[xxx])
2.100触发 执行后面的命令或脚本。/usr/local/bin/nginx_status.sh xxx

  

创建自定义key
语法格式:
UserParameter=key,command
UserParameter=key[*], $1
key里的所有参数,都会传递给后面命令的位置变量
注意:被监控端修改配置文件,注意要允许自定义key并设置Include!
root@web1 ~]# vim /usr/local/etc/zabbix_agentd.conf.d/nginx.status
UserParameter=nginx.status[*],/usr/local/bin/nginx_status.sh $1
[root@web1 ~]# systemctl restart Zabbix_agentd            #重启服务

  

测试
[root@web1 zabbix_agentd.conf.d]# zabbix_get -s 127.0.0.1 -k 'nginx.status[waiting]'
0
[root@web1 zabbix_agentd.conf.d]# zabbix_get -s 127.0.0.1 -k 'nginx.status[active]'
1

  

3)登陆Zabbix监控Web,创建监控项目item,点击Configuration(配置)-->Hosts(主机),点击主机后面的items(监控项),点击Create item(创建监控项。
0
0
 
0
 
0
 
0
 
查看监控数据
0
0
步骤二:监控网络连接状态
1)了解TCP协议
熟悉TCP三次握手,参考图-38。
0
四次断开
0
 
2)查看网络连接状态
模拟多人并发连接(如果没有ab命令,则安装httpd-tools软件包
[root@web1 ~]# ab -c 1000 -n 100000 http://192.168.2.100/
查看网络连接状态,仔细观察、分析第二列的数据

  

3)创建自定义key
编写自定义监控脚本(仅供参考,未检测完整状态)
[root@web1 ~]# vim /usr/local/bin/net_status.sh
#!/bin/bash
case $1 in
estab)
ss -antp | awk '/^ESTAB/{x++}END{print x}'   ;;
close_wait)
ss -antp | awk 'BEGIN{x=0}/^CLOSE-WAIT/{x++}END{print x}' ;;
time_wait)
ss -antp | awk '/^TIME-WAIT/{x++}END{print x}' ;;
esac

  

测试:
(因主机连接在不断的变化,所以状态的连接数会发生变化。
每台主机的连接数也各不相同。)
[root@web1 ~]# /usr/local/bin/net_status.sh estab
56
[root@web1 ~]# /usr/local/bin/net_status.sh close_wait
0
[root@web1 ~]# /usr/local/bin/net_status.sh time_wait
44

 

创建自定义key
[root@web1 ~]# cat  /usr/local/etc/zabbix_agentd.conf.d/net.status 
UserParameter=net.status[*],/usr/local/bin/net_status.sh $1
[root@web1 ~]#  systemctl  restart  zabbix_agentd

测试

[root@web1 zabbix_agentd.conf.d]# zabbix_get -s 127.0.0.1 -k net.status[estab]
61
[root@web1 zabbix_agentd.conf.d]# zabbix_get -s 127.0.0.1 -k net.status[time_wait]
45
[root@web1 zabbix_agentd.conf.d]# zabbix_get -s 127.0.0.1 -k net.status[close_wait]
0
3)登陆Zabbix监控Web,创建监控项目item,点击Configuration(配置)-->Hosts(主机),点击主机后面的items(监控项),点击Create item(创建监控项。
0

 

 

0
0
 
0
0
 
0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2021-03-28 12:41  樱花泪  阅读(76)  评论(0编辑  收藏  举报