Zabbix监控nginx服务进程状态
2017-01-22 17:31
981 查看
zabbix监控nginx需要开启nginx status,要确认nginx编译http_sub_module模块!
1、检查当前nginx是否安装配置http_sub_module模块
如果你的环境中可以看到有 --with-http_sub_module 这个模块,就代表可以启用status 。如果没有,可以在编译时加上。
2、配置nginx status
配置完成后重新加载 nginx –s reload
3、访问http://127.0.0.1:8080/NginxStatus/ 即可查看到状态信息
4、编写nginx_status.sh脚本 (/data/PRG/zabbix/scripts/nginx_status.sh )
5、zabbix agent配置自定义key
vim /data/PRG/zabbix/etc/zabbix_agentd.conf
配置完成后需要重启zabbix agent,自定义的key才生效
6、zabbix web端配置监控模板,将如下内容保存xml文件,然后导入模板,即可发现nginx.status模板(需要注意,本模板监控端口是8080,如果需要修改监控端口,可以直接将xml文件中8080端口替换,或者导入之后在web界面修改)
7、导入模板
配置 –> 模板 –> 导入 –> 选择文件 –>刚刚保存的xml文件 –> 导入
8、链接到需要监控的主机
9、查看最新数据及图形
附上脚本和模板网盘地址:http://pan.baidu.com/s/1c1JieHU
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: --prefix=/data/PRG/nginx --with-pcre=../pcre-8.32/ --with-http_stub_status_module --without-select_module --without-poll_module --with-http_concat_module --with-http_sysguard_module --add-module=../ngx_cache_purge-2.0 --with-http_perl_module
如果你的环境中可以看到有 --with-http_sub_module 这个模块,就代表可以启用status 。如果没有,可以在编译时加上。
2、配置nginx status
server { listen 8080; access_log off; server_name localhost; root /var/www/html; location /NginxStatus { stub_status on; access_log off; allow 127.0.0.1; deny all; } }
配置完成后重新加载 nginx –s reload
3、访问http://127.0.0.1:8080/NginxStatus/ 即可查看到状态信息
4、编写nginx_status.sh脚本 (/data/PRG/zabbix/scripts/nginx_status.sh )
#!/bin/bash # DateTime: 2017-01-22 # AUTHOR:kbsonlong # Description:zabbix监控nginx性能以及进程状态 # Note:此脚本需要配置在被监控端 # zabbix_agentd.conf: 添加自定义key,UserParameter=nginx.status[*],/data/PRG/zabbix/scripts/nginx_status.sh -F $1 -P $2 HOST="127.0.0.1" PORT="80" # 检测nginx进程是否存在 function ping { /sbin/pidof nginx | wc -l } # 检测nginx性能 function active { /usr/bin/curl "http://$HOST:$PORT/NginxStatus/" 2>/dev/null| grep 'Active' | awk '{print $NF}' } function reading { /usr/bin/curl "http://$HOST:$PORT/NginxStatus/" 2>/dev/null| grep 'Reading' | awk '{print $2}' } function writing { /usr/bin/curl "http://$HOST:$PORT/NginxStatus/" 2>/dev/null| grep 'Writing' | awk '{print $4}' } function waiting { /usr/bin/curl "http://$HOST:$PORT/NginxStatus/" 2>/dev/null| grep 'Waiting' | awk '{print $6}' } function accepts { /usr/bin/curl "http://$HOST:$PORT/NginxStatus/" 2>/dev/null| awk NR==3 | awk '{print $1}' } function handled { /usr/bin/curl "http://$HOST:$PORT/NginxStatus/" 2>/dev/null| awk NR==3 | awk '{print $2}' } function requests { /usr/bin/curl "http://$HOST:$PORT/NginxStatus/" 2>/dev/null| awk NR==3 | awk '{print $3}' } # 执行function while getopts "H:P:F:" OPT; do case $OPT in "P") PORT=$OPTARG ;; "F") fun=$OPTARG ;; "H") HOST=$OPTARG ;; esac done $fun
5、zabbix agent配置自定义key
vim /data/PRG/zabbix/etc/zabbix_agentd.conf
UnsafeUserParameters=1
UserParameter=nginx.status[*],/data/PRG/zabbix/scripts/nginx_status.sh -F $1 -P $2
配置完成后需要重启zabbix agent,自定义的key才生效
6、zabbix web端配置监控模板,将如下内容保存xml文件,然后导入模板,即可发现nginx.status模板(需要注意,本模板监控端口是8080,如果需要修改监控端口,可以直接将xml文件中8080端口替换,或者导入之后在web界面修改)
<?xml version="1.0" encoding="UTF-8"?> <zabbix_export> <version>3.2</version> <date>2017-01-22T08:57:20Z</date> <groups> <group> <name>Templates</name> </group> </groups> <templates> <template> <template>nginx.status</template> <name>nginx.status</name> <description/> <groups> <group> <name>Templates</name> </group> </groups> <applications> <application> <name>nginx.status</name> </application> </applications> <items> <item> <name>nginx Accepts</name> <type>0</type> <snmp_community/> <multiplier>0</multiplier> <snmp_oid/> <key>nginx.status[accepts,8080]</key> <delay>30</delay> <history>90</history> <trends>365</trends> <status>0</status> <value_type>3</value_type> <allowed_hosts/> <units/> <delta>0</delta> <snmpv3_contextname/> <snmpv3_securityname/> <snmpv3_securitylevel>0</snmpv3_securitylevel> <snmpv3_authprotocol>0</snmpv3_authprotocol> <snmpv3_authpassphrase/> <snmpv3_privprotocol>0</snmpv3_privprotocol> <snmpv3_privpassphrase/> <formula>1</formula> <delay_flex/> <params/> <ipmi_sensor/> <data_type>0</data_type> <authtype>0</authtype> <username/> <password/> <publickey/> <privatekey/> <port/> <description/> <inventory_link>0</inventory_link> <applications> <application> <name>nginx.status</name> </application> </applications> <valuemap/> <logtimefmt/> </item> <item> <name>nginx Active</name> <type>0</type> <snmp_community/> <multiplier>0</multiplier> <snmp_oid/> <key>nginx.status[active,8080]</key> <delay>30</delay> <history>90</history> <trends>365</trends> <status>0</status> <value_type>3</value_type> <allowed_hosts/> <units/> <delta>0</delta> <snmpv3_contextname/> <snmpv3_securityname/> <snmpv3_securitylevel>0</snmpv3_securitylevel> <snmpv3_authprotocol>0</snmpv3_authprotocol> <snmpv3_authpassphrase/> <snmpv3_privprotocol>0</snmpv3_privprotocol> <snmpv3_privpassphrase/> <formula>1</formula> <delay_flex/> <params/> <ipmi_sensor/> <data_type>0</data_type> <authtype>0</authtype> <username/> <password/> <publickey/> <privatekey/> <port/> <description/> <inventory_link>0</inventory_link> <applications> <application> <name>nginx.status</name> </application> </applications> <valuemap/> <logtimefmt/> </item> <item> <name>nginx handled</name> <type>0</type> <snmp_community/> <multiplier>0</multiplier> <snmp_oid/> <key>nginx.status[handled,8080]</key> <delay>30</delay> <history>90</history> <trends>365</trends> <status>0</status> <value_type>3</value_type> <allowed_hosts/> <units/> <delta>0</delta> <snmpv3_contextname/> <snmpv3_securityname/> <snmpv3_securitylevel>0</snmpv3_securitylevel> <snmpv3_authprotocol>0</snmpv3_authprotocol> <snmpv3_authpassphrase/> <snmpv3_privprotocol>0</snmpv3_privprotocol> <snmpv3_privpassphrase/> <formula>1</formula> <delay_flex/> <params/> <ipmi_sensor/> <data_type>0</data_type> <authtype>0</authtype> <username/> <password/> <publickey/> <privatekey/> <port/> <description/> <inventory_link>0</inventory_link> <applications> <application> <name>nginx.status</name> </application> </applications> <valuemap/> <logtimefmt/> </item> <item> <name>nginx Reading</name> <type>0</type> <snmp_community/> <multiplier>0</multiplier> <snmp_oid/> <key>nginx.status[reading,8080]</key> <delay>30</delay> <history>90</history> <trends>365</trends> <status>0</status> <value_type>3</value_type> <allowed_hosts/> <units/> <delta>0</delta> <snmpv3_contextname/> <snmpv3_securityname/> <snmpv3_securitylevel>0</snmpv3_securitylevel> <snmpv3_authprotocol>0</snmpv3_authprotocol> <snmpv3_authpassphrase/> <snmpv3_privprotocol>0</snmpv3_privprotocol> <snmpv3_privpassphrase/> <formula>1</formula> <delay_flex/> <params/> <ipmi_sensor/> <data_type>0</data_type> <authtype>0</authtype> <username/> <password/> <publickey/> <privatekey/> <port/> <description/> <inventory_link>0</inventory_link> <applications> <application> <name>nginx.status</name> </application> </applications> <valuemap/> <logtimefmt/> </item> <item> <name>nginx requests</name> <type>0</type> <snmp_community/> <multiplier>0</multiplier> <snmp_oid/> <key>nginx.status[requests,8080]</key> <delay>30</delay> <history>90</history> <trends>365</trends> <status>0</status> <value_type>3</value_type> <allowed_hosts/> <units/> <delta>0</delta> <snmpv3_contextname/> <snmpv3_securityname/> <snmpv3_securitylevel>0</snmpv3_securitylevel> <snmpv3_authprotocol>0</snmpv3_authprotocol> <snmpv3_authpassphrase/> <snmpv3_privprotocol>0</snmpv3_privprotocol> <snmpv3_privpassphrase/> <formula>1</formula> <delay_flex/> <params/> <ipmi_sensor/> <data_type>0</data_type> <authtype>0</authtype> <username/> <password/> <publickey/> <privatekey/> <port/> <description/> <inventory_link>0</inventory_link> <applications> <application> <name>nginx.status</name> </application> </applications> <valuemap/> <logtimefmt/> </item> <item> <name>nginx waiting</name> <type>0</type> <snmp_community/> <multiplier>0</multiplier> <snmp_oid/> <key>nginx.status[waiting,8080]</key> <delay>30</delay> <history>90</history> <trends>365</trends> <status>0</status> <value_type>3</value_type> <allowed_hosts/> <units/> <delta>0</delta> <snmpv3_contextname/> <snmpv3_securityname/> <snmpv3_securitylevel>0</snmpv3_securitylevel> <snmpv3_authprotocol>0</snmpv3_authprotocol> <snmpv3_authpassphrase/> <snmpv3_privprotocol>0</snmpv3_privprotocol> <snmpv3_privpassphrase/> <formula>1</formula> <delay_flex/> <params/> <ipmi_sensor/> <data_type>0</data_type> <authtype>0</authtype> <username/> <password/> <publickey/> <privatekey/> <port/> <description/> <inventory_link>0</inventory_link> <applications> <application> <name>nginx.status</name> </application> </applications> <valuemap/> <logtimefmt/> </item> <item> <name>nginx writing</name> <type>0</type> <snmp_community/> <multiplier>0</multiplier> <snmp_oid/> <key>nginx.status[writing,8080]</key> <delay>30</delay> <history>90</history> <trends>365</trends> <status>0</status> <value_type>3</value_type> <allowed_hosts/> <units/> <delta>0</delta> <snmpv3_contextname/> <snmpv3_securityname/> <snmpv3_securitylevel>0</snmpv3_securitylevel> <snmpv3_authprotocol>0</snmpv3_authprotocol> <snmpv3_authpassphrase/> <snmpv3_privprotocol>0</snmpv3_privprotocol> <snmpv3_privpassphrase/> <formula>1</formula> <delay_flex/> <params/> <ipmi_sensor/> <data_type>0</data_type> <authtype>0</authtype> <username/> <password/> <publickey/> <privatekey/> <port/> <description/> <inventory_link>0</inventory_link> <applications> <application> <name>nginx.status</name> </application> </applications> <valuemap/> <logtimefmt/> </item> </items> <discovery_rules/> <httptests/> <macros/> <templates/> <screens/> </template> </templates> <graphs> <graph> <name>nginx Clients Status</name> <width>900</width> <height>200</height> <yaxismin>0.0000</yaxismin> <yaxismax>100.0000</yaxismax> <show_work_period>1</show_work_period> <show_triggers>1</show_triggers> <type>0</type> <show_legend>1</show_legend> <show_3d>0</show_3d> <percent_left>0.0000</percent_left> <percent_right>0.0000</percent_right> <ymin_type_1>0</ymin_type_1> <ymax_type_1>0</ymax_type_1> <ymin_item_1>0</ymin_item_1> <ymax_item_1>0</ymax_item_1> <graph_items> <graph_item> <sortorder>0</sortorder> <drawtype>0</drawtype> <color>1A7C11</color> <yaxisside>0</yaxisside> <calc_fnc>2</calc_fnc> <type>0</type> <item> <host>nginx.status</host> <key>nginx.status[active,8080]</key> </item> </graph_item> <graph_item> <sortorder>1</sortorder> <drawtype>0</drawtype> <color>F63100</color> <yaxisside>0</yaxisside> <calc_fnc>2</calc_fnc> <type>0</type> <item> <host>nginx.status</host> <key>nginx.status[reading,8080]</key> </item> </graph_item> <graph_item> <sortorder>2</sortorder> <drawtype>0</drawtype> <color>2774A4</color> <yaxisside>0</yaxisside> <calc_fnc>2</calc_fnc> <type>0</type> <item> <host>nginx.status</host> <key>nginx.status[waiting,8080]</key> </item> </graph_item> <graph_item> <sortorder>3</sortorder> <drawtype>0</drawtype> <color>A54F10</color> <yaxisside>0</yaxisside> <calc_fnc>2</calc_fnc> <type>0</type> <item> <host>nginx.status</host> <key>nginx.status[writing,8080]</key> </item> </graph_item> </graph_items> </graph> <graph> <name>nginx Socket Status</name> <width>900</width> <height>200</height> <yaxismin>0.0000</yaxismin> <yaxismax>100.0000</yaxismax> <show_work_period>1</show_work_period> <show_triggers>1</show_triggers> <type>0</type> <show_legend>1</show_legend> <show_3d>0</show_3d> <percent_left>0.0000</percent_left> <percent_right>0.0000</percent_right> <ymin_type_1>0</ymin_type_1> <ymax_type_1>0</ymax_type_1> <ymin_item_1>0</ymin_item_1> <ymax_item_1>0</ymax_item_1> <graph_items> <graph_item> <sortorder>0</sortorder> <drawtype>0</drawtype> <color>1A7C11</color> <yaxisside>0</yaxisside> <calc_fnc>2</calc_fnc> <type>0</type> <item> <host>nginx.status</host> <key>nginx.status[accepts,8080]</key> </item> </graph_item> <graph_item> <sortorder>1</sortorder> <drawtype>0</drawtype> <color>F63100</color> <yaxisside>0</yaxisside> <calc_fnc>2</calc_fnc> <type>0</type> <item> <host>nginx.status</host> <key>nginx.status[handled,8080]</key> </item> </graph_item> <graph_item> <sortorder>2</sortorder> <drawtype>0</drawtype> <color>2774A4</color> <yaxisside>0</yaxisside> <calc_fnc>2</calc_fnc> <type>0</type> <item> <host>nginx.status</host> <key>nginx.status[requests,8080]</key> </item> </graph_item> </graph_items> </graph> </graphs> </zabbix_export>
7、导入模板
配置 –> 模板 –> 导入 –> 选择文件 –>刚刚保存的xml文件 –> 导入
8、链接到需要监控的主机
9、查看最新数据及图形
附上脚本和模板网盘地址:http://pan.baidu.com/s/1c1JieHU
相关文章推荐
- Zabbix监控nginx服务进程状态
- Zabbix监控Nginx状态,zabbix获取监控项graph图,zabbix监控磁盘I/O ,一键自动化安装zabbix
- zabbix监控nginx状态
- zabbix 监控nginx状态
- zabbix系列(四)Zabbix3.0.4添加对Nginx服务的监控
- zabbix监控nginx状态
- zabbix监控nginx、php-fpm的状态
- zabbix监控nginx 状态
- zabbix监控nginx连接状态(转)
- 使用Zabbix监控ZooKeeper服务的健康状态
- zabbix系列(四)Zabbix3.0.4添加对Nginx服务的监控
- Zabbix监控Nginx 和PHP-FPM状态
- zabbix用low level discovery监控磁盘吞吐量与iops zabbix监控nginx,php-fpm和mysql占用内存和进程个数
- Zabbix 监控 Nginx 状态
- 【shell脚本】监控服务进程状态
- Zabbix高级应用一、监控Exchange在线人数、服务状态
- zabbix 监控nginx状态:
- Zabbix 监控 Nginx 状态
- zabbix监控nginx状态