zabbix 监控 nginx

回复 收藏

1)在客户机上操作 

    1:安装nginx,vim /usr/local/nginx/conf/nginx.conf

    2:vim /usr/local/nginx/conf/nginx.conf

            location /nginxstatus {

                 stub_status on;

              access_log off;

              allow 127.0.0.1;   //本机IP

              allow 192.168.0.4;//这个是我在windowsIP

              allow 192.168.0.18; //zabbix服务端IP

              deny all;

}

    3:/usr/local/nginx/sbin/nginx -s reload

        curl localhost/nginxstatus 网页访问http://192.168.0.18/nginxstatus

       nginx Status 说明:   Active connections:  对后端发起的活动连接数。

  server accepts handled requests

   6           6           5                  nginx 总共处理了6个连接,成功创建了6次握手,总共处理了5请求。

   Reading: 0 Writing: 1 Waiting: 2      

   Reading: nginx 读取客户端的header数, Writing: nginx 返回给客户端的header数, Waiting: nginx 请求处理完成,正在等待下一 请求指令的连接。

    4:创建监控脚本nginx_status.sh

       mkdir  /etc/zabbix/scripts

      cd    /etc/zabbix/scripts

      vim   nginx_status.sh

...........................................................................................................................

#!/bin/bash

##################################

# Zabbix monitoring script

#

# nginx:

#  - anything available via nginx stub-status module

#

##################################

# Contact:

#  vincent.viallet@gmail.com

# Zabbix requested parameter

ZBX_REQ_DATA="$1"

ZBX_REQ_DATA_URL="$2"

# Nginx defaults

NGINX_STATUS_DEFAULT_URL="http://127.0.0.1/nginxstatus"

WGET_BIN="/usr/bin/wget"

#

# Error handling:

#  - need to be displayable in Zabbix (avoid NOT_SUPPORTED)

#  - items need to be of type "float" (allow negative + float)

#

ERROR_NO_ACCESS_FILE="-0.9900"

ERROR_NO_ACCESS="-0.9901"

ERROR_WRONG_PARAM="-0.9902"

ERROR_DATA="-0.9903" # either can not connect / bad host / bad port

# Handle host and port if non-default

if [ ! -z "$ZBX_REQ_DATA_URL" ]; then

  URL="$ZBX_REQ_DATA_URL"

else

  URL="$NGINX_STATUS_DEFAULT_URL"

fi

# save the nginx stats in a variable for future parsing

NGINX_STATS=$($WGET_BIN -q $URL -O - 2> /dev/null)

# error during retrieve

if [ $? -ne 0 -o -z "$NGINX_STATS" ]; then

  echo $ERROR_DATA

  exit 1

fi

#

# Extract data from nginx stats

#

case $ZBX_REQ_DATA in

  active_connections)   echo "$NGINX_STATS" | head -1             | cut -f3 -d' ';;

  accepted_connections) echo "$NGINX_STATS" | grep -Ev '[a-zA-Z]' | cut -f2 -d' ';;

  handled_connections)  echo "$NGINX_STATS" | grep -Ev '[a-zA-Z]' | cut -f3 -d' ';;

  handled_requests)     echo "$NGINX_STATS" | grep -Ev '[a-zA-Z]' | cut -f4 -d' ';;

  reading)              echo "$NGINX_STATS" | tail -1             | cut -f2 -d' ';;

  writing)              echo "$NGINX_STATS" | tail -1             | cut -f4 -d' ';;

  waiting)              echo "$NGINX_STATS" | tail -1             | cut -f6 -d' ';;

  *) echo $ERROR_WRONG_PARAM; exit 1;;

esac

exit 0

...............................................................................................................................................................

chown zabbix:zabbix  nginx_status.sh

chmod 755  nginx_status.sh

    5: vim /etc/zabbix/zabbix_agentd.conf

     UserParameter=nginx,/etc/zabbix/scripts/nginx_status.sh "$1" 

    /etc/init.d/nginx restart  /etc/init.d/zabbix-agent restart

2)服务端操作

   1)zabbix_get -s 127.0.0.1 -p 10050 -k "nginx[reading]" 能否获取客户端数据.

   2)登陆页面----Configuration----Templates----Import-----导入nginx_status模板

   3)  Configuration----Templates----Hosts----点击Name下的主机(0.17)----Templates---Add----Template_Nginx  

3)nginx_status模板,下载地址模板

<?xml version="1.0" encoding="UTF-8"?>

<zabbix_export>

    <version>2.0</version>

    <date>2013-03-26T04:17:58Z</date>

    <groups>

        <group>

            <name>Templates</name>

        </group>

    </groups>

    <templates>

        <template>

            <template>Template_Nginx</template>

            <name>Template_Nginx</name>

            <groups>

                <group>

                    <name>Templates</name>

                </group>

            </groups>

            <applications>

                <application>

                    <name>Nginx</name>

                </application>

            </applications>

            <items>

                <item>

                    <name>Nginx $1</name>

                    <type>0</type>

                    <snmp_community/>

                    <multiplier>0</multiplier>

                    <snmp_oid/>

                    <key>nginx[waiting,{$NGINX_STATUS_URL}]</key>

                    <delay>60</delay>

                    <history>30</history>

                    <trends>365</trends>

                    <status>0</status>

                    <value_type>0</value_type>

                    <allowed_hosts/>

                    <units/>

                    <delta>0</delta>

                    <snmpv3_securityname/>

                    <snmpv3_securitylevel>0</snmpv3_securitylevel>

                    <snmpv3_authpassphrase/>

                    <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</name>

                        </application>

                    </applications>

                    <valuemap/>

                </item>

                <item>

                    <name>Nginx $1</name>

                    <type>0</type>

                    <snmp_community/>

                    <multiplier>0</multiplier>

                    <snmp_oid/>

                    <key>nginx[writing,{$NGINX_STATUS_URL}]</key>

                    <delay>60</delay>

                    <history>30</history>

                    <trends>365</trends>

                    <status>0</status>

                    <value_type>0</value_type>

                    <allowed_hosts/>

                    <units/>

                    <delta>0</delta>

                    <snmpv3_securityname/>

                    <snmpv3_securitylevel>0</snmpv3_securitylevel>

                    <snmpv3_authpassphrase/>

                    <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</name>

                        </application>

                    </applications>

                    <valuemap/>

                </item>

                <item>

                    <name>Nginx $1</name>

                    <type>0</type>

                    <snmp_community/>

                    <multiplier>0</multiplier>

                    <snmp_oid/>

                    <key>nginx[active_connections,{$NGINX_STATUS_URL}]</key>

                    <delay>60</delay>

                    <history>30</history>

                    <trends>365</trends>

                    <status>0</status>

                    <value_type>0</value_type>

                    <allowed_hosts/>

                    <units/>

                    <delta>0</delta>

                    <snmpv3_securityname/>

                    <snmpv3_securitylevel>0</snmpv3_securitylevel>

                    <snmpv3_authpassphrase/>

                    <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</name>

                        </application>

                    </applications>

                    <valuemap/>

                </item>

                <item>

                    <name>Nginx $1</name>

                    <type>0</type>

                    <snmp_community/>

                    <multiplier>0</multiplier>

                    <snmp_oid/>

                    <key>nginx[reading,{$NGINX_STATUS_URL}]</key>

                    <delay>60</delay>

                    <history>30</history>

                    <trends>365</trends>

                    <status>0</status>

                    <value_type>0</value_type>

                    <allowed_hosts/>

                    <units/>

                    <delta>0</delta>

                    <snmpv3_securityname/>

                    <snmpv3_securitylevel>0</snmpv3_securitylevel>

                    <snmpv3_authpassphrase/>

                    <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</name>

                        </application>

                    </applications>

                    <valuemap/>

                </item>

                <item>

                    <name>Nginx $1/sec</name>

                    <type>0</type>

                    <snmp_community/>

                    <multiplier>0</multiplier>

                    <snmp_oid/>

                    <key>nginx[handled_requests,{$NGINX_STATUS_URL}]</key>

                    <delay>60</delay>

                    <history>30</history>

                    <trends>365</trends>

                    <status>0</status>

                    <value_type>0</value_type>

                    <allowed_hosts/>

                    <units/>

                    <delta>1</delta>

                    <snmpv3_securityname/>

                    <snmpv3_securitylevel>0</snmpv3_securitylevel>

                    <snmpv3_authpassphrase/>

                    <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</name>

                        </application>

                    </applications>

                    <valuemap/>

                </item>

                <item>

                    <name>Nginx $1/sec</name>

                    <type>0</type>

                    <snmp_community/>

                    <multiplier>0</multiplier>

                    <snmp_oid/>

                    <key>nginx[accepted_connections,{$NGINX_STATUS_URL}]</key>

                    <delay>60</delay>

                    <history>30</history>

                    <trends>365</trends>

                    <status>0</status>

                    <value_type>0</value_type>

                    <allowed_hosts/>

                    <units/>

                    <delta>1</delta>

                    <snmpv3_securityname/>

                    <snmpv3_securitylevel>0</snmpv3_securitylevel>

                    <snmpv3_authpassphrase/>

                    <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</name>

                        </application>

                    </applications>

                    <valuemap/>

                </item>

                <item>

                    <name>Nginx $1/sec</name>

                    <type>0</type>

                    <snmp_community/>

                    <multiplier>0</multiplier>

                    <snmp_oid/>

                    <key>nginx[handled_connections,{$NGINX_STATUS_URL}]</key>

                    <delay>60</delay>

                    <history>30</history>

                    <trends>365</trends>

                    <status>0</status>

                    <value_type>0</value_type>

                    <allowed_hosts/>

                    <units/>

                    <delta>1</delta>

                    <snmpv3_securityname/>

                    <snmpv3_securitylevel>0</snmpv3_securitylevel>

                    <snmpv3_authpassphrase/>

                    <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</name>

                        </application>

                    </applications>

                    <valuemap/>

                </item>

                <item>

                    <name>Number of $1 process</name>

                    <type>0</type>

                    <snmp_community>public</snmp_community>

                    <multiplier>0</multiplier>

                    <snmp_oid>interfaces.ifTable.ifEntry.ifInOctets.1</snmp_oid>

                    <key>proc.num[nginx]</key>

                    <delay>300</delay>

                    <history>30</history>

                    <trends>365</trends>

                    <status>0</status>

                    <value_type>3</value_type>

                    <allowed_hosts/>

                    <units/>

                    <delta>0</delta>

                    <snmpv3_securityname/>

                    <snmpv3_securitylevel>0</snmpv3_securitylevel>

                    <snmpv3_authpassphrase/>

                    <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/>

                    <valuemap/>

                </item>

            </items>

            <discovery_rules/>

            <macros>

                <macro>

                    <macro>{$NGINX_STATUS_URL}</macro>

                    <value>http://127.0.0.1:10061/nginx_status</value>

                </macro>

            </macros>

            <templates/>

            <screens/>

        </template>

    </templates>

    <triggers>

        <trigger>

            <expression>{Template_Nginx:proc.num[nginx].last(0)}=0</expression>

            <name>Nginx is not running on {HOSTNAME}</name>

            <url/>

            <status>0</status>

            <priority>4</priority>

            <description>Nginx is not running.&#13;

      &#13;

      It has been stopped / shutdown or has crashed. &#13;

      Check on the server for more details:&#13;

        - w / last&#13;

        - dmesg logs&#13;

        - /var/log/messages&#13;

        - nginx error logs</description>

            <type>0</type>

            <dependencies/>

        </trigger>

    </triggers>

    <graphs>

        <graph>

            <name>Nginx - Connections and Requests status</name>

            <width>900</width>

            <height>200</height>

            <yaxismin>0.0000</yaxismin>

            <yaxismax>100.0000</yaxismax>

            <show_work_period>0</show_work_period>

            <show_triggers>0</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>1</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>1</drawtype>

                    <color>FF9999</color>

                    <yaxisside>0</yaxisside>

                    <calc_fnc>4</calc_fnc>

                    <type>0</type>

                    <item>

                        <host>Template_Nginx</host>

                        <key>nginx[accepted_connections,{$NGINX_STATUS_URL}]</key>

                    </item>

                </graph_item>

                <graph_item>

                    <sortorder>1</sortorder>

                    <drawtype>2</drawtype>

                    <color>990000</color>

                    <yaxisside>0</yaxisside>

                    <calc_fnc>4</calc_fnc>

                    <type>0</type>

                    <item>

                        <host>Template_Nginx</host>

                        <key>nginx[handled_connections,{$NGINX_STATUS_URL}]</key>

                    </item>

                </graph_item>

                <graph_item>

                    <sortorder>2</sortorder>

                    <drawtype>0</drawtype>

                    <color>009900</color>

                    <yaxisside>0</yaxisside>

                    <calc_fnc>4</calc_fnc>

                    <type>0</type>

                    <item>

                        <host>Template_Nginx</host>

                        <key>nginx[handled_requests,{$NGINX_STATUS_URL}]</key>

                    </item>

                </graph_item>

            </graph_items>

        </graph>

        <graph>

            <name>Nginx - Threads status</name>

            <width>900</width>

            <height>200</height>

            <yaxismin>0.0000</yaxismin>

            <yaxismax>100.0000</yaxismax>

            <show_work_period>0</show_work_period>

            <show_triggers>0</show_triggers>

            <type>1</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>1</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>1</drawtype>

                    <color>990000</color>

                    <yaxisside>0</yaxisside>

                    <calc_fnc>4</calc_fnc>

                    <type>0</type>

                    <item>

                        <host>Template_Nginx</host>

                        <key>nginx[writing,{$NGINX_STATUS_URL}]</key>

                    </item>

                </graph_item>

                <graph_item>

                    <sortorder>1</sortorder>

                    <drawtype>1</drawtype>

                    <color>999900</color>

                    <yaxisside>0</yaxisside>

                    <calc_fnc>4</calc_fnc>

                    <type>0</type>

                    <item>

                        <host>Template_Nginx</host>

                        <key>nginx[reading,{$NGINX_STATUS_URL}]</key>

                    </item>

                </graph_item>

                <graph_item>

                    <sortorder>2</sortorder>

                    <drawtype>1</drawtype>

                    <color>009900</color>

                    <yaxisside>0</yaxisside>

                    <calc_fnc>4</calc_fnc>

                    <type>0</type>

                    <item>

                        <host>Template_Nginx</host>

                        <key>nginx[waiting,{$NGINX_STATUS_URL}]</key>

                    </item>

                </graph_item>

            </graph_items>

        </graph>

    </graphs>

</zabbix_export>

参考文章:http://blog.csdn.net/orangleliu/article/details/51113985

2017-06-12 15:09 举报
已邀请:

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: