zabbix监控nginx
在zabbix的客户端wangb02机器上安装nginx并启动起来
在aminglinux02上安装Nginx
编辑yum仓库:
[root@wangzb02 ~]# vi /etc/yum.repos.d/nginx.repo
粘贴:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
安装:
[root@wangzb02 ~]# yum install -y nginx
配置Nginx状态信息
[root@wangzb02 ~]# vi /etc/nginx/conf.d/default.conf #增加
location /nginx_status
{
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
测试
[root@wangzb02 ~]# curl 127.0.0.1/nginx_status
Active connections: 1
server accepts handled requests
7 7 7
Reading: 0 Writing: 1 Waiting: 0
说明:
Active Connections:当前活动连接数,其中也包括了等待状态的连接
accepts:接收到的连接数
handled:已经处理完的连接数,该数字一般和accepts一致,如果不一致那么说明Nginx出错了
requests:总共处理的请求数,一个连接可以有多个请求,所以该值比accpets要大
Reading:正在读取请求头信息的连接数
Writing:正在发送响应报文的连接数
Waiting:处于闲置状态,等待客户端发送请求的连接数
编写监控脚本
[root@wangzb02 ~]# vi /usr/local/sbin/ngx_status.sh #内容如下
#!/bin/bash
url="http://127.0.0.1/nginx_status"
curl=/usr/bin/curl
# 检测nginx进程是否存在
function ping {
/sbin/pidof nginx | wc -l
}
# 检测nginx性能
function active {
$curl $url 2>/dev/null| grep 'Active' | awk '{print $NF}'
}
function reading {
$curl $url 2>/dev/null| grep 'Reading' | awk '{print $2}'
}
function writing {
$curl $url 2>/dev/null| grep 'Writing' | awk '{print $4}'
}
function waiting {
$curl $url 2>/dev/null| grep 'Waiting' | awk '{print $6}'
}
function accepts {
$curl $url 2>/dev/null| awk NR==3 | awk '{print $1}'
}
function handled {
$curl $url 2>/dev/null| awk NR==3 | awk '{print $2}'
}
function requests {
$curl $url 2>/dev/null| awk NR==3 | awk '{print $3}'
}
$1
[root@wangzb02 ~]# chmod 755 /usr/local/sbin/ngx_status.sh
[root@wangzb02 ~]# /usr/local/sbin/ngx_status.sh active
1
[root@wangzb02 ~]# /usr/local/sbin/ngx_status.sh ping
1
[root@wangzb02 ~]# /usr/local/sbin/ngx_status.sh reading
0
[root@wangzb02 ~]# /usr/local/sbin/ngx_status.sh accepts
15
编辑zabbix_agent.conf
[root@wangzb02 ~]# vi /etc/zabbix/zabbix_agentd.conf # 增加
UserParameter=nginx.status[*],/usr/local/sbin/ngx_status.sh $1
重启服务
[root@wangzb02 ~]# systemctl restart zabbix-agent
zabbix_get 测试
在服务端执行
[root@wangzb01 run]# zabbix_get -s 192.168.1.35 -k 'nginx.status[accepts]'
8
[root@wangzb01 run]# zabbix_get -s 192.168.1.35 -k 'nginx.status[ping]'
1
[root@wangzb01 run]# zabbix_get -s 192.168.1.35 -k 'nginx.status[reading]'
0
[root@wangzb01 run]# zabbix_get -s 192.168.1.35 -k 'nginx.status[accepts]'
10
[root@wangzb01 run]# zabbix_get -s 192.168.1.35 -k 'nginx.status[accepts]'
11
[root@wangzb01 run]# zabbix_get -s 192.168.1.35 -k 'nginx.status[accepts]'
12
导入nginx模板
下载模板
https://github.com/aminglinux/linux2019/blob/master/zabbix_nginx_template/zbx_export_templates.xml
Configuration -> Templates -> 右上角Import
查看导入的模板:
链接模板
Configuration -> Hosts -> wangzb02 -> Templates -> Select -> Add -> Update
来源:oschina
链接:https://my.oschina.net/u/3954059/blog/3018424