Zabbix 监控Nginx_Status模块

2020-06-23  本文已影响0人  DB哥

Zabbix 监控Nginx服务需要通过Nginx Status模块进行监控。

一、 打开Nginx配置文件 /etc/nginx/conf.d/default.conf在Server标签内添加以下内容:

[root@centos7 ~]# vim /etc/nginx/conf.d/default.conf
location /nginx_status {
      stub_status on;
      allow 127.0.0.1; 
      deny all;
}

###重启Nginx服务
[root@centos7 ~]# systemctl restart nginx

###获取Nginx_status状态
[root@centos7 scripts]# curl http://127.0.0.1:80/nginx_status
Active connections: 1 
server accepts handled requests
 10 10 10 
Reading: 0 Writing: 1 Waiting: 0

状态信息解释:
Active connections :表示 Nginx 正在处理的活动连接数有多少个
server :表示 Nginx 启动到现在共处理了多少个连接
accepts :表示 Nginx 启动到现在共成功创建了多少次握手
handled requests : 表示总共处理了多少次请求
Reading :表示 Nginx 读取到客户端的 Header 信息数
Writing :表示 Nginx 返回给客户端的 Header 信息数
Waiting :表示 Nginx 已经处理完正在等候下一次请求指令的驻留连接数
在开启 keep-alive 的情况下,Waiting = Active connections - (Reading + Writing)

二、编写监控Nginx_statsu模块脚本

[root@centos7 scripts]# vim /etc/zabbix/scripts/nginx_status.sh
[root@centos7 scripts]# cat /etc/zabbix/scripts/nginx_status.sh 
#!/bin/sh 
#script to fetch nginx status for tribily monitoring systems

HOST=127.0.0.1
PORT="80"

# Functions to return nginx status
function active {
  /usr/bin/curl "http://$HOST:$PORT/nginx_status" 2>/dev/null| grep 'Active' | awk '{print $NF}'
}
function reading {
  /usr/bin/curl "http://$HOST:$PORT/nginx_status" 2>/dev/null| grep 'Reading' | awk '{print $2}'
}
function writing {
  /usr/bin/curl "http://$HOST:$PORT/nginx_status" 2>/dev/null| grep 'Writing' | awk '{print $4}'
}
function waiting {
  /usr/bin/curl "http://$HOST:$PORT/nginx_status" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
}
function accepts {
  /usr/bin/curl "http://$HOST:$PORT/nginx_status" 2>/dev/null| awk NR==3 | awk '{print $1}'
}
function handled {
  /usr/bin/curl "http://$HOST:$PORT/nginx_status" 2>/dev/null| awk NR==3 | awk '{print $2}'
}
function requests {
  /usr/bin/curl "http://$HOST:$PORT/nginx_status" 2>/dev/null| awk NR==3 | awk '{print $3}'
}
# Run the requested function
$1

###脚本添加执行权限
[root@centos7 scripts]# chmod +x nginx_status.sh

###测试脚本
[root@centos7 scripts]# /bin/sh /etc/zabbix/scripts/nginx_status.sh active 
1

三、配置zabbix客户端配置文件/etc/zabbix/zabbix_agentd.conf自定义脚本健值

[root@centos7 zabbix]# vim /etc/zabbix/zabbix_agentd.conf
EnableRemoteCommands=1    ###允许zabbix_get命令远程执行健值测试,1允许,0禁止
Server=10.10.10.10           ###填写zabbix服务器IP或DNS(默认被动模式)
ServerActive=10.10.10.10      ###填写zabbix服务器IP或DNS(主动模式)
Hostname=centos7           ###填写zabbix客户端计算机名称
UnsafeUserParameters=1     ###允许执行自定义健值,1允许,0禁止
UserParameter=nginx.status[*],/etc/zabbix/scripts/nginx_status.sh $1  ###自定义健值

###重启zabbix-agent客户端
[root@centos7 zabbix]# systemctl restart zabbix-agent 

四、zabbix 服务端使用zabbix_get测试获取数据

[root@zabbix ~]# zabbix_get -s 10.10.10.20 -k nginx.status[active]
1

五、zabbix 服务端配置监控Nginx (此处省略,基本都是图形操作)

上一篇下一篇

猜你喜欢

热点阅读