Тема: Динамическая настройка Zabbix и Haproxy
Последнее время, для своих нужд, я пересел на zabbix, как на основной софт для мониторинга. Есть плюсы и минусы, но в целом - все что мне надо он умеет и нет необходимости настраивать что-то через командную строку, все кликается через web панель.
А поделится я хочу примером как можно настроить динамический мониторинг для haproxy балансера. Система только готовится пойти в прод - поэтому метрики пока смешные, но не в них дело...
1. Скрипты для сбора метрик с haproxy (их можно применить и с другими программами, например Graphite)
Скрипт для определения потоков (vhost если брать за аналог apache)
/etc/zabbix/sh/haproxy-discovery.sh
#!/bin/sh
sock='/tmp/haproxy.sock'
loop1=0
loop2=0
ha_names_list=`echo 'show stat' | socat - UNIX-CLIENT:$sock | grep -v '^#' | grep -v '^$' | grep -v '^stats,' | awk -F ',' '{print $1","$2}'`
echo "{";
echo " \"data\":["
echo $ha_names_list | sed 's/\(.\) /\1\n/g' \
| while IFS=',' read name type; do
echo 'show stat' | socat - UNIX-CLIENT:$sock | grep '^#' | sed 's/[#| ]//g' | sed 's/\(.\),/\1\n/g' | grep -v '^$' \
| while read params; do
if ! echo $params | egrep -q '^pxname|svname|status|last_chk|lastsess$'; then
[ "$loop1" == "1" ] || [ "$loop2" == "1" ] && echo ","
loop2=1
echo -n " {"
echo -n "\"{#HANAME}\":\"$name\"",
echo -n "\"{#HATYPE}\":\"$type\"",
echo -n "\"{#HAPARAMS}\":\"$params\""
echo -n "}"
fi
done
loop1=1
done
echo
echo " ]"
echo "}"
На выходе получаем json по которому сработает автопоиск заббикса.
{
"data":[
{"{#HANAME}":"http","{#HATYPE}":"FRONTEND","{#HAPARAMS}":"qcur"},
{"{#HANAME}":"http","{#HATYPE}":"FRONTEND","{#HAPARAMS}":"qmax"},
{"{#HANAME}":"http","{#HATYPE}":"FRONTEND","{#HAPARAMS}":"scur"},
{"{#HANAME}":"http","{#HATYPE}":"FRONTEND","{#HAPARAMS}":"smax"},
{"{#HANAME}":"http","{#HATYPE}":"FRONTEND","{#HAPARAMS}":"slim"},
{"{#HANAME}":"http","{#HATYPE}":"FRONTEND","{#HAPARAMS}":"stot"},
...
{"{#HANAME}":"adx_static","{#HATYPE}":"BACKEND","{#HAPARAMS}":"ttime"}
]
}
Список потоков и всех метрик
/etc/zabbix/sh/haproxy-stat.sh
#!/bin/sh
sock='/tmp/haproxy.sock'
ha_params_list=`echo 'show stat' | socat - UNIX-CLIENT:$sock | grep '^#' | sed 's/[#| ]//g' | sed 's/\(.\),/\1\n/g' | grep -v '^$'`
echo 'show stat' | socat - UNIX-CLIENT:$sock \
| while IFS=',' read ${ha_params_list}; do
[ "$pxname" == '# pxname' ] && continue
[ "$pxname" == '' ] || [ "$svname" == '' ] && continue
[ "$status" == 'UP' ] || [ "$status" == 'OPEN' ] && tstatus="1" || tstatus="2"
echo $ha_params_list | sed 's/\(.\) /\1\n/g' | while read params; do
if ! echo $params | egrep -q '^pxname|svname|status|last_chk|lastsess$'; then
echo "$pxname $svname ${params}:${!params:-0}"
fi
done
echo "$pxname $svname status:${tstatus:-0}"
done
На выходе список, заббикс не умеет брать все параметры сразу, точнее умеет, но тут не все так просто... Поэтому я ежеминутно сохраняю список в файл откуда заббикс и берет метрики по одной.
...
http FRONTEND slim:10000
http FRONTEND stot:161301
http FRONTEND bin:20078739
http FRONTEND bout:37266663
...
2. Настройка zabbix-agent
/etc/zabbix/zabbix_agentd.conf.d/haproxy.conf
# cron script needed for create /tmp/haproxy.stat
# $1 - F/B name
# $2 - type or server name
# $3 - value name
UserParameter=haproxy[*],HOME=/var/lib/zabbix cat /tmp/haproxy.stat | grep '$1' | grep '$2' | grep '$3' | awk -F ':' '{print $$2}'
UserParameter=haproxy.discovery,HOME=/var/lib/zabbix /etc/zabbix/sh/haproxy-discovery.sh
3. Cron
/etc/cron.d/haproxy-stat.cron
* * * * * haproxy /etc/zabbix/sh/haproxy-stat.sh > /tmp/haproxy.stat
4. Ну и самое неприятное, накликать все в zabbix-server (но можно и xml имрортировать)
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>2.0</version>
<date>2016-02-07T16:19:15Z</date>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<templates>
<template>
<template>Template HAPR</template>
<name>Template HAPR</name>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<applications>
<application>
<name>Haproxy</name>
</application>
</applications>
<items/>
<discovery_rules>
<discovery_rule>
<name>Haproxy discovery</name>
<type>0</type>
<snmp_community/>
<snmp_oid/>
<key>haproxy.discovery</key>
<delay>30</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>{#HAPARAMS}:^(qcur|qmax|scur|smax|rate|rate_max|hrsp.*)$</filter>
<lifetime>30</lifetime>
<description/>
<item_prototypes>
<item_prototype>
<name>Haproxy {#HANAME}/{#HATYPE} bytes in</name>
<type>0</type>
<snmp_community/>
<multiplier>0</multiplier>
<snmp_oid/>
<key>haproxy[{#HANAME},{#HATYPE},bin]</key>
<delay>45</delay>
<history>7</history>
<trends>365</trends>
<status>0</status>
<value_type>3</value_type>
<allowed_hosts/>
<units>B</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>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>Haproxy</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
</item_prototype>
<item_prototype>
<name>Haproxy {#HANAME}/{#HATYPE} bytes out</name>
<type>0</type>
<snmp_community/>
<multiplier>0</multiplier>
<snmp_oid/>
<key>haproxy[{#HANAME},{#HATYPE},bout]</key>
<delay>45</delay>
<history>7</history>
<trends>365</trends>
<status>0</status>
<value_type>3</value_type>
<allowed_hosts/>
<units>B</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>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>Haproxy</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
</item_prototype>
<item_prototype>
<name>Haproxy {#HANAME}/{#HATYPE} hrsp_1xx</name>
<type>0</type>
<snmp_community/>
<multiplier>0</multiplier>
<snmp_oid/>
<key>haproxy[{#HANAME},{#HATYPE},hrsp_1xx]</key>
<delay>45</delay>
<history>7</history>
<trends>365</trends>
<status>0</status>
<value_type>3</value_type>
<allowed_hosts/>
<units/>
<delta>2</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>Haproxy</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
</item_prototype>
<item_prototype>
<name>Haproxy {#HANAME}/{#HATYPE} hrsp_2xx</name>
<type>0</type>
<snmp_community/>
<multiplier>0</multiplier>
<snmp_oid/>
<key>haproxy[{#HANAME},{#HATYPE},hrsp_2xx]</key>
<delay>45</delay>
<history>7</history>
<trends>365</trends>
<status>0</status>
<value_type>3</value_type>
<allowed_hosts/>
<units/>
<delta>2</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>Haproxy</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
</item_prototype>
<item_prototype>
<name>Haproxy {#HANAME}/{#HATYPE} hrsp_3xx</name>
<type>0</type>
<snmp_community/>
<multiplier>0</multiplier>
<snmp_oid/>
<key>haproxy[{#HANAME},{#HATYPE},hrsp_3xx]</key>
<delay>45</delay>
<history>7</history>
<trends>365</trends>
<status>0</status>
<value_type>3</value_type>
<allowed_hosts/>
<units/>
<delta>2</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>Haproxy</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
</item_prototype>
<item_prototype>
<name>Haproxy {#HANAME}/{#HATYPE} hrsp_4xx</name>
<type>0</type>
<snmp_community/>
<multiplier>0</multiplier>
<snmp_oid/>
<key>haproxy[{#HANAME},{#HATYPE},hrsp_4xx]</key>
<delay>45</delay>
<history>7</history>
<trends>365</trends>
<status>0</status>
<value_type>3</value_type>
<allowed_hosts/>
<units/>
<delta>2</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>Haproxy</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
</item_prototype>
<item_prototype>
<name>Haproxy {#HANAME}/{#HATYPE} hrsp_5xx</name>
<type>0</type>
<snmp_community/>
<multiplier>0</multiplier>
<snmp_oid/>
<key>haproxy[{#HANAME},{#HATYPE},hrsp_5xx]</key>
<delay>45</delay>
<history>7</history>
<trends>365</trends>
<status>0</status>
<value_type>3</value_type>
<allowed_hosts/>
<units/>
<delta>2</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>Haproxy</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
</item_prototype>
<item_prototype>
<name>Haproxy {#HANAME}/{#HATYPE} hrsp_other</name>
<type>0</type>
<snmp_community/>
<multiplier>0</multiplier>
<snmp_oid/>
<key>haproxy[{#HANAME},{#HATYPE},hrsp_other]</key>
<delay>45</delay>
<history>7</history>
<trends>365</trends>
<status>0</status>
<value_type>3</value_type>
<allowed_hosts/>
<units/>
<delta>2</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>Haproxy</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
</item_prototype>
<item_prototype>
<name>Haproxy {#HANAME}/{#HATYPE} Session Total Time</name>
<type>0</type>
<snmp_community/>
<multiplier>0</multiplier>
<snmp_oid/>
<key>haproxy[{#HANAME},{#HATYPE},ttime]</key>
<delay>45</delay>
<history>7</history>
<trends>365</trends>
<status>0</status>
<value_type>3</value_type>
<allowed_hosts/>
<units>ms</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>Haproxy</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
</item_prototype>
<item_prototype>
<name>Haproxy {#HANAME}/{#HATYPE} status</name>
<type>0</type>
<snmp_community/>
<multiplier>0</multiplier>
<snmp_oid/>
<key>haproxy[{#HANAME},{#HATYPE},status]</key>
<delay>45</delay>
<history>7</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>Haproxy</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
</item_prototype>
<item_prototype>
<name>Haproxy {#HANAME}/{#HATYPE} {#HAPARAMS}</name>
<type>0</type>
<snmp_community/>
<multiplier>0</multiplier>
<snmp_oid/>
<key>haproxy[{#HANAME},{#HATYPE},{#HAPARAMS}]</key>
<delay>45</delay>
<history>7</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>Haproxy</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
</item_prototype>
</item_prototypes>
<trigger_prototypes/>
<graph_prototypes>
<graph_prototype>
<name>Haproxy {#HANAME}/{#HATYPE} HTTP responses codes</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>C8C800</color>
<yaxisside>0</yaxisside>
<calc_fnc>2</calc_fnc>
<type>0</type>
<item>
<host>Template HAPR</host>
<key>haproxy[{#HANAME},{#HATYPE},hrsp_other]</key>
</item>
</graph_item>
<graph_item>
<sortorder>1</sortorder>
<drawtype>0</drawtype>
<color>00C8C8</color>
<yaxisside>0</yaxisside>
<calc_fnc>2</calc_fnc>
<type>0</type>
<item>
<host>Template HAPR</host>
<key>haproxy[{#HANAME},{#HATYPE},hrsp_5xx]</key>
</item>
</graph_item>
<graph_item>
<sortorder>2</sortorder>
<drawtype>0</drawtype>
<color>C800C8</color>
<yaxisside>0</yaxisside>
<calc_fnc>2</calc_fnc>
<type>0</type>
<item>
<host>Template HAPR</host>
<key>haproxy[{#HANAME},{#HATYPE},hrsp_4xx]</key>
</item>
</graph_item>
<graph_item>
<sortorder>3</sortorder>
<drawtype>0</drawtype>
<color>0000C8</color>
<yaxisside>0</yaxisside>
<calc_fnc>2</calc_fnc>
<type>0</type>
<item>
<host>Template HAPR</host>
<key>haproxy[{#HANAME},{#HATYPE},hrsp_3xx]</key>
</item>
</graph_item>
<graph_item>
<sortorder>4</sortorder>
<drawtype>0</drawtype>
<color>00C800</color>
<yaxisside>0</yaxisside>
<calc_fnc>2</calc_fnc>
<type>0</type>
<item>
<host>Template HAPR</host>
<key>haproxy[{#HANAME},{#HATYPE},hrsp_2xx]</key>
</item>
</graph_item>
<graph_item>
<sortorder>5</sortorder>
<drawtype>0</drawtype>
<color>C80000</color>
<yaxisside>0</yaxisside>
<calc_fnc>2</calc_fnc>
<type>0</type>
<item>
<host>Template HAPR</host>
<key>haproxy[{#HANAME},{#HATYPE},hrsp_1xx]</key>
</item>
</graph_item>
</graph_items>
</graph_prototype>
<graph_prototype>
<name>Haproxy {#HANAME}/{#HATYPE} Network Traffic</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>C80000</color>
<yaxisside>0</yaxisside>
<calc_fnc>2</calc_fnc>
<type>0</type>
<item>
<host>Template HAPR</host>
<key>haproxy[{#HANAME},{#HATYPE},bin]</key>
</item>
</graph_item>
<graph_item>
<sortorder>1</sortorder>
<drawtype>0</drawtype>
<color>00C800</color>
<yaxisside>0</yaxisside>
<calc_fnc>2</calc_fnc>
<type>0</type>
<item>
<host>Template HAPR</host>
<key>haproxy[{#HANAME},{#HATYPE},bout]</key>
</item>
</graph_item>
</graph_items>
</graph_prototype>
<graph_prototype>
<name>Haproxy {#HANAME}/{#HATYPE} Session Total Time</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>C80000</color>
<yaxisside>0</yaxisside>
<calc_fnc>2</calc_fnc>
<type>0</type>
<item>
<host>Template HAPR</host>
<key>haproxy[{#HANAME},{#HATYPE},ttime]</key>
</item>
</graph_item>
</graph_items>
</graph_prototype>
</graph_prototypes>
<host_prototypes/>
</discovery_rule>
</discovery_rules>
<macros/>
<templates/>
<screens/>
</template>
</templates>
</zabbix_export>
5. Результат