title: zabbix监控nginx #标题tags: zabbix,2020/4/6 #标签
categories: zabbix # 分类
date: 2020-04-06
记录下zabbix监控nginx性能。
自行安装zabbix、nginx、以及zabbix-agentd。
开启nginx状态页
添加location规则
确保nginx在安装时有--with-http_stub_status_module配置项,否则添加下面的location规则后会报错。
location /ngx_status {stub_status on;access_log off;# allow 127.0.0.1;# deny all;}[root@kafka03 conf]# nginx -s reload # 重启nginx
访问status页面
[root@kafka03 conf]# curl 127.0.0.1/ngx_status # 访问状态页Active connections: 3 # 活跃的连接数量server accepts handled requests #总共处理了14个连接 , 成功创建14次握手, 总共处理了20个请求14 14 20Reading: 0 Writing: 1 Waiting: 0# Reading:读取客户端的连接数# writing:响应数据到客户端的数量# waiting:开启keep-alive的情况下,这个值等于active – (reading+writing), 意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接。
配置nginx客户端的zabbix_agent
[root@kafka03 zabbix]# egrep -v '^#|^$' etc/zabbix_agentd.conf # 修改zabbix_agent文件PidFile=/usr/local/zabbix/logs/zabbix_agentd.pidLogFile=/usr/local/zabbix/logs/zabbix_agentd.logServer=192.168.20.8ServerActive=192.168.20.8Hostname=client02HostMetadata= linux client# 主要是以下几个配置Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.confUnsafeUserParameters=1UserParameter=nginx.info[*],/usr/local/zabbix/scripts/nginx.sh $1
在zabbix_agent端编写采集nginx数据的脚本
[root@kafka03 zabbix]# mkdir /usr/local/zabbix/scripts[root@kafka03 zabbix]# cd /usr/local/zabbix/scripts[root@kafka03 scripts]# cat nginx.sh # 采集数据的脚本如下#!/bin/bash# __Author__: Ray# __Email__: 916551516@qq.com# __DateTime__: 2020-04-06Host="192.168.20.7"Port=80Curl="http://${Host}:${Port}"case $1 in# 检测nginx进程是否存在ping)RS=`pidof nginx | wc -l`echo ${RS};;# 获取nginx首页状态码index)RS=`curl -s -I ${Curl}/index.html | awk '$1== "HTTP/1.1" {print $2}'`echo ${RS};;# 获取活跃的连接数量active)RS=`curl -s ${Curl}/ngx_status | awk '$1 =="Active" {print $3}'`echo ${RS};;# 读取客户端的连接数reading)RS=`curl -s ${Curl}/ngx_status | grep Reading | awk '{print $2}'`echo ${RS};;# 获取响应数据到客户端的数量writing)RS=`curl -s ${Curl}/ngx_status | grep Writing | awk '{print $4}'`echo ${RS};;# 获取Nginx已经处理完正在等候下一次请求指令的驻留连接。waiting)RS=`curl -s ${Curl}/ngx_status | grep Waiting | awk '{print $6}'`echo ${RS};;# 获取共处理了多少个连接accepts)RS=`curl -s ${Curl}/ngx_status | awk 'NR==3 {print $1}'`echo ${RS};;# 获取成功建立握手的数量handled)RS=`curl -s ${Curl}/ngx_status | awk 'NR==3 {print $2}'`echo ${RS};;# 获取总共处理的请求数requests)RS=`curl -s ${Curl}/ngx_status | awk 'NR==3 {print $3}'`echo ${RS};;esac
好吧,写到这里不想写了,因为发现后面的所有操作,不但繁琐,而且我之前也写过类似的,就不再重复造轮子了,如果有需要的话,后面的步骤请参考:Zabbix监控Tomcat及Nginx。
