• zabbix添加对haproxy的监控


    zabbix添加对haproxy的监控

    HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy本身提供一个web页面可以显示haproxy的各种信息,方便管理员查看系统状态等。此次我采用socat(socat是netcat的扩展实现)这款开源软件通过haproxy的socks配合zabbix实现haproxy系统的状态监控。

    一、安装socat
    wget http://www.dest-unreach.org/socat/download/socat-1.7.3.0.tar.gz
    tar xzf socat-1.7.3.0.tar.gz
    cd socat-1.7.3.0
    ./configure
    make && make install
    which socat #安装完自动会在/usr/local/bin 创建执行程序
    /usr/local/bin/socat

    二、开启haproxy sock
    编辑haproxy配置文件在global下添加如下:
    global
    stats socket /tmp/haproxy.sock mode 600 level admin

    # 重启haproxy
    /etc/init.d/haproxy restart

    Haproxy 信息

    [root@sdtw02 socat-1.7.3.0]# echo "show info" |socat /tmp/haproxy.sock stdio
    Name: HAProxy
    Version: 1.5.19
    Release_date: 2016/12/25
    Nbproc: 1
    Process_num: 1
    Pid: 20816
    Uptime: 1d 21h14m40s
    Uptime_sec: 162880
    Memmax_MB: 0
    Ulimit-n: 400034
    Maxsock: 400034
    Maxconn: 200000
    Hard_maxconn: 200000
    CurrConns: 0
    CumConns: 45
    CumReq: 45
    MaxSslConns: 0
    CurrSslConns: 0
    CumSslConns: 0
    Maxpipes: 0
    PipesUsed: 0
    PipesFree: 0
    ConnRate: 0
    ConnRateLimit: 0
    MaxConnRate: 2
    SessRate: 0
    SessRateLimit: 0
    MaxSessRate: 2
    SslRate: 0
    SslRateLimit: 0
    MaxSslRate: 0
    SslFrontendKeyRate: 0
    SslFrontendMaxKeyRate: 0
    SslFrontendSessionReuse_pct: 0
    SslBackendKeyRate: 0
    SslBackendMaxKeyRate: 0
    SslCacheLookups: 0
    SslCacheMisses: 0
    CompressBpsIn: 0
    CompressBpsOut: 0
    CompressBpsRateLim: 0
    ZlibMemUsage: 0
    MaxZlibMemUsage: 0
    Tasks: 7
    Run_queue: 1
    Idle_pct: 100
    node: 210-61-161-118.hinet-ip.hinet.net
    description:

    [root@sdtw02 socat-1.7.3.0]# echo "show stat" |socat /tmp/haproxy.sock stdio
    # pxname,svname,qcur,qmax,scur,smax,slim,stot,bin,bout,dreq,dresp,ereq,econ,eresp,wretr,wredis,status,weight,act,bck,chkfail,chkdown,lastchg,downtime,qlimit,pid,iid,sid,throttle,lbtot,tracked,type,rate,rate_lim,rate_max,check_status,check_code,check_duration,hrsp_1xx,hrsp_2xx,hrsp_3xx,hrsp_4xx,hrsp_5xx,hrsp_other,hanafail,req_rate,req_rate_max,req_tot,cli_abrt,srv_abrt,comp_in,comp_out,comp_byp,comp_rsp,lastsess,last_chk,last_agt,qtime,ctime,rtime,ttime,
    admin_stats,FRONTEND,,,0,1,10,13,619,2481,0,0,11,,,,,OPEN,,,,,,,,,1,2,0,,,,0,0,0,2,,,,0,0,0,11,2,0,,0,2,13,,,0,0,0,0,,,,,,,,
    admin_stats,BACKEND,0,0,0,1,1,2,619,2481,0,0,,2,0,0,0,UP,0,0,0,,0,163002,0,,1,2,0,,0,,1,0,,1,,,,0,0,0,0,2,0,,,,,0,0,0,0,0,0,-1,,,0,0,0,0,
    im_access_6666,FRONTEND,,,0,1,200000,31,6617,8443,0,0,0,,,,,OPEN,,,,,,,,,1,3,0,,,,0,0,0,1,,,,,,,,,,,0,0,0,,,0,0,0,0,,,,,,,,
    im_access_6666,im01,0,0,0,1,100000,16,3473,4235,,0,,0,0,0,0,UP,1,1,0,0,0,163002,0,,1,3,1,,16,,2,0,,1,L4OK,,0,,,,,,,0,,,,2,0,,,,,4285,,,0,1,0,3116,
    im_access_6666,im02,0,0,0,1,100000,15,3144,4208,,0,,0,0,0,0,UP,1,1,0,0,0,163002,0,,1,3,2,,15,,2,0,,1,L4OK,,0,,,,,,,0,,,,0,0,,,,,4885,,,0,1,0,3778,
    im_access_6666,BACKEND,0,0,0,1,20000,31,6617,8443,0,0,,0,0,0,0,UP,2,2,0,,0,163002,0,,1,3,0,,31,,1,0,,1,,,,,,,,,,,,,,2,0,0,0,0,0,4285,,,0,1,0,6804,

    看到这里大家都明白了,我们可以通过“show stat”返回的信息,过滤出我们想要得到的监控字段数据。这里我们主要取qcur(queue数量)、scur(session数量)、bin(入站流量)、bout(出站流量)、status(后端服务器状态)、downtime(宕机总时长)、check_status(健康检测状态),自定义key收集这些数据制作相应的item,如果你想监控更多信息可以取更多的字段数据。
    大家看到这些字段数据使用”,”分隔,非常方便我们用awk来过滤数据,具体自定义key见代码。首先,我们需要建立一个HAProxy模版,然后建立发现规则,来发现这些后端服务器,这样每次haproxy添加服务的时候,zabbix就会自动发现这些后端服务器、自动建立item、自动建立Graph、自动建立Trigger,一切全部自动完成。

    三、Step by Step
    1、导入haproxy模版

    2、添加.sh文件到/usr/bin目录下
    # cd /usr/bin
    # cat ckey.ha.bin.sh
    #!/bin/bash
    export PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

    echo "show stat" |socat /tmp/haproxy.sock stdio|grep "<$1>"|grep -v "^FRONTEND"|grep -v "^BACKEND"|awk -F "," '{print $9}'

    # cat ckey.ha.bout.sh
    #!/bin/bash
    export PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

    echo "show stat" |socat /tmp/haproxy.sock stdio|grep "<$1>"|grep -v "^FRONTEND"|grep -v "^BACKEND"|awk -F "," '{print $10}'

    # cat ckey.ha.downtime.sh
    #!/bin/bash
    export PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

    echo "show stat" |socat /tmp/haproxy.sock stdio|grep "<$1>"|grep -v "^FRONTEND"|grep -v "^BACKEND"|awk -F "," '{print $25}'

    # cat ckey.ha.lastchk.sh
    #!/bin/bash
    export PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

    echo "show stat" |socat /tmp/haproxy.sock stdio|grep "<$1>"|grep -v "^FRONTEND"|grep -v "^BACKEND"|awk -F "," '{print $38}'

    # cat ckey.ha.queue.sh
    #!/bin/bash
    export PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

    echo "show stat" |socat /tmp/haproxy.sock stdio|grep "<$1>"|grep -v "^FRONTEND"|grep -v "^BACKEND"|awk -F "," '{print $3}'

    # cat ckey.ha.session.sh
    #!/bin/bash
    export PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

    echo "show stat" |socat /tmp/haproxy.sock stdio|grep "<$1>"|grep -v "^FRONTEND"|grep -v "^BACKEND"|awk -F "," '{print $5}'

    # cat ckey.ha.status.sh
    #!/bin/bash
    export PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

    echo "show stat" |socat /tmp/haproxy.sock stdio|grep "<$1>"|grep -v "^FRONTEND"|grep -v "^BACKEND"|awk -F "," '{print $18}'

    # 建立发现规则
    key shell如下:(这里有一点需要注意,就是haproxy.sock这个文件的权限问题,默认是644,单纯执行这个shell没问题,但如果需要zabbix用户去获取返回值的时候就会提示权限不足,所以我直接将haproxy.sock设置成了666,也可以设置visudo,我为了方便直接修改了这个文件权限)
    # cat has.discovery.sh
    #!/bin/bash
    export PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
    printf '{ '
    printf ' "data":[ '
    export LINE=$(echo "show stat" |socat /tmp/haproxy.sock stdio|grep -v "^#"|grep -v "^admin_stats"|awk -F "," '{print $2}'|grep -v "^FRONTEND"|grep -v "^BACKEND"|grep -v "^$"|wc -l)
    export N=0
    #printf ' { '
    for i in $(echo "show stat" |socat /tmp/haproxy.sock stdio|grep -v "^#"|grep -v "^admin_stats"|awk -F "," '{print $2}'|grep -v "^FRONTEND"|grep -v "^BACKEND");
    do printf " {"{#SNAME}":"$i"}";
    N=$(($N+1))
    if [ $N -eq $LINE ];
    then
    printf ' '
    else
    printf ', '
    fi
    done;
    printf ']} '


    3、定义key配置文件
    [root@sdtw02 src]# vim /etc/zabbix/zabbix_agentd.d/HaProxy_status.conf
    UserParameter=has.discovery,/usr/bin/has.discovery.sh
    UserParameter=ckey.ha.bin[*],/usr/bin/ckey.ha.bin.sh $1
    UserParameter=ckey.ha.bout[*],/usr/bin/ckey.ha.bout.sh $1
    UserParameter=ckey.ha.downtime[*],/usr/bin/ckey.ha.downtime.sh $1
    UserParameter=ckey.ha.lastchk[*],/usr/bin/ckey.ha.lastchk.sh $1
    UserParameter=ckey.ha.queue[*],/usr/bin/ckey.ha.queue.sh $1
    UserParameter=ckey.ha.session[*],/usr/bin/ckey.ha.session.sh $1
    UserParameter=ckey.ha.status[*],/usr/bin/ckey.ha.status.sh $1

    重启zabbix客户端
    # /etc/init.d/zabbix-agent restart

    4.在web上操作主机添加模板


    在zabbix-server端测试:
    [root@u04zbx01 ~]# zabbix_get -s 1.1.1.1 -p 10050-k has.discovery
    {
    "data":[
    2017/11/17 17:06:38 socat[8231] E open("/usr/local/haproxy/haproxy.sock", 02002, 0666): Permission denied
    2017/11/17 17:06:38 socat[8241] E open("/usr/local/haproxy/haproxy.sock", 02002, 0666): Permission denied
    ]}

    修改权限即可
    [root@sdtw02 src]# chmod 666 /tmp/haproxy.sock

    [root@u04zbx01 ~]# zabbix_get -s 1.1.1.1 -p 10050 -k has.discovery
    {
    "data":[
    {"{#SNAME}":"im01"},
    {"{#SNAME}":"im02"}
    ]}

    sed -i "s#/usr/local/haproxy/haproxy.sock#/tmp/haproxy.sock#g" *.sh

    监控模板zbx_haproxy_templates.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <zabbix_export>
        <version>3.0</version>
        <date>2017-11-17T06:48:38Z</date>
        <groups>
            <group>
                <name>Templates</name>
            </group>
        </groups>
        <templates>
            <template>
                <template>Template HaProxy Service</template>
                <name>Template HaProxy Service</name>
                <description/>
                <groups>
                    <group>
                        <name>Templates</name>
                    </group>
                </groups>
                <applications>
                    <application>
                        <name>NetWork</name>
                    </application>
                    <application>
                        <name>Status</name>
                    </application>
                </applications>
                <items/>
                <discovery_rules>
                    <discovery_rule>
                        <name>ha.vserver.discovery</name>
                        <type>0</type>
                        <snmp_community/>
                        <snmp_oid/>
                        <key>has.discovery</key>
                        <delay>1800</delay>
                        <status>0</status>
                        <allowed_hosts/>
                        <snmpv3_contextname/>
                        <snmpv3_securityname/>
                        <snmpv3_securitylevel>0</snmpv3_securitylevel>
                        <snmpv3_authprotocol>0</snmpv3_authprotocol>
                        <snmpv3_authpassphrase/>
                        <snmpv3_privprotocol>0</snmpv3_privprotocol>
                        <snmpv3_privpassphrase/>
                        <delay_flex/>
                        <params/>
                        <ipmi_sensor/>
                        <authtype>0</authtype>
                        <username/>
                        <password/>
                        <publickey/>
                        <privatekey/>
                        <port/>
                        <filter>
                            <evaltype>0</evaltype>
                            <formula/>
                            <conditions/>
                        </filter>
                        <lifetime>30</lifetime>
                        <description/>
                        <item_prototypes>
                            <item_prototype>
                                <name>ha.vserver.bps.in $1</name>
                                <type>0</type>
                                <snmp_community/>
                                <multiplier>1</multiplier>
                                <snmp_oid/>
                                <key>ckey.ha.bin[{#SNAME}]</key>
                                <delay>60</delay>
                                <history>90</history>
                                <trends>365</trends>
                                <status>0</status>
                                <value_type>0</value_type>
                                <allowed_hosts/>
                                <units>bps</units>
                                <delta>1</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>6</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>NetWork</name>
                                    </application>
                                </applications>
                                <valuemap/>
                                <logtimefmt/>
                                <application_prototypes/>
                            </item_prototype>
                            <item_prototype>
                                <name>ha.vserver.bps.out $1</name>
                                <type>0</type>
                                <snmp_community/>
                                <multiplier>1</multiplier>
                                <snmp_oid/>
                                <key>ckey.ha.bout[{#SNAME}]</key>
                                <delay>60</delay>
                                <history>90</history>
                                <trends>365</trends>
                                <status>0</status>
                                <value_type>0</value_type>
                                <allowed_hosts/>
                                <units>bps</units>
                                <delta>1</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>8</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>NetWork</name>
                                    </application>
                                </applications>
                                <valuemap/>
                                <logtimefmt/>
                                <application_prototypes/>
                            </item_prototype>
                            <item_prototype>
                                <name>ha.vserver.downtime $1</name>
                                <type>0</type>
                                <snmp_community/>
                                <multiplier>0</multiplier>
                                <snmp_oid/>
                                <key>ckey.ha.downtime[{#SNAME}]</key>
                                <delay>60</delay>
                                <history>90</history>
                                <trends>365</trends>
                                <status>0</status>
                                <value_type>3</value_type>
                                <allowed_hosts/>
                                <units>s</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>Status</name>
                                    </application>
                                </applications>
                                <valuemap/>
                                <logtimefmt/>
                                <application_prototypes/>
                            </item_prototype>
                            <item_prototype>
                                <name>ha.vserver.lastchk $1</name>
                                <type>0</type>
                                <snmp_community/>
                                <multiplier>0</multiplier>
                                <snmp_oid/>
                                <key>ckey.ha.lastchk[{#SNAME}]</key>
                                <delay>60</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>Status</name>
                                    </application>
                                </applications>
                                <valuemap>
                                    <name>HTTP response status code</name>
                                </valuemap>
                                <logtimefmt/>
                                <application_prototypes/>
                            </item_prototype>
                            <item_prototype>
                                <name>ha.vserver.queue $1</name>
                                <type>0</type>
                                <snmp_community/>
                                <multiplier>0</multiplier>
                                <snmp_oid/>
                                <key>ckey.ha.queue[{#SNAME}]</key>
                                <delay>60</delay>
                                <history>90</history>
                                <trends>365</trends>
                                <status>0</status>
                                <value_type>0</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>NetWork</name>
                                    </application>
                                </applications>
                                <valuemap/>
                                <logtimefmt/>
                                <application_prototypes/>
                            </item_prototype>
                            <item_prototype>
                                <name>ha.vserver.session $1</name>
                                <type>0</type>
                                <snmp_community/>
                                <multiplier>0</multiplier>
                                <snmp_oid/>
                                <key>ckey.ha.session[{#SNAME}]</key>
                                <delay>60</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>NetWork</name>
                                    </application>
                                </applications>
                                <valuemap/>
                                <logtimefmt/>
                                <application_prototypes/>
                            </item_prototype>
                            <item_prototype>
                                <name>ha.vserver.status $1</name>
                                <type>0</type>
                                <snmp_community/>
                                <multiplier>0</multiplier>
                                <snmp_oid/>
                                <key>ckey.ha.status[{#SNAME}]</key>
                                <delay>60</delay>
                                <history>90</history>
                                <trends>0</trends>
                                <status>0</status>
                                <value_type>4</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>Status</name>
                                    </application>
                                </applications>
                                <valuemap/>
                                <logtimefmt/>
                                <application_prototypes/>
                            </item_prototype>
                        </item_prototypes>
                        <trigger_prototypes>
                            <trigger_prototype>
                                <expression>{Template HaProxy Service:ckey.ha.bin[{#SNAME}].max(#5)}&gt;2000000</expression>
                                <name>Ha.Vserver {#SNAME} Inbound Flyde over 2Mbps</name>
                                <url/>
                                <status>0</status>
                                <priority>2</priority>
                                <description/>
                                <type>0</type>
                                <dependencies/>
                            </trigger_prototype>
                            <trigger_prototype>
                                <expression>{Template HaProxy Service:ckey.ha.lastchk[{#SNAME}].last(,2m)}&lt;&gt;200</expression>
                                <name>Ha.Vserver {#SNAME} is Check Failed</name>
                                <url/>
                                <status>0</status>
                                <priority>4</priority>
                                <description/>
                                <type>0</type>
                                <dependencies/>
                            </trigger_prototype>
                            <trigger_prototype>
                                <expression>{Template HaProxy Service:ckey.ha.status[{#SNAME}].strlen(,2m)}&lt;&gt;2</expression>
                                <name>Ha.Vserver {#SNAME} is Down</name>
                                <url/>
                                <status>0</status>
                                <priority>4</priority>
                                <description/>
                                <type>0</type>
                                <dependencies>
                                    <dependency>
                                        <name>Ha.Vserver {#SNAME} is Check Failed</name>
                                        <expression>{Template HaProxy Service:ckey.ha.lastchk[{#SNAME}].last(,2m)}&lt;&gt;200</expression>
                                    </dependency>
                                </dependencies>
                            </trigger_prototype>
                            <trigger_prototype>
                                <expression>{Template HaProxy Service:ckey.ha.bout[{#SNAME}].max(#5)}&gt;2000000</expression>
                                <name>Ha.Vserver {#SNAME} Outbound Flyde over 2Mbps</name>
                                <url/>
                                <status>0</status>
                                <priority>2</priority>
                                <description/>
                                <type>0</type>
                                <dependencies/>
                            </trigger_prototype>
                        </trigger_prototypes>
                        <graph_prototypes>
                            <graph_prototype>
                                <name>Ha.Vserver.DownTime {#SNAME}</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>009999</color>
                                        <yaxisside>0</yaxisside>
                                        <calc_fnc>7</calc_fnc>
                                        <type>0</type>
                                        <item>
                                            <host>Template HaProxy Service</host>
                                            <key>ckey.ha.downtime[{#SNAME}]</key>
                                        </item>
                                    </graph_item>
                                </graph_items>
                            </graph_prototype>
                            <graph_prototype>
                                <name>Ha.Vserver.LastCheck {#SNAME}</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>00DD00</color>
                                        <yaxisside>0</yaxisside>
                                        <calc_fnc>2</calc_fnc>
                                        <type>0</type>
                                        <item>
                                            <host>Template HaProxy Service</host>
                                            <key>ckey.ha.lastchk[{#SNAME}]</key>
                                        </item>
                                    </graph_item>
                                </graph_items>
                            </graph_prototype>
                            <graph_prototype>
                                <name>Ha.Vserver.NetWrok Flow {#SNAME}</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>7</calc_fnc>
                                        <type>0</type>
                                        <item>
                                            <host>Template HaProxy Service</host>
                                            <key>ckey.ha.bin[{#SNAME}]</key>
                                        </item>
                                    </graph_item>
                                    <graph_item>
                                        <sortorder>1</sortorder>
                                        <drawtype>0</drawtype>
                                        <color>F63100</color>
                                        <yaxisside>0</yaxisside>
                                        <calc_fnc>7</calc_fnc>
                                        <type>0</type>
                                        <item>
                                            <host>Template HaProxy Service</host>
                                            <key>ckey.ha.bout[{#SNAME}]</key>
                                        </item>
                                    </graph_item>
                                </graph_items>
                            </graph_prototype>
                            <graph_prototype>
                                <name>Ha.Vserver.NetWrok Session_Queue {#SNAME}</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>BB00BB</color>
                                        <yaxisside>0</yaxisside>
                                        <calc_fnc>2</calc_fnc>
                                        <type>0</type>
                                        <item>
                                            <host>Template HaProxy Service</host>
                                            <key>ckey.ha.queue[{#SNAME}]</key>
                                        </item>
                                    </graph_item>
                                    <graph_item>
                                        <sortorder>1</sortorder>
                                        <drawtype>0</drawtype>
                                        <color>0000CC</color>
                                        <yaxisside>0</yaxisside>
                                        <calc_fnc>2</calc_fnc>
                                        <type>0</type>
                                        <item>
                                            <host>Template HaProxy Service</host>
                                            <key>ckey.ha.session[{#SNAME}]</key>
                                        </item>
                                    </graph_item>
                                </graph_items>
                            </graph_prototype>
                        </graph_prototypes>
                        <host_prototypes/>
                    </discovery_rule>
                </discovery_rules>
                <macros/>
                <templates/>
                <screens/>
            </template>
        </templates>
        <value_maps>
            <value_map>
                <name>HTTP response status code</name>
                <mappings>
                    <mapping>
                        <value>100</value>
                        <newvalue>Continue</newvalue>
                    </mapping>
                    <mapping>
                        <value>101</value>
                        <newvalue>Switching Protocols</newvalue>
                    </mapping>
                    <mapping>
                        <value>102</value>
                        <newvalue>Processing</newvalue>
                    </mapping>
                    <mapping>
                        <value>200</value>
                        <newvalue>OK</newvalue>
                    </mapping>
                    <mapping>
                        <value>201</value>
                        <newvalue>Created</newvalue>
                    </mapping>
                    <mapping>
                        <value>202</value>
                        <newvalue>Accepted</newvalue>
                    </mapping>
                    <mapping>
                        <value>203</value>
                        <newvalue>Non-Authoritative Information</newvalue>
                    </mapping>
                    <mapping>
                        <value>204</value>
                        <newvalue>No Content</newvalue>
                    </mapping>
                    <mapping>
                        <value>205</value>
                        <newvalue>Reset Content</newvalue>
                    </mapping>
                    <mapping>
                        <value>206</value>
                        <newvalue>Partial Content</newvalue>
                    </mapping>
                    <mapping>
                        <value>207</value>
                        <newvalue>Multi-Status</newvalue>
                    </mapping>
                    <mapping>
                        <value>208</value>
                        <newvalue>Already Reported</newvalue>
                    </mapping>
                    <mapping>
                        <value>226</value>
                        <newvalue>IM Used</newvalue>
                    </mapping>
                    <mapping>
                        <value>300</value>
                        <newvalue>Multiple Choices</newvalue>
                    </mapping>
                    <mapping>
                        <value>301</value>
                        <newvalue>Moved Permanently</newvalue>
                    </mapping>
                    <mapping>
                        <value>302</value>
                        <newvalue>Found</newvalue>
                    </mapping>
                    <mapping>
                        <value>303</value>
                        <newvalue>See Other</newvalue>
                    </mapping>
                    <mapping>
                        <value>304</value>
                        <newvalue>Not Modified</newvalue>
                    </mapping>
                    <mapping>
                        <value>305</value>
                        <newvalue>Use Proxy</newvalue>
                    </mapping>
                    <mapping>
                        <value>306</value>
                        <newvalue>Switch Proxy</newvalue>
                    </mapping>
                    <mapping>
                        <value>307</value>
                        <newvalue>Temporary Redirect</newvalue>
                    </mapping>
                    <mapping>
                        <value>308</value>
                        <newvalue>Permanent Redirect/Resume Incomplete</newvalue>
                    </mapping>
                    <mapping>
                        <value>400</value>
                        <newvalue>Bad Request</newvalue>
                    </mapping>
                    <mapping>
                        <value>401</value>
                        <newvalue>Unauthorized</newvalue>
                    </mapping>
                    <mapping>
                        <value>402</value>
                        <newvalue>Payment Required</newvalue>
                    </mapping>
                    <mapping>
                        <value>403</value>
                        <newvalue>Forbidden</newvalue>
                    </mapping>
                    <mapping>
                        <value>404</value>
                        <newvalue>Not Found</newvalue>
                    </mapping>
                    <mapping>
                        <value>405</value>
                        <newvalue>Method Not Allowed</newvalue>
                    </mapping>
                    <mapping>
                        <value>406</value>
                        <newvalue>Not Acceptable</newvalue>
                    </mapping>
                    <mapping>
                        <value>407</value>
                        <newvalue>Proxy Authentication Required</newvalue>
                    </mapping>
                    <mapping>
                        <value>408</value>
                        <newvalue>Request Timeout</newvalue>
                    </mapping>
                    <mapping>
                        <value>409</value>
                        <newvalue>Conflict</newvalue>
                    </mapping>
                    <mapping>
                        <value>410</value>
                        <newvalue>Gone</newvalue>
                    </mapping>
                    <mapping>
                        <value>411</value>
                        <newvalue>Length Required</newvalue>
                    </mapping>
                    <mapping>
                        <value>412</value>
                        <newvalue>Precondition Failed</newvalue>
                    </mapping>
                    <mapping>
                        <value>413</value>
                        <newvalue>Payload Too Large</newvalue>
                    </mapping>
                    <mapping>
                        <value>414</value>
                        <newvalue>Request-URI Too Long</newvalue>
                    </mapping>
                    <mapping>
                        <value>415</value>
                        <newvalue>Unsupported Media Type</newvalue>
                    </mapping>
                    <mapping>
                        <value>416</value>
                        <newvalue>Requested Range Not Satisfiable</newvalue>
                    </mapping>
                    <mapping>
                        <value>417</value>
                        <newvalue>Expectation Failed</newvalue>
                    </mapping>
                    <mapping>
                        <value>418</value>
                        <newvalue>I'm a Teapot</newvalue>
                    </mapping>
                    <mapping>
                        <value>419</value>
                        <newvalue>Authentication Timeout</newvalue>
                    </mapping>
                    <mapping>
                        <value>420</value>
                        <newvalue>Method Failure/Enhance Your Calm</newvalue>
                    </mapping>
                    <mapping>
                        <value>421</value>
                        <newvalue>Misdirected Request</newvalue>
                    </mapping>
                    <mapping>
                        <value>422</value>
                        <newvalue>Unprocessable Entity</newvalue>
                    </mapping>
                    <mapping>
                        <value>423</value>
                        <newvalue>Locked</newvalue>
                    </mapping>
                    <mapping>
                        <value>424</value>
                        <newvalue>Failed Dependency</newvalue>
                    </mapping>
                    <mapping>
                        <value>426</value>
                        <newvalue>Upgrade Required</newvalue>
                    </mapping>
                    <mapping>
                        <value>428</value>
                        <newvalue>Precondition Required</newvalue>
                    </mapping>
                    <mapping>
                        <value>429</value>
                        <newvalue>Too Many Requests</newvalue>
                    </mapping>
                    <mapping>
                        <value>431</value>
                        <newvalue>Request Header Fields Too Large</newvalue>
                    </mapping>
                    <mapping>
                        <value>440</value>
                        <newvalue>Login Timeout</newvalue>
                    </mapping>
                    <mapping>
                        <value>444</value>
                        <newvalue>No Response</newvalue>
                    </mapping>
                    <mapping>
                        <value>449</value>
                        <newvalue>Retry With</newvalue>
                    </mapping>
                    <mapping>
                        <value>450</value>
                        <newvalue>Blocked by Windows Parental Controls</newvalue>
                    </mapping>
                    <mapping>
                        <value>451</value>
                        <newvalue>Unavailable for Legal Reasons/Redirect</newvalue>
                    </mapping>
                    <mapping>
                        <value>494</value>
                        <newvalue>Request Header Too Large</newvalue>
                    </mapping>
                    <mapping>
                        <value>495</value>
                        <newvalue>Cert Error</newvalue>
                    </mapping>
                    <mapping>
                        <value>496</value>
                        <newvalue>No Cert</newvalue>
                    </mapping>
                    <mapping>
                        <value>497</value>
                        <newvalue>HTTP to HTTPS</newvalue>
                    </mapping>
                    <mapping>
                        <value>498</value>
                        <newvalue>Token Expired/Invalid</newvalue>
                    </mapping>
                    <mapping>
                        <value>499</value>
                        <newvalue>Client Closed Request/Token Required</newvalue>
                    </mapping>
                    <mapping>
                        <value>500</value>
                        <newvalue>Internal Server Error</newvalue>
                    </mapping>
                    <mapping>
                        <value>501</value>
                        <newvalue>Not Implemented</newvalue>
                    </mapping>
                    <mapping>
                        <value>502</value>
                        <newvalue>Bad Gateway</newvalue>
                    </mapping>
                    <mapping>
                        <value>503</value>
                        <newvalue>Service Unavailable</newvalue>
                    </mapping>
                    <mapping>
                        <value>504</value>
                        <newvalue>Gateway Timeout</newvalue>
                    </mapping>
                    <mapping>
                        <value>505</value>
                        <newvalue>HTTP Version Not Supported</newvalue>
                    </mapping>
                    <mapping>
                        <value>506</value>
                        <newvalue>Variant Also Negotiates</newvalue>
                    </mapping>
                    <mapping>
                        <value>507</value>
                        <newvalue>Insufficient Storage</newvalue>
                    </mapping>
                    <mapping>
                        <value>508</value>
                        <newvalue>Loop Detected</newvalue>
                    </mapping>
                    <mapping>
                        <value>509</value>
                        <newvalue>Bandwidth Limit Exceeded</newvalue>
                    </mapping>
                    <mapping>
                        <value>510</value>
                        <newvalue>Not Extended</newvalue>
                    </mapping>
                    <mapping>
                        <value>511</value>
                        <newvalue>Network Authentication Required</newvalue>
                    </mapping>
                    <mapping>
                        <value>520</value>
                        <newvalue>Unknown Error</newvalue>
                    </mapping>
                    <mapping>
                        <value>598</value>
                        <newvalue>Network Read Timeout Error</newvalue>
                    </mapping>
                    <mapping>
                        <value>599</value>
                        <newvalue>Network Connect Timeout Error</newvalue>
                    </mapping>
                </mappings>
            </value_map>
        </value_maps>
    </zabbix_export>
  • 相关阅读:
    在Eclipse中使用JUnit4进行单元测试(上)
    SVN和Subclipse安装和使用指南汇总
    在windows下搭建SVN服务器
    学会SVN的应用源代码托管
    SVN中检出(check out) 和 导出(export) 的区别
    .NET平台三层应用程序框架搭建(一)
    Winform dataGridview 为每一个单元格制定一个tooptip
    SQL row_number() over() 来自动产生行号
    Winform datagridview 设置单元格为只读属性
    SQL 把字符创分割成两个字符串
  • 原文地址:https://www.cnblogs.com/reblue520/p/7852880.html
Copyright © 2020-2023  润新知