手把手教你使用zabbix监控nginx

zabbix监控nginx,多亏了容哥(杨容)的帮忙,为了感谢容哥的帮助,写了这篇文章。

环境介绍:

服务器系统版本:CentOSrelease 6.6 (Final)

内核版本:Linux hk_nginx2.6.32-504.3.3.el6.x86_64

ZabbixServer版本:Zabbix server v2.2.2

ZabbixAgent 版本:Zabbix agent v2.2.2

Nginxweb 版本:nginx version: nginx/1.5.8

在zabbix agentd客户端上,查看nginx是否加载了--with-http_stub_status_module。因为zabbix监控nginx是根据nginx的Stub Status模块,抓取Status模块所提供的数据。假如以前没开启,现在想启用StubStatus 模块,在编译nginx 的时候要加上参数 --with-http_stub_status_module,执行./configure && make就可以了,不用make install。不过,一般情况下都是安装了的。

1.在nginx的配置文件中,添加status配置。

location/nginx-status {
            stub_status on;
            access_log  off;
            allow 127.0.0.1;
            allow 192.168.1.10;(zabbix服务器的IP地址,一般是内网地址)       
}

2.访问设置好的nginx-status链接,如图所示:

3.nginx Status 详细说明:

Activeconnections:对后端发起的活动连接数;

server accepts 2349542:nginx 总共处理了2349542个连接;

handled:成功创建了64603417次握手;

requests:总共处理了8798670请求。

Reading:nginx读取客户端的header数;

Writing: nginx 返回给客户端的header数;

Waiting: nginx 请求处理完成,正在等待下一请求指令的连接。

4.在agentd上编写监控nginx的脚本,并且设置属主和属组为zabbix,赋予执行权限。

cd /usr/local/zabbix/scripts
cat nginx_status.sh            
#!/bin/bash
# Script to fetch nginx statuses for tribily monitoring systems
# Author: [email protected]
# License: GPLv2
# Set Variables
BKUP_DATE=`/bin/date +%Y%m%d`
LOG="/data/log/zabbix/webstatus.log"
HOST=`/sbin/ifconfig eth0 | sed -n ‘/inet /{s/.*addr://;s/ .*//;p}‘`
PORT="80"
 
# Functions to return nginx stats
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
chmod o+x nginx_status.sh
chown zabbix.zabbix nginx_status.sh
ll
total 4
-rwxr-xr-x 1 zabbix zabbix 1273 May 13 17:42 nginx_status.sh

5.修改nginx服务器上zabbix客户端的zabbix_agentd.conf配置文件,然后重启zabbix agentd客户端。

cd /usr/local/zabbix/etc
grep -v "^[#;]" zabbix_agentd.conf | grep -v "^$"
LogFile=/tmp/zabbix_agentd.log
Server=192.168.1.10        #zabbix server端的IP地址
ServerActive=192.168.1.10  #zabbix server端的IP地址
Hostname=192.168.1.5       #本地的IP地址
UnsafeUserParameters=1
##下面的是新添加进去的
UserParameter=nginx.accepts,/usr/local/zabbix/scripts/nginx_status.sh accepts  
UserParameter=nginx.handled,/usr/local/zabbix/scripts/nginx_status.sh handled  
UserParameter=nginx.requests,/usr/local/zabbix/scripts/nginx_status.sh requests  
UserParameter=nginx.connections.active,/usr/local/zabbix/scripts/nginx_status.sh active  
UserParameter=nginx.connections.reading,/usr/local/zabbix/scripts/nginx_status.sh reading  
UserParameter=nginx.connections.writing,/usr/local/zabbix/scripts/nginx_status.sh writing  
UserParameter=nginx.connections.waiting,/usr/local/zabbix/scripts/nginx_status.sh waiting

6.在zabbix server 端进行zabbix_get测试,取到数据了,说明没问题。

/usr/local/zabbix/bin/zabbix_get -s 192.168.1.5 -p 10050 -k "nginx.connections.active"
11
/usr/local/zabbix/bin/zabbix_get -s 192.168.1.5 -p 10050 -k "nginx.connections.waiting"
10
/usr/local/zabbix/bin/zabbix_get -s 192.168.1.5 -p 10050 -k "nginx.connections.writing"
1
/usr/local/zabbix/bin/zabbix_get -s 192.168.1.5 -p 10050 -k "nginx.accepts"           
2350638
/usr/local/zabbix/bin/zabbix_get -s 192.168.1.5 -p 10050 -k "nginx.requests"
8801086

7.在网上搜到一个zabbix中nginx status的模板,把模板导入zabbix服务器。

- <zabbix_export version="1.0" date="14.03.11" time="08.48">
- <hosts>
- <host name="Nginx Status">
  <proxy_hostid>0</proxy_hostid> 
  <useip>1</useip> 
  <dns /> 
  <ip>127.0.0.1</ip> 
  <port>10050</port> 
  <status>3</status> 
  <useipmi>0</useipmi> 
  <ipmi_ip>127.0.0.1</ipmi_ip> 
  <ipmi_port>623</ipmi_port> 
  <ipmi_authtype>0</ipmi_authtype> 
  <ipmi_privilege>2</ipmi_privilege> 
  <ipmi_username /> 
  <ipmi_password /> 
- <groups>
  <group>Freetrade</group> 
  </groups>
  <triggers /> 
- <items>
- <item type="7" key="nginx.accepts" value_type="3">
  <description>Nginx Accepts</description> 
  <ipmi_sensor /> 
  <delay>30</delay> 
  <history>365</history> 
  <trends>365</trends> 
  <status>0</status> 
  <data_type>0</data_type> 
  <units /> 
  <multiplier>0</multiplier> 
  <delta>0</delta> 
  <formula>0</formula> 
  <lastlogsize>0</lastlogsize> 
  <logtimefmt /> 
  <delay_flex /> 
  <authtype>0</authtype> 
  <username /> 
  <password /> 
  <publickey /> 
  <privatekey /> 
  <params /> 
  <trapper_hosts>localhost</trapper_hosts> 
  <snmp_community /> 
  <snmp_oid /> 
  <snmp_port>161</snmp_port> 
  <snmpv3_securityname /> 
  <snmpv3_securitylevel>0</snmpv3_securitylevel> 
  <snmpv3_authpassphrase /> 
  <snmpv3_privpassphrase /> 
- <applications>
  <application>Nginx</application> 
  </applications>
  </item>
- <item type="7" key="nginx.connections.active" value_type="3">
  <description>Nginx Connections Active</description> 
  <ipmi_sensor /> 
  <delay>30</delay> 
  <history>365</history> 
  <trends>365</trends> 
  <status>0</status> 
  <data_type>0</data_type> 
  <units /> 
  <multiplier>0</multiplier> 
  <delta>0</delta> 
  <formula>0</formula> 
  <lastlogsize>0</lastlogsize> 
  <logtimefmt /> 
  <delay_flex /> 
  <authtype>0</authtype> 
  <username /> 
  <password /> 
  <publickey /> 
  <privatekey /> 
  <params /> 
  <trapper_hosts>localhost</trapper_hosts> 
  <snmp_community /> 
  <snmp_oid /> 
  <snmp_port>161</snmp_port> 
  <snmpv3_securityname /> 
  <snmpv3_securitylevel>0</snmpv3_securitylevel> 
  <snmpv3_authpassphrase /> 
  <snmpv3_privpassphrase /> 
- <applications>
  <application>Nginx</application> 
  </applications>
  </item>
- <item type="7" key="nginx.connections.reading" value_type="3">
  <description>Nginx Connections Reading</description> 
  <ipmi_sensor /> 
  <delay>30</delay> 
  <history>365</history> 
  <trends>365</trends> 
  <status>0</status> 
  <data_type>0</data_type> 
  <units /> 
  <multiplier>0</multiplier> 
  <delta>0</delta> 
  <formula>0</formula> 
  <lastlogsize>0</lastlogsize> 
  <logtimefmt /> 
  <delay_flex /> 
  <authtype>0</authtype> 
  <username /> 
  <password /> 
  <publickey /> 
  <privatekey /> 
  <params /> 
  <trapper_hosts>localhost</trapper_hosts> 
  <snmp_community /> 
  <snmp_oid /> 
  <snmp_port>161</snmp_port> 
  <snmpv3_securityname /> 
  <snmpv3_securitylevel>0</snmpv3_securitylevel> 
  <snmpv3_authpassphrase /> 
  <snmpv3_privpassphrase /> 
- <applications>
  <application>Nginx</application> 
  </applications>
  </item>
- <item type="7" key="nginx.connections.waiting" value_type="3">
  <description>Nginx Connections Waiting</description> 
  <ipmi_sensor /> 
  <delay>30</delay> 
  <history>365</history> 
  <trends>365</trends> 
  <status>0</status> 
  <data_type>0</data_type> 
  <units /> 
  <multiplier>0</multiplier> 
  <delta>0</delta> 
  <formula>0</formula> 
  <lastlogsize>0</lastlogsize> 
  <logtimefmt /> 
  <delay_flex /> 
  <authtype>0</authtype> 
  <username /> 
  <password /> 
  <publickey /> 
  <privatekey /> 
  <params /> 
  <trapper_hosts>localhost</trapper_hosts> 
  <snmp_community /> 
  <snmp_oid /> 
  <snmp_port>161</snmp_port> 
  <snmpv3_securityname /> 
  <snmpv3_securitylevel>0</snmpv3_securitylevel> 
  <snmpv3_authpassphrase /> 
  <snmpv3_privpassphrase /> 
- <applications>
  <application>Nginx</application> 
  </applications>
  </item>
- <item type="7" key="nginx.connections.writing" value_type="3">
  <description>Nginx Connections Writing</description> 
  <ipmi_sensor /> 
  <delay>30</delay> 
  <history>365</history> 
  <trends>365</trends> 
  <status>0</status> 
  <data_type>0</data_type> 
  <units /> 
  <multiplier>0</multiplier> 
  <delta>0</delta> 
  <formula>0</formula> 
  <lastlogsize>0</lastlogsize> 
  <logtimefmt /> 
  <delay_flex /> 
  <authtype>0</authtype> 
  <username /> 
  <password /> 
  <publickey /> 
  <privatekey /> 
  <params /> 
  <trapper_hosts>localhost</trapper_hosts> 
  <snmp_community /> 
  <snmp_oid /> 
  <snmp_port>161</snmp_port> 
  <snmpv3_securityname /> 
  <snmpv3_securitylevel>0</snmpv3_securitylevel> 
  <snmpv3_authpassphrase /> 
  <snmpv3_privpassphrase /> 
- <applications>
  <application>Nginx</application> 
  </applications>
  </item>
- <item type="7" key="nginx.handled" value_type="3">
  <description>Nginx Handled</description> 
  <ipmi_sensor /> 
  <delay>30</delay> 
  <history>365</history> 
  <trends>365</trends> 
  <status>0</status> 
  <data_type>0</data_type> 
  <units /> 
  <multiplier>0</multiplier> 
  <delta>0</delta> 
  <formula>0</formula> 
  <lastlogsize>0</lastlogsize> 
  <logtimefmt /> 
  <delay_flex /> 
  <authtype>0</authtype> 
  <username /> 
  <password /> 
  <publickey /> 
  <privatekey /> 
  <params /> 
  <trapper_hosts>localhost</trapper_hosts> 
  <snmp_community /> 
  <snmp_oid /> 
  <snmp_port>161</snmp_port> 
  <snmpv3_securityname /> 
  <snmpv3_securitylevel>0</snmpv3_securitylevel> 
  <snmpv3_authpassphrase /> 
  <snmpv3_privpassphrase /> 
- <applications>
  <application>Nginx</application> 
  </applications>
  </item>
- <item type="7" key="nginx.requests" value_type="3">
  <description>Nginx Requests</description> 
  <ipmi_sensor /> 
  <delay>30</delay> 
  <history>365</history> 
  <trends>365</trends> 
  <status>0</status> 
  <data_type>0</data_type> 
  <units /> 
  <multiplier>0</multiplier> 
  <delta>0</delta> 
  <formula>0</formula> 
  <lastlogsize>0</lastlogsize> 
  <logtimefmt /> 
  <delay_flex /> 
  <authtype>0</authtype> 
  <username /> 
  <password /> 
  <publickey /> 
  <privatekey /> 
  <params /> 
  <trapper_hosts>localhost</trapper_hosts> 
  <snmp_community /> 
  <snmp_oid /> 
  <snmp_port>161</snmp_port> 
  <snmpv3_securityname /> 
  <snmpv3_securitylevel>0</snmpv3_securitylevel> 
  <snmpv3_authpassphrase /> 
  <snmpv3_privpassphrase /> 
- <applications>
  <application>Nginx</application> 
  </applications>
  </item>
  </items>
  <templates /> 
- <graphs>
- <graph name="Nginx Socket Status" width="900" height="200">
  <ymin_type>0</ymin_type> 
  <ymax_type>0</ymax_type> 
  <ymin_item_key /> 
  <ymax_item_key /> 
  <show_work_period>1</show_work_period> 
  <show_triggers>1</show_triggers> 
  <graphtype>0</graphtype> 
  <yaxismin>0.0000</yaxismin> 
  <yaxismax>100.0000</yaxismax> 
  <show_legend>0</show_legend> 
  <show_3d>0</show_3d> 
  <percent_left>0.0000</percent_left> 
  <percent_right>0.0000</percent_right> 
- <graph_elements>
- <graph_element item="Nginx Status:nginx.accepts">
  <drawtype>0</drawtype> 
  <sortorder>0</sortorder> 
  <color>00EE00</color> 
  <yaxisside>0</yaxisside> 
  <calc_fnc>2</calc_fnc> 
  <type>0</type> 
  <periods_cnt>5</periods_cnt> 
  </graph_element>
- <graph_element item="Nginx Status:nginx.handled">
  <drawtype>0</drawtype> 
  <sortorder>0</sortorder> 
  <color>EE0000</color> 
  <yaxisside>0</yaxisside> 
  <calc_fnc>2</calc_fnc> 
  <type>0</type> 
  <periods_cnt>5</periods_cnt> 
  </graph_element>
- <graph_element item="Nginx Status:nginx.requests">
  <drawtype>0</drawtype> 
  <sortorder>1</sortorder> 
  <color>EEEE00</color> 
  <yaxisside>0</yaxisside> 
  <calc_fnc>2</calc_fnc> 
  <type>0</type> 
  <periods_cnt>5</periods_cnt> 
  </graph_element>
  </graph_elements>
  </graph>
- <graph name="Nginx Clients Status" width="900" height="200">
  <ymin_type>0</ymin_type> 
  <ymax_type>0</ymax_type> 
  <ymin_item_key /> 
  <ymax_item_key /> 
  <show_work_period>1</show_work_period> 
  <show_triggers>1</show_triggers> 
  <graphtype>0</graphtype> 
  <yaxismin>0.0000</yaxismin> 
  <yaxismax>100.0000</yaxismax> 
  <show_legend>0</show_legend> 
  <show_3d>0</show_3d> 
  <percent_left>0.0000</percent_left> 
  <percent_right>0.0000</percent_right> 
- <graph_elements>
- <graph_element item="Nginx Status:nginx.connections.active">
  <drawtype>0</drawtype> 
  <sortorder>0</sortorder> 
  <color>0000EE</color> 
  <yaxisside>0</yaxisside> 
  <calc_fnc>2</calc_fnc> 
  <type>0</type> 
  <periods_cnt>5</periods_cnt> 
  </graph_element>
- <graph_element item="Nginx Status:nginx.connections.writing">
  <drawtype>0</drawtype> 
  <sortorder>1</sortorder> 
  <color>EE0000</color> 
  <yaxisside>0</yaxisside> 
  <calc_fnc>2</calc_fnc> 
  <type>0</type> 
  <periods_cnt>5</periods_cnt> 
  </graph_element>
- <graph_element item="Nginx Status:nginx.connections.waiting">
  <drawtype>0</drawtype> 
  <sortorder>2</sortorder> 
  <color>EEEE00</color> 
  <yaxisside>0</yaxisside> 
  <calc_fnc>2</calc_fnc> 
  <type>0</type> 
  <periods_cnt>5</periods_cnt> 
  </graph_element>
- <graph_element item="Nginx Status:nginx.connections.reading">
  <drawtype>0</drawtype> 
  <sortorder>3</sortorder> 
  <color>00EE00</color> 
  <yaxisside>0</yaxisside> 
  <calc_fnc>2</calc_fnc> 
  <type>0</type> 
  <periods_cnt>5</periods_cnt> 
  </graph_element>
  </graph_elements>
  </graph>
  </graphs>
  <macros /> 
  </host>
  </hosts>
  <dependencies /> 
  </zabbix_export>

8.登陆到zabbix服务器首页,点击”组态”-“模板”。

点击”汇入”,如图所示

点击“汇入文件“,然后把找到的nginx_status.xml文件,汇入模板。

创建应用集Nginx Server。

把nginx主机连接到模板上去。

最后,看下是否可以检测到数据,是否可以顺利出图。

到此为止,实验结束。

时间: 2024-10-08 07:24:58

手把手教你使用zabbix监控nginx的相关文章

centos7手把手教你搭建zabbix监控

Centos7安装部署zabbix3.4 centos系统版本: 1.安装前需要先关闭selinux和firewall. 1.1 [[email protected] ~]# vi /etc/selinux/config 将SELINUX=enforcing改为SELINUX=disabled 设置后需要重启才能生效 [[email protected] ~]# setenforce 0       #临时关闭 [[email protected] ~]# getenforce         

Zabbix监控nginx服务进程状态

zabbix监控nginx需要开启nginx status,要确认nginx编译http_sub_module模块! 1.检查当前nginx是否安装配置http_sub_module模块 # nginx -V Tengine version: Tengine/1.5.2 (nginx/1.2.9) built by gcc 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC) TLS SNI support enabled configure arguments: --p

zabbix监控nginx

上一篇介绍了zabbix安装,这里接着说说zabbix监控nginx 安装zabbix-agent 在实际应用中,我们server和agent部在同一机器上,所以需要分开安装,其实上一篇已经说了,在编译安装zabbix-server的时候也安装了zabbix-agent,如果只安装zabbix-agent # 切换到zabbix解压目录 cd zabbix-3.0.3 # 编译配置 ./configure --prefix=/usr/local/zabbix-agent --enable-age

Zabbix 监控 Nginx 状态

1.获取 Nginx 状态条件( 需要nginx安装模块) [localhost]#/usr/local/nginx/sbin/nginx -V nginx version: nginx/1.8.0built by gcc 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC) configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_gzip_sta

zabbix监控nginx性能状态

nginx在生产环境中的应用越来越广泛,所以需要对nginx的性能状态做一些监控,来发现出来出现的问题.nginx处理流程图具体如下: 注释:Accepts(接受).Handled(已处理).Requests(请求数)是一直在增加的计数器.Active(活跃).Waiting(等待).Reading(读).Writing(写)随着请求量而增减 名称 描述 指标类型 Accepts(接受) NGINX 所接受的客户端连接数 资源: 功能 Handled(已处理) 成功的客户端连接数 资源: 功能

zabbix监控nginx连接状态

zabbix学习笔记:zabbix监控nginx连接状态 zabbix监控nginx zabbix可以监控nginx的状态,关于一个服务的状态可以查看服务本身的状态(版本号.是否开启),还应该关注服务能力(例如以nginx的负载效果:连接数.请求数和句柄数).下面我们使用zabbix监控nginx. nginx的安装 如果想要查看nginx的服务状态,在对nginx进行源码安装的时候要选中–with-http_stub_status_module模块. 1.解压安装包: [[email prot

zabbix 监控Nginx

一.开启nginx_status页面 server {  \\定义一个虚拟主机     listen 80 default_server;  \\定义监听地址     server_name _;   \\定义主机名     location = /ngx_status {         stub_status on;   \\开启status         access_log off;    \\关闭访问日志         allow 127.0.0.1;   \做访问权限控制    

zabbix监控nginx状态

一.zabbix客户端配置 首先修改一下zabbix客户端的配置,习惯上将zabbix的配置文件拷贝到自建的/etc/zabbix/目录,方便管理: [[email protected] ~]# sed -e '/^$/d;/^#/d'  /etc/zabbix/zabbix_agentd.conf PidFile=/tmp/zabbix_agentd.pid LogFile=/tmp/zabbix_agentd.log Server=192.168.199.79 ServerActive=12

zabbix监控nginx,Mysqld,Php状态

zabbix监控nginx状态 首先,在nginx的配置文件中添加如下一段代码 server  {   listen localhost:80;   server_name localhost; location /nginxstatus {   stub_status on;   access_log off;   allow 127.0.0.1; allow 192.168.1.165;    deny all;   }   } 保存之后重启nginx 在zabbix脚本目录下创建脚本监控z