Compare commits

..

No commits in common. "master" and "docker-mdm" have entirely different histories.

15 changed files with 2 additions and 2984 deletions

View File

@ -1,3 +0,0 @@
#docker zabbix
UserParameter=docker[*],sudo /etc/zabbix/scripts/docker.sh "$1" "$2" "$3"

View File

@ -3,63 +3,8 @@
# author mikedmorto 2021 year
export LC_ALL=""
export LANG="en_US.UTF-8"
version="0.1"
DOCKER="/usr/bin/docker"
version="0.0"
JSON=""
#### PARAMETRS ####
METRIC="$1"
ITEM="$2"
case "$METRIC" in
discovery)
JSON="{ \"data\":["
DCLIST=""
echo "test"
# get all docker containers list of id
DCLIST=`${DOCKER} ps -a | tail -n +2 | awk '{print $1}'`
# show all docker id
for DOCKERID in ${DCLIST}; do
JSON=${JSON}" {\"{#DOCKERID}\":\"${DOCKERID}\"},"
done
JSON=${JSON::-1}
JSON=${JSON}"]}"
echo ${JSON}
exit 0
;;
# get container status
docker.container_running)
RET=`${DOCKER} stats --no-stream | tail -n +2 | awk -v IT="${ITEM}" ' BEGIN {$count=0;} { if ($1 == IT) count += 1 } END {if (count > 1) print ""; else if (count == 1) print 1; else if (count == 0) print 0} '`
echo ${RET}
exit 0
;;
script.version)
echo ${version}
exit 0
;;
help)
echo "please use these parametrs
{
discovery
docker.container_running
script.version
}"
;;
*)
echo ""
;;
esac

View File

@ -1,182 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>3.4</version>
<date>2021-09-30T09:28:57Z</date>
<groups>
<group>
<name>MDM</name>
</group>
<group>
<name>Templates</name>
</group>
</groups>
<templates>
<template>
<template>mdm_docker_active</template>
<name>mdm_docker_active</name>
<description/>
<groups>
<group>
<name>MDM</name>
</group>
<group>
<name>Templates</name>
</group>
</groups>
<applications>
<application>
<name>Docker</name>
</application>
<application>
<name>Docker-Containers</name>
</application>
</applications>
<items>
<item>
<name>docker script version</name>
<type>7</type>
<snmp_community/>
<snmp_oid/>
<key>docker[script.version]</key>
<delay>1m</delay>
<history>90d</history>
<trends>0</trends>
<status>0</status>
<value_type>4</value_type>
<allowed_hosts/>
<units/>
<snmpv3_contextname/>
<snmpv3_securityname/>
<snmpv3_securitylevel>0</snmpv3_securitylevel>
<snmpv3_authprotocol>0</snmpv3_authprotocol>
<snmpv3_authpassphrase/>
<snmpv3_privprotocol>0</snmpv3_privprotocol>
<snmpv3_privpassphrase/>
<params/>
<ipmi_sensor/>
<authtype>0</authtype>
<username/>
<password/>
<publickey/>
<privatekey/>
<port/>
<description/>
<inventory_link>0</inventory_link>
<applications>
<application>
<name>Docker</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing/>
<jmx_endpoint/>
<master_item/>
</item>
</items>
<discovery_rules>
<discovery_rule>
<name>DockerDiscovery</name>
<type>7</type>
<snmp_community/>
<snmp_oid/>
<key>docker[discovery]</key>
<delay>1m</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/>
<params/>
<ipmi_sensor/>
<authtype>0</authtype>
<username/>
<password/>
<publickey/>
<privatekey/>
<port/>
<filter>
<evaltype>0</evaltype>
<formula/>
<conditions/>
</filter>
<lifetime>7d</lifetime>
<description/>
<item_prototypes>
<item_prototype>
<name>Container $2 running</name>
<type>7</type>
<snmp_community/>
<snmp_oid/>
<key>docker[docker.container_running,{#DOCKERID}]</key>
<delay>1m</delay>
<history>1w</history>
<trends>365d</trends>
<status>0</status>
<value_type>3</value_type>
<allowed_hosts/>
<units/>
<snmpv3_contextname/>
<snmpv3_securityname/>
<snmpv3_securitylevel>0</snmpv3_securitylevel>
<snmpv3_authprotocol>0</snmpv3_authprotocol>
<snmpv3_authpassphrase/>
<snmpv3_privprotocol>0</snmpv3_privprotocol>
<snmpv3_privpassphrase/>
<params/>
<ipmi_sensor/>
<authtype>0</authtype>
<username/>
<password/>
<publickey/>
<privatekey/>
<port/>
<description/>
<inventory_link>0</inventory_link>
<applications>
<application>
<name>Docker-Containers</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing/>
<jmx_endpoint/>
<application_prototypes/>
<master_item_prototype/>
</item_prototype>
</item_prototypes>
<trigger_prototypes>
<trigger_prototype>
<expression>{mdm_docker_active:docker[docker.container_running,{#DOCKERID}].last()}=0</expression>
<recovery_mode>0</recovery_mode>
<recovery_expression/>
<name>Docker cont {#DOCKERID} is not running</name>
<correlation_mode>0</correlation_mode>
<correlation_tag/>
<url/>
<status>0</status>
<priority>4</priority>
<description/>
<type>0</type>
<manual_close>0</manual_close>
<dependencies/>
<tags/>
</trigger_prototype>
</trigger_prototypes>
<graph_prototypes/>
<host_prototypes/>
<jmx_endpoint/>
</discovery_rule>
</discovery_rules>
<httptests/>
<macros/>
<templates/>
<screens/>
</template>
</templates>
</zabbix_export>

View File

@ -1,533 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>3.4</version>
<date>2021-06-13T08:07:09Z</date>
<groups>
<group>
<name>MDM</name>
</group>
<group>
<name>MyTemplates</name>
</group>
</groups>
<templates>
<template>
<template>mdm_iostat_agent active</template>
<name>mdm_iostat_agent active</name>
<description/>
<groups>
<group>
<name>MDM</name>
</group>
<group>
<name>MyTemplates</name>
</group>
</groups>
<applications>
<application>
<name>iostat</name>
</application>
</applications>
<items/>
<discovery_rules>
<discovery_rule>
<name>IOSTAT: Hard disk drive discovery</name>
<type>7</type>
<snmp_community/>
<snmp_oid/>
<key>iostat[]</key>
<delay>1h</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/>
<params/>
<ipmi_sensor/>
<authtype>0</authtype>
<username/>
<password/>
<publickey/>
<privatekey/>
<port/>
<filter>
<evaltype>0</evaltype>
<formula/>
<conditions/>
</filter>
<lifetime>1d</lifetime>
<description/>
<item_prototypes>
<item_prototype>
<name>iostat: $1 on $2</name>
<type>7</type>
<snmp_community/>
<snmp_oid/>
<key>iostat[avgqu,{#HDNAME}]</key>
<delay>30s</delay>
<history>1w</history>
<trends>365d</trends>
<status>0</status>
<value_type>0</value_type>
<allowed_hosts/>
<units>req</units>
<snmpv3_contextname/>
<snmpv3_securityname/>
<snmpv3_securitylevel>0</snmpv3_securitylevel>
<snmpv3_authprotocol>0</snmpv3_authprotocol>
<snmpv3_authpassphrase/>
<snmpv3_privprotocol>0</snmpv3_privprotocol>
<snmpv3_privpassphrase/>
<params/>
<ipmi_sensor/>
<authtype>0</authtype>
<username/>
<password/>
<publickey/>
<privatekey/>
<port/>
<description>Средний размер очереди.</description>
<inventory_link>0</inventory_link>
<applications>
<application>
<name>iostat</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing/>
<jmx_endpoint/>
<application_prototypes/>
<master_item_prototype/>
</item_prototype>
<item_prototype>
<name>iostat: $1 on $2</name>
<type>7</type>
<snmp_community/>
<snmp_oid/>
<key>iostat[await,{#HDNAME}]</key>
<delay>30s</delay>
<history>1w</history>
<trends>365d</trends>
<status>0</status>
<value_type>0</value_type>
<allowed_hosts/>
<units>ms</units>
<snmpv3_contextname/>
<snmpv3_securityname/>
<snmpv3_securitylevel>0</snmpv3_securitylevel>
<snmpv3_authprotocol>0</snmpv3_authprotocol>
<snmpv3_authpassphrase/>
<snmpv3_privprotocol>0</snmpv3_privprotocol>
<snmpv3_privpassphrase/>
<params/>
<ipmi_sensor/>
<authtype>0</authtype>
<username/>
<password/>
<publickey/>
<privatekey/>
<port/>
<description>Среднее время ожидания запроса в очереди</description>
<inventory_link>0</inventory_link>
<applications>
<application>
<name>iostat</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing/>
<jmx_endpoint/>
<application_prototypes/>
<master_item_prototype/>
</item_prototype>
<item_prototype>
<name>iostat: KBps $1 on $2</name>
<type>7</type>
<snmp_community/>
<snmp_oid/>
<key>iostat[read,{#HDNAME}]</key>
<delay>30s</delay>
<history>1w</history>
<trends>365d</trends>
<status>0</status>
<value_type>0</value_type>
<allowed_hosts/>
<units>Bps</units>
<snmpv3_contextname/>
<snmpv3_securityname/>
<snmpv3_securitylevel>0</snmpv3_securitylevel>
<snmpv3_authprotocol>0</snmpv3_authprotocol>
<snmpv3_authpassphrase/>
<snmpv3_privprotocol>0</snmpv3_privprotocol>
<snmpv3_privpassphrase/>
<params/>
<ipmi_sensor/>
<authtype>0</authtype>
<username/>
<password/>
<publickey/>
<privatekey/>
<port/>
<description/>
<inventory_link>0</inventory_link>
<applications>
<application>
<name>iostat</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing>
<step>
<type>10</type>
<params/>
</step>
<step>
<type>1</type>
<params>1024</params>
</step>
</preprocessing>
<jmx_endpoint/>
<application_prototypes/>
<master_item_prototype/>
</item_prototype>
<item_prototype>
<name>iostat: read req on $2</name>
<type>7</type>
<snmp_community/>
<snmp_oid/>
<key>iostat[rs,{#HDNAME}]</key>
<delay>30s</delay>
<history>1w</history>
<trends>365d</trends>
<status>0</status>
<value_type>0</value_type>
<allowed_hosts/>
<units>req</units>
<snmpv3_contextname/>
<snmpv3_securityname/>
<snmpv3_securitylevel>0</snmpv3_securitylevel>
<snmpv3_authprotocol>0</snmpv3_authprotocol>
<snmpv3_authpassphrase/>
<snmpv3_privprotocol>0</snmpv3_privprotocol>
<snmpv3_privpassphrase/>
<params/>
<ipmi_sensor/>
<authtype>0</authtype>
<username/>
<password/>
<publickey/>
<privatekey/>
<port/>
<description>Запросов на чтение</description>
<inventory_link>0</inventory_link>
<applications>
<application>
<name>iostat</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing/>
<jmx_endpoint/>
<application_prototypes/>
<master_item_prototype/>
</item_prototype>
<item_prototype>
<name>iostat: $1 on $2</name>
<type>7</type>
<snmp_community/>
<snmp_oid/>
<key>iostat[svctm,{#HDNAME}]</key>
<delay>30s</delay>
<history>1w</history>
<trends>365d</trends>
<status>0</status>
<value_type>0</value_type>
<allowed_hosts/>
<units>ms</units>
<snmpv3_contextname/>
<snmpv3_securityname/>
<snmpv3_securitylevel>0</snmpv3_securitylevel>
<snmpv3_authprotocol>0</snmpv3_authprotocol>
<snmpv3_authpassphrase/>
<snmpv3_privprotocol>0</snmpv3_privprotocol>
<snmpv3_privpassphrase/>
<params/>
<ipmi_sensor/>
<authtype>0</authtype>
<username/>
<password/>
<publickey/>
<privatekey/>
<port/>
<description>Среднее время выполнения операций на диске</description>
<inventory_link>0</inventory_link>
<applications>
<application>
<name>iostat</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing/>
<jmx_endpoint/>
<application_prototypes/>
<master_item_prototype/>
</item_prototype>
<item_prototype>
<name>iostat: $1 on $2</name>
<type>7</type>
<snmp_community/>
<snmp_oid/>
<key>iostat[util,{#HDNAME}]</key>
<delay>30s</delay>
<history>1w</history>
<trends>365d</trends>
<status>0</status>
<value_type>0</value_type>
<allowed_hosts/>
<units>%</units>
<snmpv3_contextname/>
<snmpv3_securityname/>
<snmpv3_securitylevel>0</snmpv3_securitylevel>
<snmpv3_authprotocol>0</snmpv3_authprotocol>
<snmpv3_authpassphrase/>
<snmpv3_privprotocol>0</snmpv3_privprotocol>
<snmpv3_privpassphrase/>
<params/>
<ipmi_sensor/>
<authtype>0</authtype>
<username/>
<password/>
<publickey/>
<privatekey/>
<port/>
<description/>
<inventory_link>0</inventory_link>
<applications>
<application>
<name>iostat</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing/>
<jmx_endpoint/>
<application_prototypes/>
<master_item_prototype/>
</item_prototype>
<item_prototype>
<name>iostat: KBps $1 on $2</name>
<type>7</type>
<snmp_community/>
<snmp_oid/>
<key>iostat[write,{#HDNAME}]</key>
<delay>30s</delay>
<history>1w</history>
<trends>365d</trends>
<status>0</status>
<value_type>0</value_type>
<allowed_hosts/>
<units>Bps</units>
<snmpv3_contextname/>
<snmpv3_securityname/>
<snmpv3_securitylevel>0</snmpv3_securitylevel>
<snmpv3_authprotocol>0</snmpv3_authprotocol>
<snmpv3_authpassphrase/>
<snmpv3_privprotocol>0</snmpv3_privprotocol>
<snmpv3_privpassphrase/>
<params/>
<ipmi_sensor/>
<authtype>0</authtype>
<username/>
<password/>
<publickey/>
<privatekey/>
<port/>
<description/>
<inventory_link>0</inventory_link>
<applications>
<application>
<name>iostat</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing>
<step>
<type>10</type>
<params/>
</step>
<step>
<type>1</type>
<params>1024</params>
</step>
</preprocessing>
<jmx_endpoint/>
<application_prototypes/>
<master_item_prototype/>
</item_prototype>
<item_prototype>
<name>iostat: write req on $2</name>
<type>7</type>
<snmp_community/>
<snmp_oid/>
<key>iostat[ws,{#HDNAME}]</key>
<delay>30s</delay>
<history>1w</history>
<trends>365d</trends>
<status>0</status>
<value_type>0</value_type>
<allowed_hosts/>
<units>req</units>
<snmpv3_contextname/>
<snmpv3_securityname/>
<snmpv3_securitylevel>0</snmpv3_securitylevel>
<snmpv3_authprotocol>0</snmpv3_authprotocol>
<snmpv3_authpassphrase/>
<snmpv3_privprotocol>0</snmpv3_privprotocol>
<snmpv3_privpassphrase/>
<params/>
<ipmi_sensor/>
<authtype>0</authtype>
<username/>
<password/>
<publickey/>
<privatekey/>
<port/>
<description>Запросов на запись</description>
<inventory_link>0</inventory_link>
<applications>
<application>
<name>iostat</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing/>
<jmx_endpoint/>
<application_prototypes/>
<master_item_prototype/>
</item_prototype>
</item_prototypes>
<trigger_prototypes/>
<graph_prototypes>
<graph_prototype>
<name>iostat: {#HDNAME} speed</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>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>0</drawtype>
<color>009900</color>
<yaxisside>0</yaxisside>
<calc_fnc>2</calc_fnc>
<type>0</type>
<item>
<host>mdm_iostat_agent active</host>
<key>iostat[read,{#HDNAME}]</key>
</item>
</graph_item>
<graph_item>
<sortorder>1</sortorder>
<drawtype>0</drawtype>
<color>DD0000</color>
<yaxisside>0</yaxisside>
<calc_fnc>2</calc_fnc>
<type>0</type>
<item>
<host>mdm_iostat_agent active</host>
<key>iostat[write,{#HDNAME}]</key>
</item>
</graph_item>
</graph_items>
</graph_prototype>
<graph_prototype>
<name>iostat: {#HDNAME} util</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>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>0</drawtype>
<color>00EEEE</color>
<yaxisside>0</yaxisside>
<calc_fnc>2</calc_fnc>
<type>0</type>
<item>
<host>mdm_iostat_agent active</host>
<key>iostat[util,{#HDNAME}]</key>
</item>
</graph_item>
<graph_item>
<sortorder>1</sortorder>
<drawtype>0</drawtype>
<color>00DD00</color>
<yaxisside>1</yaxisside>
<calc_fnc>2</calc_fnc>
<type>0</type>
<item>
<host>mdm_iostat_agent active</host>
<key>iostat[rs,{#HDNAME}]</key>
</item>
</graph_item>
<graph_item>
<sortorder>2</sortorder>
<drawtype>0</drawtype>
<color>FF6666</color>
<yaxisside>1</yaxisside>
<calc_fnc>2</calc_fnc>
<type>0</type>
<item>
<host>mdm_iostat_agent active</host>
<key>iostat[ws,{#HDNAME}]</key>
</item>
</graph_item>
</graph_items>
</graph_prototype>
</graph_prototypes>
<host_prototypes/>
<jmx_endpoint/>
</discovery_rule>
</discovery_rules>
<httptests/>
<macros/>
<templates/>
<screens/>
</template>
</templates>
</zabbix_export>

View File

@ -1,168 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>3.4</version>
<date>2021-06-14T12:23:50Z</date>
<groups>
<group>
<name>MDM</name>
</group>
<group>
<name>Templates</name>
</group>
</groups>
<templates>
<template>
<template>mdm netstat connections active</template>
<name>mdm netstat connections active</name>
<description/>
<groups>
<group>
<name>MDM</name>
</group>
<group>
<name>Templates</name>
</group>
</groups>
<applications>
<application>
<name>Netstat</name>
</application>
</applications>
<items>
<item>
<name>Http established cons on 80 and 443 ports</name>
<type>7</type>
<snmp_community/>
<snmp_oid/>
<key>netstat-conn[established]</key>
<delay>1m</delay>
<history>1w</history>
<trends>365d</trends>
<status>0</status>
<value_type>3</value_type>
<allowed_hosts/>
<units>conn</units>
<snmpv3_contextname/>
<snmpv3_securityname/>
<snmpv3_securitylevel>0</snmpv3_securitylevel>
<snmpv3_authprotocol>0</snmpv3_authprotocol>
<snmpv3_authpassphrase/>
<snmpv3_privprotocol>0</snmpv3_privprotocol>
<snmpv3_privpassphrase/>
<params/>
<ipmi_sensor/>
<authtype>0</authtype>
<username/>
<password/>
<publickey/>
<privatekey/>
<port/>
<description/>
<inventory_link>0</inventory_link>
<applications>
<application>
<name>Netstat</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing/>
<jmx_endpoint/>
<master_item/>
</item>
<item>
<name>Http time waiting conns on 80 and 443 ports</name>
<type>7</type>
<snmp_community/>
<snmp_oid/>
<key>netstat-conn[time_wait]</key>
<delay>1m</delay>
<history>1w</history>
<trends>365d</trends>
<status>0</status>
<value_type>3</value_type>
<allowed_hosts/>
<units>conn</units>
<snmpv3_contextname/>
<snmpv3_securityname/>
<snmpv3_securitylevel>0</snmpv3_securitylevel>
<snmpv3_authprotocol>0</snmpv3_authprotocol>
<snmpv3_authpassphrase/>
<snmpv3_privprotocol>0</snmpv3_privprotocol>
<snmpv3_privpassphrase/>
<params/>
<ipmi_sensor/>
<authtype>0</authtype>
<username/>
<password/>
<publickey/>
<privatekey/>
<port/>
<description/>
<inventory_link>0</inventory_link>
<applications>
<application>
<name>Netstat</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing/>
<jmx_endpoint/>
<master_item/>
</item>
</items>
<discovery_rules/>
<httptests/>
<macros/>
<templates/>
<screens/>
</template>
</templates>
<graphs>
<graph>
<name>Netstat: connections on 80 and 443 ports</name>
<width>600</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>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>2</drawtype>
<color>AA00AA</color>
<yaxisside>1</yaxisside>
<calc_fnc>2</calc_fnc>
<type>0</type>
<item>
<host>mdm netstat connections active</host>
<key>netstat-conn[established]</key>
</item>
</graph_item>
<graph_item>
<sortorder>1</sortorder>
<drawtype>0</drawtype>
<color>00DD00</color>
<yaxisside>1</yaxisside>
<calc_fnc>2</calc_fnc>
<type>0</type>
<item>
<host>mdm netstat connections active</host>
<key>netstat-conn[time_wait]</key>
</item>
</graph_item>
</graph_items>
</graph>
</graphs>
</zabbix_export>

View File

@ -1,3 +0,0 @@
#netstat connections status
# $1 METRIC
UserParameter=netstat-conn[*],/etc/zabbix/scripts/netstat_conn.sh "$1"

View File

@ -1,39 +0,0 @@
#!/bin/bash
#Netstat connections monitoring
METRIC="$1"
if [[ -z "$1" ]]; then
echo "Please enter metric"
exit 1
fi
CACHETTL="55" # Время действия кеша в секундах (чуть меньше чем период опроса элементов)
CACHE="/tmp/netstat-status-`echo netstat| md5sum | cut -d" " -f1`.cache"
if [ -s "$CACHE" ]; then
TIMECACHE=`stat -c"%Z" "$CACHE"`
else
TIMECACHE=0
fi
TIMENOW=`date '+%s'`
if [ "$(($TIMENOW - $TIMECACHE))" -gt "$CACHETTL" ]; then
netstat -tan|grep -e ':80\|:443' > $CACHE || exit 1
fi
case $METRIC in
'established')
cat $CACHE | grep "ESTABLISHED" | wc -l
;;
'time_wait')
cat $CACHE | grep "TIME_WAIT" | wc -l
;;
*)
echo "Not selected metric"
exit 0
;;
esac

View File

@ -1,607 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>3.4</version>
<date>2021-06-14T11:47:45Z</date>
<groups>
<group>
<name>MDM</name>
</group>
<group>
<name>MyTemplates</name>
</group>
</groups>
<templates>
<template>
<template>mdm_nginx_agent active</template>
<name>mdm_nginx_agent active</name>
<description/>
<groups>
<group>
<name>MDM</name>
</group>
<group>
<name>MyTemplates</name>
</group>
</groups>
<applications>
<application>
<name>Nginx</name>
</application>
</applications>
<items>
<item>
<name>Nginx: connections accepted per sec</name>
<type>7</type>
<snmp_community/>
<snmp_oid/>
<key>nginx[accepts,{$NGINX_STATS_URL}]</key>
<delay>1m</delay>
<history>1w</history>
<trends>365d</trends>
<status>0</status>
<value_type>0</value_type>
<allowed_hosts/>
<units>c/sec</units>
<snmpv3_contextname/>
<snmpv3_securityname/>
<snmpv3_securitylevel>0</snmpv3_securitylevel>
<snmpv3_authprotocol>0</snmpv3_authprotocol>
<snmpv3_authpassphrase/>
<snmpv3_privprotocol>0</snmpv3_privprotocol>
<snmpv3_privpassphrase/>
<params/>
<ipmi_sensor/>
<authtype>0</authtype>
<username/>
<password/>
<publickey/>
<privatekey/>
<port/>
<description/>
<inventory_link>0</inventory_link>
<applications>
<application>
<name>Nginx</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing>
<step>
<type>10</type>
<params/>
</step>
</preprocessing>
<jmx_endpoint/>
<master_item/>
</item>
<item>
<name>Nginx: connects active</name>
<type>7</type>
<snmp_community>public</snmp_community>
<snmp_oid>interfaces.ifTable.ifEntry.ifInOctets.1</snmp_oid>
<key>nginx[active,{$NGINX_STATS_URL}]</key>
<delay>1m</delay>
<history>1w</history>
<trends>365d</trends>
<status>0</status>
<value_type>3</value_type>
<allowed_hosts/>
<units/>
<snmpv3_contextname/>
<snmpv3_securityname/>
<snmpv3_securitylevel>0</snmpv3_securitylevel>
<snmpv3_authprotocol>0</snmpv3_authprotocol>
<snmpv3_authpassphrase/>
<snmpv3_privprotocol>0</snmpv3_privprotocol>
<snmpv3_privpassphrase/>
<params/>
<ipmi_sensor/>
<authtype>0</authtype>
<username/>
<password/>
<publickey/>
<privatekey/>
<port/>
<description/>
<inventory_link>0</inventory_link>
<applications>
<application>
<name>Nginx</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing/>
<jmx_endpoint/>
<master_item/>
</item>
<item>
<name>Nginx: connections handled per sec</name>
<type>7</type>
<snmp_community/>
<snmp_oid/>
<key>nginx[handled,{$NGINX_STATS_URL}]</key>
<delay>1m</delay>
<history>1w</history>
<trends>365d</trends>
<status>0</status>
<value_type>0</value_type>
<allowed_hosts/>
<units>c/sec</units>
<snmpv3_contextname/>
<snmpv3_securityname/>
<snmpv3_securitylevel>0</snmpv3_securitylevel>
<snmpv3_authprotocol>0</snmpv3_authprotocol>
<snmpv3_authpassphrase/>
<snmpv3_privprotocol>0</snmpv3_privprotocol>
<snmpv3_privpassphrase/>
<params/>
<ipmi_sensor/>
<authtype>0</authtype>
<username/>
<password/>
<publickey/>
<privatekey/>
<port/>
<description/>
<inventory_link>0</inventory_link>
<applications>
<application>
<name>Nginx</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing>
<step>
<type>10</type>
<params/>
</step>
</preprocessing>
<jmx_endpoint/>
<master_item/>
</item>
<item>
<name>Nginx: connections reading</name>
<type>7</type>
<snmp_community>public</snmp_community>
<snmp_oid>interfaces.ifTable.ifEntry.ifInOctets.1</snmp_oid>
<key>nginx[reading,{$NGINX_STATS_URL}]</key>
<delay>1m</delay>
<history>1w</history>
<trends>365d</trends>
<status>0</status>
<value_type>3</value_type>
<allowed_hosts/>
<units/>
<snmpv3_contextname/>
<snmpv3_securityname/>
<snmpv3_securitylevel>0</snmpv3_securitylevel>
<snmpv3_authprotocol>0</snmpv3_authprotocol>
<snmpv3_authpassphrase/>
<snmpv3_privprotocol>0</snmpv3_privprotocol>
<snmpv3_privpassphrase/>
<params/>
<ipmi_sensor/>
<authtype>0</authtype>
<username/>
<password/>
<publickey/>
<privatekey/>
<port/>
<description/>
<inventory_link>0</inventory_link>
<applications>
<application>
<name>Nginx</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing/>
<jmx_endpoint/>
<master_item/>
</item>
<item>
<name>Nginx: requests per sec</name>
<type>7</type>
<snmp_community/>
<snmp_oid/>
<key>nginx[requests,{$NGINX_STATS_URL}]</key>
<delay>1m</delay>
<history>1w</history>
<trends>365d</trends>
<status>0</status>
<value_type>0</value_type>
<allowed_hosts/>
<units>r/sec</units>
<snmpv3_contextname/>
<snmpv3_securityname/>
<snmpv3_securitylevel>0</snmpv3_securitylevel>
<snmpv3_authprotocol>0</snmpv3_authprotocol>
<snmpv3_authpassphrase/>
<snmpv3_privprotocol>0</snmpv3_privprotocol>
<snmpv3_privpassphrase/>
<params/>
<ipmi_sensor/>
<authtype>0</authtype>
<username/>
<password/>
<publickey/>
<privatekey/>
<port/>
<description/>
<inventory_link>0</inventory_link>
<applications>
<application>
<name>Nginx</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing>
<step>
<type>10</type>
<params/>
</step>
</preprocessing>
<jmx_endpoint/>
<master_item/>
</item>
<item>
<name>Nginx: connections waiting</name>
<type>7</type>
<snmp_community>public</snmp_community>
<snmp_oid>interfaces.ifTable.ifEntry.ifInOctets.1</snmp_oid>
<key>nginx[waiting,{$NGINX_STATS_URL}]</key>
<delay>1m</delay>
<history>1w</history>
<trends>365d</trends>
<status>0</status>
<value_type>3</value_type>
<allowed_hosts/>
<units/>
<snmpv3_contextname/>
<snmpv3_securityname/>
<snmpv3_securitylevel>0</snmpv3_securitylevel>
<snmpv3_authprotocol>0</snmpv3_authprotocol>
<snmpv3_authpassphrase/>
<snmpv3_privprotocol>0</snmpv3_privprotocol>
<snmpv3_privpassphrase/>
<params/>
<ipmi_sensor/>
<authtype>0</authtype>
<username/>
<password/>
<publickey/>
<privatekey/>
<port/>
<description/>
<inventory_link>0</inventory_link>
<applications>
<application>
<name>Nginx</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing/>
<jmx_endpoint/>
<master_item/>
</item>
<item>
<name>Nginx: connections writing</name>
<type>7</type>
<snmp_community>public</snmp_community>
<snmp_oid>interfaces.ifTable.ifEntry.ifInOctets.1</snmp_oid>
<key>nginx[writing,{$NGINX_STATS_URL}]</key>
<delay>1m</delay>
<history>1w</history>
<trends>365d</trends>
<status>0</status>
<value_type>3</value_type>
<allowed_hosts/>
<units/>
<snmpv3_contextname/>
<snmpv3_securityname/>
<snmpv3_securitylevel>0</snmpv3_securitylevel>
<snmpv3_authprotocol>0</snmpv3_authprotocol>
<snmpv3_authpassphrase/>
<snmpv3_privprotocol>0</snmpv3_privprotocol>
<snmpv3_privpassphrase/>
<params/>
<ipmi_sensor/>
<authtype>0</authtype>
<username/>
<password/>
<publickey/>
<privatekey/>
<port/>
<description/>
<inventory_link>0</inventory_link>
<applications>
<application>
<name>Nginx</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing/>
<jmx_endpoint/>
<master_item/>
</item>
<item>
<name>Nginx: Number of processes $1</name>
<type>7</type>
<snmp_community/>
<snmp_oid/>
<key>proc.num[nginx]</key>
<delay>1m</delay>
<history>1w</history>
<trends>365d</trends>
<status>0</status>
<value_type>3</value_type>
<allowed_hosts/>
<units/>
<snmpv3_contextname/>
<snmpv3_securityname/>
<snmpv3_securitylevel>0</snmpv3_securitylevel>
<snmpv3_authprotocol>0</snmpv3_authprotocol>
<snmpv3_authpassphrase/>
<snmpv3_privprotocol>0</snmpv3_privprotocol>
<snmpv3_privpassphrase/>
<params/>
<ipmi_sensor/>
<authtype>0</authtype>
<username/>
<password/>
<publickey/>
<privatekey/>
<port/>
<description/>
<inventory_link>0</inventory_link>
<applications>
<application>
<name>Nginx</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing/>
<jmx_endpoint/>
<master_item/>
</item>
</items>
<discovery_rules/>
<httptests/>
<macros/>
<templates/>
<screens/>
</template>
</templates>
<triggers>
<trigger>
<expression>{mdm_nginx_agent active:nginx[active,{$NGINX_STATS_URL}].last(0)}&gt;{$NGINX_CON_NUM}</expression>
<recovery_mode>0</recovery_mode>
<recovery_expression/>
<name>Nginx: many active connections on {HOST.NAME}</name>
<correlation_mode>0</correlation_mode>
<correlation_tag/>
<url/>
<status>0</status>
<priority>2</priority>
<description/>
<type>0</type>
<manual_close>0</manual_close>
<dependencies/>
<tags/>
</trigger>
<trigger>
<expression>{mdm_nginx_agent active:nginx[requests,{$NGINX_STATS_URL}].avg(240)}&gt;{$NGINX_REQ_NUM}</expression>
<recovery_mode>0</recovery_mode>
<recovery_expression/>
<name>Nginx: many requests on {HOST.NAME}</name>
<correlation_mode>0</correlation_mode>
<correlation_tag/>
<url/>
<status>0</status>
<priority>2</priority>
<description/>
<type>0</type>
<manual_close>0</manual_close>
<dependencies>
<dependency>
<name>Nginx: too many requests on {HOST.NAME}</name>
<expression>{mdm_nginx_agent active:nginx[requests,{$NGINX_STATS_URL}].avg(240)}&gt;{$NGINX_REQ_NUM}*1.5</expression>
<recovery_expression/>
</dependency>
</dependencies>
<tags/>
</trigger>
<trigger>
<expression>{mdm_nginx_agent active:nginx[requests,{$NGINX_STATS_URL}].last(0)}&gt;{$NGINX_REQ_NUM}</expression>
<recovery_mode>0</recovery_mode>
<recovery_expression/>
<name>Nginx: many requests on {HOSTNAME}</name>
<correlation_mode>0</correlation_mode>
<correlation_tag/>
<url/>
<status>0</status>
<priority>2</priority>
<description/>
<type>0</type>
<manual_close>0</manual_close>
<dependencies>
<dependency>
<name>Nginx: too many requests on {HOSTNAME}</name>
<expression>{mdm_nginx_agent active:nginx[requests,{$NGINX_STATS_URL}].last(0)}&gt;{$NGINX_REQ_NUM}*1.3</expression>
<recovery_expression/>
</dependency>
</dependencies>
<tags/>
</trigger>
<trigger>
<expression>{mdm_nginx_agent active:proc.num[nginx].last(0)}&lt;1</expression>
<recovery_mode>0</recovery_mode>
<recovery_expression/>
<name>Nginx: nginx is not running on {HOST.NAME}</name>
<correlation_mode>0</correlation_mode>
<correlation_tag/>
<url/>
<status>0</status>
<priority>5</priority>
<description/>
<type>0</type>
<manual_close>0</manual_close>
<dependencies/>
<tags/>
</trigger>
<trigger>
<expression>{mdm_nginx_agent active:nginx[requests,{$NGINX_STATS_URL}].avg(240)}&gt;{$NGINX_REQ_NUM}*1.5</expression>
<recovery_mode>0</recovery_mode>
<recovery_expression/>
<name>Nginx: too many requests on {HOST.NAME}</name>
<correlation_mode>0</correlation_mode>
<correlation_tag/>
<url/>
<status>0</status>
<priority>3</priority>
<description/>
<type>0</type>
<manual_close>0</manual_close>
<dependencies/>
<tags/>
</trigger>
<trigger>
<expression>{mdm_nginx_agent active:nginx[requests,{$NGINX_STATS_URL}].last(0)}&gt;{$NGINX_REQ_NUM}*1.3</expression>
<recovery_mode>0</recovery_mode>
<recovery_expression/>
<name>Nginx: too many requests on {HOSTNAME}</name>
<correlation_mode>0</correlation_mode>
<correlation_tag/>
<url/>
<status>0</status>
<priority>3</priority>
<description/>
<type>0</type>
<manual_close>0</manual_close>
<dependencies/>
<tags/>
</trigger>
</triggers>
<graphs>
<graph>
<name>Nginx: Connections</name>
<width>600</width>
<height>200</height>
<yaxismin>0.0000</yaxismin>
<yaxismax>100.0000</yaxismax>
<show_work_period>0</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>4</drawtype>
<color>3333FF</color>
<yaxisside>1</yaxisside>
<calc_fnc>2</calc_fnc>
<type>0</type>
<item>
<host>mdm_nginx_agent active</host>
<key>nginx[active,{$NGINX_STATS_URL}]</key>
</item>
</graph_item>
<graph_item>
<sortorder>1</sortorder>
<drawtype>0</drawtype>
<color>FF6666</color>
<yaxisside>1</yaxisside>
<calc_fnc>2</calc_fnc>
<type>0</type>
<item>
<host>mdm_nginx_agent active</host>
<key>nginx[writing,{$NGINX_STATS_URL}]</key>
</item>
</graph_item>
<graph_item>
<sortorder>2</sortorder>
<drawtype>0</drawtype>
<color>EEEE00</color>
<yaxisside>1</yaxisside>
<calc_fnc>2</calc_fnc>
<type>0</type>
<item>
<host>mdm_nginx_agent active</host>
<key>nginx[reading,{$NGINX_STATS_URL}]</key>
</item>
</graph_item>
<graph_item>
<sortorder>3</sortorder>
<drawtype>0</drawtype>
<color>00CC00</color>
<yaxisside>1</yaxisside>
<calc_fnc>2</calc_fnc>
<type>0</type>
<item>
<host>mdm_nginx_agent active</host>
<key>nginx[waiting,{$NGINX_STATS_URL}]</key>
</item>
</graph_item>
</graph_items>
</graph>
<graph>
<name>Nginx: Requests</name>
<width>600</width>
<height>200</height>
<yaxismin>0.0000</yaxismin>
<yaxismax>100.0000</yaxismax>
<show_work_period>0</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>1</sortorder>
<drawtype>5</drawtype>
<color>FF3333</color>
<yaxisside>1</yaxisside>
<calc_fnc>2</calc_fnc>
<type>0</type>
<item>
<host>mdm_nginx_agent active</host>
<key>nginx[requests,{$NGINX_STATS_URL}]</key>
</item>
</graph_item>
<graph_item>
<sortorder>2</sortorder>
<drawtype>2</drawtype>
<color>00EE00</color>
<yaxisside>1</yaxisside>
<calc_fnc>2</calc_fnc>
<type>0</type>
<item>
<host>mdm_nginx_agent active</host>
<key>nginx[accepts,{$NGINX_STATS_URL}]</key>
</item>
</graph_item>
</graph_items>
</graph>
</graphs>
</zabbix_export>

View File

@ -1,2 +0,0 @@
UserParameter=nginx[*],/etc/zabbix/scripts/nginx-stats.sh "none" "$1" "$2"

View File

@ -1,54 +0,0 @@
#!/bin/bash
##### OPTIONS VERIFICATION #####
if [[ -z "$1" || -z "$2" || -z "$3" ]]; then
exit 1
fi
##### PARAMETERS #####
RESERVED="$1"
METRIC="$2"
STATSURL="$3"
CURL="/usr/bin/curl"
CACHE_TTL="55"
CACHE_FILE="/tmp/zabbix.nginx.`echo $STATSURL | md5sum | cut -d" " -f1`.cache"
EXEC_TIMEOUT="1"
NOW_TIME=`date '+%s'`
##### RUN #####
if [ -s "${CACHE_FILE}" ]; then
CACHE_TIME=`stat -c"%Y" "${CACHE_FILE}"`
else
CACHE_TIME=0
fi
DELTA_TIME=$((${NOW_TIME} - ${CACHE_TIME}))
#
if [ ${DELTA_TIME} -lt ${EXEC_TIMEOUT} ]; then
sleep $((${EXEC_TIMEOUT} - ${DELTA_TIME}))
elif [ ${DELTA_TIME} -gt ${CACHE_TTL} ]; then
echo "" >> "${CACHE_FILE}" # !!!
DATACACHE=`${CURL} --insecure -s "${STATSURL}" 2>&1`
echo "${DATACACHE}" > "${CACHE_FILE}" # !!!
chmod 640 "${CACHE_FILE}"
fi
#
if [ "${METRIC}" = "active" ]; then
cat "${CACHE_FILE}" | grep "Active connections" | cut -d':' -f2
fi
if [ "${METRIC}" = "accepts" ]; then
cat "${CACHE_FILE}" | sed -n '3p' | cut -d" " -f2
fi
if [ "${METRIC}" = "handled" ]; then
cat "${CACHE_FILE}" | sed -n '3p' | cut -d" " -f3
fi
if [ "${METRIC}" = "requests" ]; then
cat "${CACHE_FILE}" | sed -n '3p' | cut -d" " -f4
fi
if [ "${METRIC}" = "reading" ]; then
cat "${CACHE_FILE}" | grep "Reading" | cut -d':' -f2 | cut -d' ' -f2
fi
if [ "${METRIC}" = "writing" ]; then
cat "${CACHE_FILE}" | grep "Writing" | cut -d':' -f3 | cut -d' ' -f2
fi
if [ "${METRIC}" = "waiting" ]; then
cat "${CACHE_FILE}" | grep "Waiting" | cut -d':' -f4 | cut -d' ' -f2
fi
#
exit 0

View File

@ -1,5 +0,0 @@
#php-fpm status
# $1 METRIC
# $2 FPM URL
# $3 FPM PORT
UserParameter=php-fpm[*],/etc/zabbix/scripts/fpm-status.sh "$1" "$2" "$3"

View File

@ -1,80 +0,0 @@
#!/bin/bash
##### OPTIONS VERIFICATION #####
if [ -z "$1" ]; then
exit 1
fi
##### PARAMETERS #####
METRIC="$1"
POOL_PORT="${3:-9001}"
STATSURL="${2:-http://localhost/fpm-status?port=$POOL_PORT}"
CURL="/usr/bin/curl"
CACHE_TTL="55"
CACHE_FILE="/tmp/zabbix.fpm-status.`echo $STATSURL | md5sum | cut -d" " -f1`.cache"
EXEC_TIMEOUT="1"
NOW_TIME=`date '+%s'`
##### RUN #####
if [ -s "${CACHE_FILE}" ]; then
CACHE_TIME=`stat -c"%Y" "${CACHE_FILE}"`
else
CACHE_TIME=0
fi
DELTA_TIME=$((${NOW_TIME} - ${CACHE_TIME}))
#
if [ ${DELTA_TIME} -lt ${EXEC_TIMEOUT} ]; then
sleep $((${EXEC_TIMEOUT} - ${DELTA_TIME}))
elif [ ${DELTA_TIME} -gt ${CACHE_TTL} ]; then
echo "" >> "${CACHE_FILE}" # !!!
DATACACHE=`${CURL} --insecure -s "${STATSURL}" 2>&1`
echo "${DATACACHE}" > "${CACHE_FILE}" # !!!
chmod 640 "${CACHE_FILE}"
fi
#
case $METRIC in
pool)
grep "^pool:" $CACHE_FILE | cut -d ':' -f 2 | sed 's|^\s\+||'
;;
process_manager)
grep "^process manager:" $CACHE_FILE | cut -d ":" -f 2 | sed 's|^\s\+||'
;;
start_time)
grep "^start time:" $CACHE_FILE | sed 's|^start time:\s\+||'
;;
start_since)
grep "^start since:" $CACHE_FILE | cut -d ":" -f 2 | sed 's|^\s\+||'
;;
accepted_conn)
grep "^accepted conn:" $CACHE_FILE | cut -d ":" -f 2 | sed 's|^\s\+||'
;;
listen_queue)
grep "^listen queue:" $CACHE_FILE | cut -d ":" -f 2 | sed 's|^\s\+||'
;;
max_listen_queue)
grep "^max listen queue:" $CACHE_FILE | cut -d ":" -f 2 | sed 's|^\s\+||'
;;
listen_queue_len)
grep "^listen queue len:" $CACHE_FILE | cut -d ":" -f 2 | sed 's|^\s\+||'
;;
idle_processes)
grep "^idle processes:" $CACHE_FILE | cut -d ":" -f 2 | sed 's|^\s\+||'
;;
active_processes)
grep "^active processes:" $CACHE_FILE | cut -d ":" -f 2 | sed 's|^\s\+||'
;;
total_processes)
grep "^total processes:" $CACHE_FILE | cut -d ":" -f 2 | sed 's|^\s\+||'
;;
max_active_processes)
grep "^max active processes:" $CACHE_FILE | cut -d ":" -f 2 | sed 's|^\s\+||'
;;
max_children_reached)
grep "^max children reached:" $CACHE_FILE | cut -d ":" -f 2 | sed 's|^\s\+||'
;;
*)
echo "Unsupported metric $METRIC"
exit 1
;;
esac
#
exit 0

View File

@ -1,418 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>3.4</version>
<date>2021-06-14T12:27:54Z</date>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<templates>
<template>
<template>mdm php-fpm active</template>
<name>mdm php-fpm active</name>
<description/>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<applications>
<application>
<name>php-fpm</name>
</application>
</applications>
<items>
<item>
<name>php-fpm - ping check</name>
<type>7</type>
<snmp_community/>
<snmp_oid/>
<key>fpm[ping,{$POOL_PORT}]</key>
<delay>1m</delay>
<history>1w</history>
<trends>60d</trends>
<status>1</status>
<value_type>3</value_type>
<allowed_hosts/>
<units/>
<snmpv3_contextname/>
<snmpv3_securityname/>
<snmpv3_securitylevel>0</snmpv3_securitylevel>
<snmpv3_authprotocol>0</snmpv3_authprotocol>
<snmpv3_authpassphrase/>
<snmpv3_privprotocol>0</snmpv3_privprotocol>
<snmpv3_privpassphrase/>
<params/>
<ipmi_sensor/>
<authtype>0</authtype>
<username/>
<password/>
<publickey/>
<privatekey/>
<port/>
<description/>
<inventory_link>0</inventory_link>
<applications>
<application>
<name>php-fpm</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing/>
<jmx_endpoint/>
<master_item/>
</item>
<item>
<name>php-fpm - number of active processes</name>
<type>7</type>
<snmp_community/>
<snmp_oid/>
<key>php-fpm[active_processes,{$FPM_URL},{$FPM_PORT}]</key>
<delay>1m</delay>
<history>1w</history>
<trends>60d</trends>
<status>0</status>
<value_type>3</value_type>
<allowed_hosts/>
<units/>
<snmpv3_contextname/>
<snmpv3_securityname/>
<snmpv3_securitylevel>0</snmpv3_securitylevel>
<snmpv3_authprotocol>0</snmpv3_authprotocol>
<snmpv3_authpassphrase/>
<snmpv3_privprotocol>0</snmpv3_privprotocol>
<snmpv3_privpassphrase/>
<params/>
<ipmi_sensor/>
<authtype>0</authtype>
<username/>
<password/>
<publickey/>
<privatekey/>
<port/>
<description/>
<inventory_link>0</inventory_link>
<applications>
<application>
<name>php-fpm</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing/>
<jmx_endpoint/>
<master_item/>
</item>
<item>
<name>php-fpm - number of idle processes</name>
<type>7</type>
<snmp_community/>
<snmp_oid/>
<key>php-fpm[idle_processes,{$FPM_URL},{$FPM_PORT}]</key>
<delay>1m</delay>
<history>1w</history>
<trends>60d</trends>
<status>0</status>
<value_type>3</value_type>
<allowed_hosts/>
<units/>
<snmpv3_contextname/>
<snmpv3_securityname/>
<snmpv3_securitylevel>0</snmpv3_securitylevel>
<snmpv3_authprotocol>0</snmpv3_authprotocol>
<snmpv3_authpassphrase/>
<snmpv3_privprotocol>0</snmpv3_privprotocol>
<snmpv3_privpassphrase/>
<params/>
<ipmi_sensor/>
<authtype>0</authtype>
<username/>
<password/>
<publickey/>
<privatekey/>
<port/>
<description/>
<inventory_link>0</inventory_link>
<applications>
<application>
<name>php-fpm</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing/>
<jmx_endpoint/>
<master_item/>
</item>
<item>
<name>php-fpm - number of total processes</name>
<type>7</type>
<snmp_community/>
<snmp_oid/>
<key>php-fpm[total_processes,{$FPM_URL},{$FPM_PORT}]</key>
<delay>1m</delay>
<history>1w</history>
<trends>60d</trends>
<status>0</status>
<value_type>3</value_type>
<allowed_hosts/>
<units/>
<snmpv3_contextname/>
<snmpv3_securityname/>
<snmpv3_securitylevel>0</snmpv3_securitylevel>
<snmpv3_authprotocol>0</snmpv3_authprotocol>
<snmpv3_authpassphrase/>
<snmpv3_privprotocol>0</snmpv3_privprotocol>
<snmpv3_privpassphrase/>
<params/>
<ipmi_sensor/>
<authtype>0</authtype>
<username/>
<password/>
<publickey/>
<privatekey/>
<port/>
<description/>
<inventory_link>0</inventory_link>
<applications>
<application>
<name>php-fpm</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing/>
<jmx_endpoint/>
<master_item/>
</item>
<item>
<name>Number of running processes $1</name>
<type>7</type>
<snmp_community/>
<snmp_oid/>
<key>proc.num[{$FPM_PROCESS_NAME}]</key>
<delay>1m</delay>
<history>1w</history>
<trends>365d</trends>
<status>0</status>
<value_type>3</value_type>
<allowed_hosts/>
<units/>
<snmpv3_contextname/>
<snmpv3_securityname/>
<snmpv3_securitylevel>0</snmpv3_securitylevel>
<snmpv3_authprotocol>0</snmpv3_authprotocol>
<snmpv3_authpassphrase/>
<snmpv3_privprotocol>0</snmpv3_privprotocol>
<snmpv3_privpassphrase/>
<params/>
<ipmi_sensor/>
<authtype>0</authtype>
<username/>
<password/>
<publickey/>
<privatekey/>
<port/>
<description/>
<inventory_link>0</inventory_link>
<applications>
<application>
<name>php-fpm</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing/>
<jmx_endpoint/>
<master_item/>
</item>
</items>
<discovery_rules/>
<httptests/>
<macros>
<macro>
<macro>{$FPM_PROCESS_IDLE_CR}</macro>
<value>2</value>
</macro>
<macro>
<macro>{$FPM_PROCESS_IDLE_TR}</macro>
<value>10</value>
</macro>
<macro>
<macro>{$FPM_PROCESS_NAME}</macro>
<value>php-fpm</value>
</macro>
<macro>
<macro>{$POOL_PORT}</macro>
<value>9001</value>
</macro>
</macros>
<templates/>
<screens/>
</template>
</templates>
<triggers>
<trigger>
<expression>{mdm php-fpm active:fpm[ping,{$POOL_PORT}].last(0)}&lt;&gt;0</expression>
<recovery_mode>0</recovery_mode>
<recovery_expression/>
<name>php-fpm is not running on {HOSTNAME}</name>
<correlation_mode>0</correlation_mode>
<correlation_tag/>
<url/>
<status>1</status>
<priority>4</priority>
<description/>
<type>0</type>
<manual_close>0</manual_close>
<dependencies>
<dependency>
<name>php-fpm process is not running on {HOSTNAME}</name>
<expression>{mdm php-fpm active:proc.num[{$FPM_PROCESS_NAME}].last(0)}&lt;1</expression>
<recovery_expression/>
</dependency>
</dependencies>
<tags/>
</trigger>
<trigger>
<expression>{mdm php-fpm active:php-fpm[idle_processes,{$FPM_URL},{$FPM_PORT}].last(0)}&lt;{$FPM_PROCESS_IDLE_TR}</expression>
<recovery_mode>0</recovery_mode>
<recovery_expression/>
<name>php-fpm number of idle processes is too low on {HOSTNAME}</name>
<correlation_mode>0</correlation_mode>
<correlation_tag/>
<url/>
<status>0</status>
<priority>1</priority>
<description/>
<type>0</type>
<manual_close>0</manual_close>
<dependencies/>
<tags/>
</trigger>
<trigger>
<expression>{mdm php-fpm active:php-fpm[idle_processes,{$FPM_URL},{$FPM_PORT}].nodata(3m)}=1</expression>
<recovery_mode>0</recovery_mode>
<recovery_expression/>
<name>php-fpm number of idle processes nodata &gt; 180s {HOSTNAME}</name>
<correlation_mode>0</correlation_mode>
<correlation_tag/>
<url/>
<status>0</status>
<priority>1</priority>
<description/>
<type>0</type>
<manual_close>0</manual_close>
<dependencies/>
<tags/>
</trigger>
<trigger>
<expression>{mdm php-fpm active:php-fpm[idle_processes,{$FPM_URL},{$FPM_PORT}].last(0)}&lt;{$FPM_PROCESS_IDLE_CR}</expression>
<recovery_mode>0</recovery_mode>
<recovery_expression/>
<name>php-fpm number of idle process is critical on {HOSTNAME}</name>
<correlation_mode>0</correlation_mode>
<correlation_tag/>
<url/>
<status>0</status>
<priority>4</priority>
<description/>
<type>0</type>
<manual_close>0</manual_close>
<dependencies/>
<tags/>
</trigger>
<trigger>
<expression>{mdm php-fpm active:proc.num[{$FPM_PROCESS_NAME}].last(0)}&lt;1</expression>
<recovery_mode>0</recovery_mode>
<recovery_expression/>
<name>php-fpm process is not running on {HOSTNAME}</name>
<correlation_mode>0</correlation_mode>
<correlation_tag/>
<url/>
<status>0</status>
<priority>4</priority>
<description/>
<type>0</type>
<manual_close>0</manual_close>
<dependencies/>
<tags/>
</trigger>
<trigger>
<expression>{mdm php-fpm active:php-fpm[total_processes,{$FPM_URL},{$FPM_PORT}].last()}&gt;{$PHPFPM_MAXPROC}</expression>
<recovery_mode>0</recovery_mode>
<recovery_expression/>
<name>php-fpm total processes is too high on {HOSTNAME}</name>
<correlation_mode>0</correlation_mode>
<correlation_tag/>
<url/>
<status>0</status>
<priority>3</priority>
<description/>
<type>0</type>
<manual_close>0</manual_close>
<dependencies/>
<tags/>
</trigger>
</triggers>
<graphs>
<graph>
<name>php-fpm proccess</name>
<width>600</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>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>2</drawtype>
<color>009900</color>
<yaxisside>0</yaxisside>
<calc_fnc>2</calc_fnc>
<type>0</type>
<item>
<host>mdm php-fpm active</host>
<key>php-fpm[total_processes,{$FPM_URL},{$FPM_PORT}]</key>
</item>
</graph_item>
<graph_item>
<sortorder>1</sortorder>
<drawtype>2</drawtype>
<color>CC0000</color>
<yaxisside>0</yaxisside>
<calc_fnc>2</calc_fnc>
<type>0</type>
<item>
<host>mdm php-fpm active</host>
<key>php-fpm[idle_processes,{$FPM_URL},{$FPM_PORT}]</key>
</item>
</graph_item>
<graph_item>
<sortorder>2</sortorder>
<drawtype>5</drawtype>
<color>0000BB</color>
<yaxisside>0</yaxisside>
<calc_fnc>2</calc_fnc>
<type>0</type>
<item>
<host>mdm php-fpm active</host>
<key>php-fpm[active_processes,{$FPM_URL},{$FPM_PORT}]</key>
</item>
</graph_item>
</graph_items>
</graph>
</graphs>
</zabbix_export>

View File

@ -1,527 +0,0 @@
#!/bin/bash
# ABOUT softether vpn for zabbix
# author mikedmorto 2026 year
export LC_ALL=""
export LANG="en_US.UTF-8"
version="3.3"
. /etc/zabbix/scripts/sevpn3.cfg
JSON=""
##### PARAMETERS#####
METRIC="$1"
ITEM="$2"
API_URL="https://${URL}/api/"
CURL_OPTS="-s -k"
[ "$API_INSECURE" = "1" ] && CURL_OPTS="$CURL_OPTS -k"
api_call() {
local method=$1
local params=$2
[ -z "$params" ] && params="{}"
local id="1"
local data=$(cat <<EOF
{
"jsonrpc": "2.0",
"id": "$id",
"method": "$method",
"params": $params
}
EOF
)
curl $CURL_OPTS -X POST "$API_URL" \
-H "X-VPNADMIN-HUBNAME: " \
-H "X-VPNADMIN-PASSWORD: $PWD" \
-H "Content-Type: application/json" \
-d "$data" 2>/dev/null
}
case "$METRIC" in
discovery)
hubs_json=$(api_call "EnumHub")
# ... проверка ошибок
hubs=$(echo "$hubs_json" | jq -r '.result.HubList[].HubName_str' 2>/dev/null)
JSON='{"data":['
first_hub=1
for hub in $hubs; do
# Добавляем сам хаб
if [ $first_hub -eq 1 ]; then first_hub=0; else JSON="${JSON},"; fi
JSON="${JSON}{\"{#HUB_NAME}\":\"$hub\"}"
# Пользователи хаба
users_json=$(api_call "EnumUser" "{\"HubName_str\":\"$hub\"}")
if ! echo "$users_json" | jq -e '.error' >/dev/null 2>&1; then
users=$(echo "$users_json" | jq -r '.result.UserList[].Name_str' 2>/dev/null)
for user in $users; do
JSON="${JSON},{\"{#HUB_USER_NAME}\":\"$hub,$user\"}"
done
fi
# Каскады хаба
links_json=$(api_call "EnumLink" "{\"HubName_str\":\"$hub\"}")
if ! echo "$links_json" | jq -e '.error' >/dev/null 2>&1; then
links=$(echo "$links_json" | jq -r '.result.LinkList[].AccountName_utf' 2>/dev/null)
for link in $links; do
JSON="${JSON},{\"{#HUB_CASCADE_NAME}\":\"$hub,$link\"}"
done
fi
done
# --- Локальные мосты (один раз после цикла по хабам) ---
bridges_json=$(api_call "EnumLocalBridge")
if ! echo "$bridges_json" | jq -e '.error' >/dev/null 2>&1; then
while IFS= read -r bridge_entry; do
# bridge_entry имеет формат "hub,device"
JSON="${JSON},{\"{#HUB_BRIDGE_NAME}\":\"$bridge_entry\"}"
done < <(echo "$bridges_json" | jq -r '.result.LocalBridgeList[] | "\(.HubNameLB_str),\(.DeviceName_str)"' 2>/dev/null)
fi
JSON="${JSON}]}"
echo "$JSON"
;;
script.version)
echo ${version}
;;
srv.uptime)
resp=$(api_call "GetServerStatus")
# Проверка на ошибку API
if echo "$resp" | jq -e '.error' >/dev/null 2>&1; then
echo 0
exit 1
fi
# Извлекаем дату запуска из поля StartTime_dt
start_date_iso=$(echo "$resp" | jq -r '.result.StartTime_dt' 2>/dev/null)
if [ -z "$start_date_iso" ] || [ "$start_date_iso" = "null" ]; then
echo 0
exit 1
fi
# Преобразуем ISO8601 в timestamp
start_ts=$(date -d "$start_date_iso" +%s 2>/dev/null)
if [ -z "$start_ts" ]; then
echo 0
exit 1
fi
now=$(date +%s)
uptime=$((now - start_ts))
echo "$uptime"
;;
srv.number_of_users)
resp=$(api_call "GetServerStatus")
if echo "$resp" | jq -e '.error' >/dev/null 2>&1; then
echo 0
exit 1
fi
# Извлекаем количество пользователей (поле Users)
users=$(echo "$resp" | jq -r '.result.NumUsers_u32' 2>/dev/null)
# Если поле отсутствует или null, выводим 0
if [ -z "$users" ] || [ "$users" = "null" ]; then
echo 0
else
echo "$users"
fi
;;
srv.number_of_ip_address_tables)
resp=$(api_call "GetServerStatus")
if echo "$resp" | jq -e '.error' >/dev/null 2>&1; then
echo 0
exit 1
fi
echo "$resp" | jq -r '.result.NumIpTables_u32' 2>/dev/null || echo 0
;;
srv.number_of_mac_address_tables)
resp=$(api_call "GetServerStatus")
if echo "$resp" | jq -e '.error' >/dev/null 2>&1; then
echo 0
exit 1
fi
echo "$resp" | jq -r '.result.NumMacTables_u32' 2>/dev/null || echo 0
;;
srv.number_of_sessions)
resp=$(api_call "GetServerStatus")
if echo "$resp" | jq -e '.error' >/dev/null 2>&1; then
echo 0
exit 1
fi
echo "$resp" | jq -r '.result.NumSessionsTotal_u32' 2>/dev/null || echo 0
;;
srv.number_of_virtual_hubs)
resp=$(api_call "GetServerStatus")
if echo "$resp" | jq -e '.error' >/dev/null 2>&1; then
echo 0
exit 1
fi
echo "$resp" | jq -r '.result.NumHubTotal_u32' 2>/dev/null || echo 0
;;
srv.number_of_active_sockets)
resp=$(api_call "GetServerStatus")
if echo "$resp" | jq -e '.error' >/dev/null 2>&1; then
echo 0
exit 1
fi
echo "$resp" | jq -r '.result.NumTcpConnections_u32' 2>/dev/null || echo 0
;;
srv.l2tp_status)
echo `$VCMD /SERVER ${URL} /PASSWORD:${PWD} /CMD IPsecGet | grep "L2TP over IPsec Server Function Enabled" | awk -F"|" '{print $2}'`
;;
srv.openvpn_status)
echo `$VCMD /SERVER ${URL} /PASSWORD:${PWD} /CMD openvpnget | grep "OpenVPN Clone Server Enabled" | awk -F"|" '{print $2}'`
;;
srv.version)
resp=$(api_call "GetServerInfo")
if echo "$resp" | jq -e '.error' >/dev/null 2>&1; then
$VCMD /SERVER ${URL} /PASSWORD:${PWD} /CMD ServerStatusGet | awk 'FNR==3'
else
version=$(echo "$resp" | jq -r '.result.ServerVersionString_str' 2>/dev/null)
[ -n "$version" ] && [ "$version" != "null" ] && echo "$version" || $VCMD /SERVER ${URL} /PASSWORD:${PWD} /CMD ServerStatusGet | awk 'FNR==3'
fi
;;
# hub.if.out.broad
hub.if.out.broad)
resp=$(api_call "GetHubStatus" "{\"HubName_str\":\"$ITEM\"}")
if echo "$resp" | jq -e '.error' >/dev/null 2>&1; then
echo 0
exit 1
fi
val=$(echo "$resp" | jq -r '.result."Send.BroadcastBytes_u64"' 2>/dev/null)
if [ -z "$val" ] || [ "$val" = "null" ]; then
echo 0
else
echo "$val"
fi
;;
# hub.if.in.broad
hub.if.in.broad)
resp=$(api_call "GetHubStatus" "{\"HubName_str\":\"$ITEM\"}")
if echo "$resp" | jq -e '.error' >/dev/null 2>&1; then
echo 0
exit 1
fi
val=$(echo "$resp" | jq -r '.result."Recv.BroadcastBytes_u64"' 2>/dev/null)
if [ -z "$val" ] || [ "$val" = "null" ]; then
echo 0
else
echo "$val"
fi
;;
# hub.if.out.uni
hub.if.out.uni)
resp=$(api_call "GetHubStatus" "{\"HubName_str\":\"$ITEM\"}")
if echo "$resp" | jq -e '.error' >/dev/null 2>&1; then
echo 0
exit 1
fi
val=$(echo "$resp" | jq -r '.result."Send.UnicastBytes_u64"' 2>/dev/null)
if [ -z "$val" ] || [ "$val" = "null" ]; then
echo 0
else
echo "$val"
fi
;;
# hub.if.in.uni
hub.if.in.uni)
resp=$(api_call "GetHubStatus" "{\"HubName_str\":\"$ITEM\"}")
if echo "$resp" | jq -e '.error' >/dev/null 2>&1; then
echo 0
exit 1
fi
val=$(echo "$resp" | jq -r '.result."Recv.UnicastBytes_u64"' 2>/dev/null)
if [ -z "$val" ] || [ "$val" = "null" ]; then
echo 0
else
echo "$val"
fi
;;
# hub.sessions-bridge
hub.sessions-bridge)
resp=$(api_call "GetHubStatus" "{\"HubName_str\":\"$ITEM\"}")
if echo "$resp" | jq -e '.error' >/dev/null 2>&1; then
echo 0
exit 1
fi
val=$(echo "$resp" | jq -r '.result.NumSessionsBridge_u32' 2>/dev/null)
if [ -z "$val" ] || [ "$val" = "null" ]; then
echo 0
else
echo "$val"
fi
;;
# hub.sessions-client
hub.sessions-client)
resp=$(api_call "GetHubStatus" "{\"HubName_str\":\"$ITEM\"}")
if echo "$resp" | jq -e '.error' >/dev/null 2>&1; then
echo 0
exit 1
fi
val=$(echo "$resp" | jq -r '.result.NumSessionsClient_u32' 2>/dev/null)
if [ -z "$val" ] || [ "$val" = "null" ]; then
echo 0
else
echo "$val"
fi
;;
# hub.sessions-all
hub.sessions-all)
resp=$(api_call "GetHubStatus" "{\"HubName_str\":\"$ITEM\"}")
if echo "$resp" | jq -e '.error' >/dev/null 2>&1; then
echo 0
exit 1
fi
val=$(echo "$resp" | jq -r '.result.NumSessions_u32' 2>/dev/null)
if [ -z "$val" ] || [ "$val" = "null" ]; then
echo 0
else
echo "$val"
fi
;;
# hub.securenat
hub.securenat)
resp=$(api_call "GetHubStatus" "{\"HubName_str\":\"$ITEM\"}")
if echo "$resp" | jq -e '.error' >/dev/null 2>&1; then
echo "false"
exit 1
fi
val=$(echo "$resp" | jq -r '.result.SecureNATEnabled_bool' 2>/dev/null)
if [ -z "$val" ] || [ "$val" = "null" ]; then
echo "false"
else
# Приводим к строке true/false (Zabbix ожидает строку)
echo "$val"
fi
;;
# hub.type
hub.type)
resp=$(api_call "GetHubStatus" "{\"HubName_str\":\"$ITEM\"}")
if echo "$resp" | jq -e '.error' >/dev/null 2>&1; then
echo 0
exit 1
fi
val=$(echo "$resp" | jq -r '.result.HubType_u32' 2>/dev/null)
if [ -z "$val" ] || [ "$val" = "null" ]; then
echo 0
else
echo "$val"
fi
;;
cas.status)
HUB=${ITEM%,*}
CAS=${ITEM##*,}
resp=$(api_call "GetLinkStatus" "{\"HubName_Ex_str\":\"$HUB\",\"AccountName_utf\":\"$CAS\"}")
status=$(echo "$resp" | jq -r '.result.Connected_bool' 2>/dev/null)
if [ "$status" = "true" ]; then
echo "Connection Completed (Session Established)"
else
echo "offline"
fi
;;
cas.if.out.broad)
HUB=${ITEM%,*}
CAS=${ITEM##*,}
resp=$(api_call "GetLinkStatus" "{\"HubName_Ex_str\":\"$HUB\",\"AccountName_utf\":\"$CAS\"}")
val=$(echo "$resp" | jq -r '.result."Send.BroadcastBytes_u64"' 2>/dev/null)
echo "${val:-0}"
;;
cas.if.in.broad)
HUB=${ITEM%,*}
CAS=${ITEM##*,}
resp=$(api_call "GetLinkStatus" "{\"HubName_Ex_str\":\"$HUB\",\"AccountName_utf\":\"$CAS\"}")
val=$(echo "$resp" | jq -r '.result."Recv.BroadcastBytes_u64"' 2>/dev/null)
echo "${val:-0}"
;;
cas.if.out)
HUB=${ITEM%,*}
CAS=${ITEM##*,}
resp=$(api_call "GetLinkStatus" "{\"HubName_Ex_str\":\"$HUB\",\"AccountName_utf\":\"$CAS\"}")
val=$(echo "$resp" | jq -r '.result.TotalSendSize_u64' 2>/dev/null)
echo "${val:-0}"
;;
cas.if.in)
HUB=${ITEM%,*}
CAS=${ITEM##*,}
resp=$(api_call "GetLinkStatus" "{\"HubName_Ex_str\":\"$HUB\",\"AccountName_utf\":\"$CAS\"}")
val=$(echo "$resp" | jq -r '.result.TotalRecvSize_u64' 2>/dev/null)
echo "${val:-0}"
;;
cas.if.out.uni)
HUB=${ITEM%,*}
CAS=${ITEM##*,}
resp=$(api_call "GetLinkStatus" "{\"HubName_Ex_str\":\"$HUB\",\"AccountName_utf\":\"$CAS\"}")
val=$(echo "$resp" | jq -r '.result."Send.UnicastBytes_u64"' 2>/dev/null)
echo "${val:-0}"
;;
cas.if.in.uni)
HUB=${ITEM%,*}
CAS=${ITEM##*,}
resp=$(api_call "GetLinkStatus" "{\"HubName_Ex_str\":\"$HUB\",\"AccountName_utf\":\"$CAS\"}")
val=$(echo "$resp" | jq -r '.result."Recv.UnicastBytes_u64"' 2>/dev/null)
echo "${val:-0}"
;;
br.status)
HUB=${ITEM%,*}
BR=${ITEM##*,}
resp=$(api_call "EnumLocalBridge")
online=$(echo "$resp" | jq -r --arg hub "$HUB" --arg br "$BR" '.result.LocalBridgeList[] | select(.HubNameLB_str == $hub and .DeviceName_str == $br) | .Online_bool' 2>/dev/null | head -1)
if [ "$online" = "true" ]; then
echo "Operating"
else
echo "false"
fi
;;
usr.if.out.broad)
HUB=${ITEM%,*}
USER=${ITEM##*,}
resp=$(api_call "GetUser" "{\"HubName_str\":\"$HUB\",\"Name_str\":\"$USER\"}")
if echo "$resp" | jq -e '.error' >/dev/null 2>&1; then
$VCMD /SERVER ${URL} /PASSWORD:${PWD} /adminhub:${HUB} /CMD UserGet ${USER} | grep "Outgoing Broadcast Total Size" | sed -e 's/[^0-9]//g'
else
val=$(echo "$resp" | jq -r '.result."Send.BroadcastBytes_u64"' 2>/dev/null)
echo "${val:-0}"
fi
;;
# usr.if.in.broad
usr.if.in.broad)
HUB=${ITEM%,*}
USER=${ITEM##*,}
resp=$(api_call "GetUser" "{\"HubName_str\":\"$HUB\",\"Name_str\":\"$USER\"}")
if echo "$resp" | jq -e '.error' >/dev/null 2>&1; then
$VCMD /SERVER ${URL} /PASSWORD:${PWD} /adminhub:${HUB} /CMD UserGet ${USER} | grep "Incoming Broadcast Total Size" | sed -e 's/[^0-9]//g'
else
val=$(echo "$resp" | jq -r '.result."Recv.BroadcastBytes_u64"' 2>/dev/null)
echo "${val:-0}"
fi
;;
# usr.if.out.uni
usr.if.out.uni)
HUB=${ITEM%,*}
USER=${ITEM##*,}
resp=$(api_call "GetUser" "{\"HubName_str\":\"$HUB\",\"Name_str\":\"$USER\"}")
if echo "$resp" | jq -e '.error' >/dev/null 2>&1; then
$VCMD /SERVER ${URL} /PASSWORD:${PWD} /adminhub:${HUB} /CMD UserGet ${USER} | grep "Outgoing Unicast Total Size" | sed -e 's/[^0-9]//g'
else
val=$(echo "$resp" | jq -r '.result."Send.UnicastBytes_u64"' 2>/dev/null)
echo "${val:-0}"
fi
;;
# usr.if.in.uni
usr.if.in.uni)
HUB=${ITEM%,*}
USER=${ITEM##*,}
resp=$(api_call "GetUser" "{\"HubName_str\":\"$HUB\",\"Name_str\":\"$USER\"}")
if echo "$resp" | jq -e '.error' >/dev/null 2>&1; then
$VCMD /SERVER ${URL} /PASSWORD:${PWD} /adminhub:${HUB} /CMD UserGet ${USER} | grep "Incoming Unicast Total Size" | sed -e 's/[^0-9]//g'
else
val=$(echo "$resp" | jq -r '.result."Recv.UnicastBytes_u64"' 2>/dev/null)
echo "${val:-0}"
fi
;;
# usr.lastlogin
usr.lastlogin)
HUB=${ITEM%,*}
USER=${ITEM##*,}
resp=$(api_call "GetUser" "{\"HubName_str\":\"$HUB\",\"Name_str\":\"$USER\"}")
if echo "$resp" | jq -e '.error' >/dev/null 2>&1; then
$VCMD /SERVER ${URL} /adminhub:"$HUB" /PASSWORD:"${PWD}" /CMD UserGet "${USER}" | grep "Updated on" | awk -F"|" '{print $2}'
else
updated=$(echo "$resp" | jq -r '.result.UpdatedTime_dt' 2>/dev/null)
if [ -n "$updated" ] && [ "$updated" != "null" ]; then
# Преобразуем ISO дату в timestamp
ts=$(date -d "$updated" +%s 2>/dev/null)
echo "${ts:-0}"
else
echo 0
fi
fi
;;
help)
echo "please use these params
{
discovery
srv.uptime
srv.number_of_users
srv.number_of_ip_address_tables
srv.number_of_mac_address_tables
srv.number_of_sessions
srv.number_of_virtual_hubs
srv.number_of_active_sockets
srv.l2tp_status
srv.openvpn_status
srv.version
hub.if.out.broad
hub.if.in.broad
hub.if.out.uni
hub.if.in.uni
hub.sessions-bridge
hub.sessions-client
hub.sessions-all
hub.securenat
hub.type
cas.status
cas.if.in.broad
cas.if.out.broad
cas.if.out
cas.if.in
cas.if.in.uni
cas.if.out.uni
br.status
usr.lastlogin
usr.if.out.broad
usr.if.in.broad
usr.if.in.uni
usr.if.out.uni
script.version
}"
;;
*)
echo ""
;;
esac

View File

@ -1,306 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>3.4</version>
<date>2021-06-14T11:56:47Z</date>
<groups>
<group>
<name>MDM</name>
</group>
<group>
<name>Templates</name>
</group>
</groups>
<templates>
<template>
<template>mdm_test_backup_active</template>
<name>mdm_test_backup_active</name>
<description/>
<groups>
<group>
<name>MDM</name>
</group>
<group>
<name>Templates</name>
</group>
</groups>
<applications>
<application>
<name>backup</name>
</application>
</applications>
<items>
<item>
<name>test_logfile</name>
<type>7</type>
<snmp_community/>
<snmp_oid/>
<key>test_backup[log]</key>
<delay>30s</delay>
<history>90d</history>
<trends>365d</trends>
<status>0</status>
<value_type>3</value_type>
<allowed_hosts/>
<units/>
<snmpv3_contextname/>
<snmpv3_securityname/>
<snmpv3_securitylevel>0</snmpv3_securitylevel>
<snmpv3_authprotocol>0</snmpv3_authprotocol>
<snmpv3_authpassphrase/>
<snmpv3_privprotocol>0</snmpv3_privprotocol>
<snmpv3_privpassphrase/>
<params/>
<ipmi_sensor/>
<authtype>0</authtype>
<username/>
<password/>
<publickey/>
<privatekey/>
<port/>
<description/>
<inventory_link>0</inventory_link>
<applications>
<application>
<name>backup</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing/>
<jmx_endpoint/>
<master_item/>
</item>
<item>
<name>state</name>
<type>7</type>
<snmp_community/>
<snmp_oid/>
<key>test_backup[state]</key>
<delay>20s</delay>
<history>52w</history>
<trends>0</trends>
<status>0</status>
<value_type>4</value_type>
<allowed_hosts/>
<units/>
<snmpv3_contextname/>
<snmpv3_securityname/>
<snmpv3_securitylevel>0</snmpv3_securitylevel>
<snmpv3_authprotocol>0</snmpv3_authprotocol>
<snmpv3_authpassphrase/>
<snmpv3_privprotocol>0</snmpv3_privprotocol>
<snmpv3_privpassphrase/>
<params/>
<ipmi_sensor/>
<authtype>0</authtype>
<username/>
<password/>
<publickey/>
<privatekey/>
<port/>
<description/>
<inventory_link>0</inventory_link>
<applications>
<application>
<name>backup</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing/>
<jmx_endpoint/>
<master_item/>
</item>
</items>
<discovery_rules/>
<httptests/>
<macros/>
<templates/>
<screens/>
</template>
</templates>
<triggers>
<trigger>
<expression>{mdm_test_backup_active:test_backup[state].nodata(3m)}=1</expression>
<recovery_mode>0</recovery_mode>
<recovery_expression/>
<name>backup: no data</name>
<correlation_mode>0</correlation_mode>
<correlation_tag/>
<url/>
<status>0</status>
<priority>4</priority>
<description/>
<type>0</type>
<manual_close>0</manual_close>
<dependencies/>
<tags/>
</trigger>
<trigger>
<expression>{mdm_test_backup_active:test_backup[state].str(on backup,#1)}=1</expression>
<recovery_mode>0</recovery_mode>
<recovery_expression/>
<name>backup: on backup</name>
<correlation_mode>0</correlation_mode>
<correlation_tag/>
<url/>
<status>0</status>
<priority>1</priority>
<description/>
<type>0</type>
<manual_close>0</manual_close>
<dependencies/>
<tags/>
</trigger>
<trigger>
<expression>{mdm_test_backup_active:test_backup[state].str(on rotation,#1)}=1</expression>
<recovery_mode>0</recovery_mode>
<recovery_expression/>
<name>backup: on rotation</name>
<correlation_mode>0</correlation_mode>
<correlation_tag/>
<url/>
<status>0</status>
<priority>1</priority>
<description/>
<type>0</type>
<manual_close>0</manual_close>
<dependencies/>
<tags/>
</trigger>
<trigger>
<expression>{mdm_test_backup_active:test_backup[state].str(on sending,#1)}=1</expression>
<recovery_mode>0</recovery_mode>
<recovery_expression/>
<name>backup: on sending</name>
<correlation_mode>0</correlation_mode>
<correlation_tag/>
<url/>
<status>0</status>
<priority>1</priority>
<description/>
<type>0</type>
<manual_close>0</manual_close>
<dependencies/>
<tags/>
</trigger>
<trigger>
<expression>{mdm_test_backup_active:test_backup[state].str(starting script,#1)}=1</expression>
<recovery_mode>0</recovery_mode>
<recovery_expression/>
<name>backup: starting</name>
<correlation_mode>0</correlation_mode>
<correlation_tag/>
<url/>
<status>0</status>
<priority>1</priority>
<description/>
<type>0</type>
<manual_close>0</manual_close>
<dependencies/>
<tags/>
</trigger>
<trigger>
<expression>{mdm_test_backup_active:test_backup[state].str(fail,#1)}=1</expression>
<recovery_mode>0</recovery_mode>
<recovery_expression/>
<name>backup: {ITEM.LASTVALUE1}</name>
<correlation_mode>0</correlation_mode>
<correlation_tag/>
<url/>
<status>0</status>
<priority>4</priority>
<description/>
<type>0</type>
<manual_close>0</manual_close>
<dependencies/>
<tags/>
</trigger>
<trigger>
<expression>({mdm_test_backup_active:test_backup[log].last()}&lt;&gt;1 and {mdm_test_backup_active:test_backup[log].time()}&gt;{$BACKUP_ROTATION_TIME})</expression>
<recovery_mode>0</recovery_mode>
<recovery_expression/>
<name>Today, after macro-time, script was not running</name>
<correlation_mode>0</correlation_mode>
<correlation_tag/>
<url/>
<status>0</status>
<priority>3</priority>
<description>отсутствует резервная копия после времени, которое заданно в макросе&#13;
Time format:170200 ( 17 - hours, 02 minutes, 00 seconds)&#13;
Macros name: {$BACKUP_ROTATION_TIME}</description>
<type>0</type>
<manual_close>0</manual_close>
<dependencies>
<dependency>
<name>backup: on backup</name>
<expression>{mdm_test_backup_active:test_backup[state].str(on backup,#1)}=1</expression>
<recovery_expression/>
</dependency>
<dependency>
<name>backup: on rotation</name>
<expression>{mdm_test_backup_active:test_backup[state].str(on rotation,#1)}=1</expression>
<recovery_expression/>
</dependency>
<dependency>
<name>backup: on sending</name>
<expression>{mdm_test_backup_active:test_backup[state].str(on sending,#1)}=1</expression>
<recovery_expression/>
</dependency>
<dependency>
<name>backup: starting</name>
<expression>{mdm_test_backup_active:test_backup[state].str(starting script,#1)}=1</expression>
<recovery_expression/>
</dependency>
<dependency>
<name>backup: {ITEM.LASTVALUE1}</name>
<expression>{mdm_test_backup_active:test_backup[state].str(fail,#1)}=1</expression>
<recovery_expression/>
</dependency>
</dependencies>
<tags/>
</trigger>
<trigger>
<expression>{mdm_test_backup_active:test_backup[log].last()}&lt;&gt;1</expression>
<recovery_mode>0</recovery_mode>
<recovery_expression/>
<name>Today script was not running</name>
<correlation_mode>0</correlation_mode>
<correlation_tag/>
<url/>
<status>1</status>
<priority>3</priority>
<description>отсутствует резервная копия</description>
<type>0</type>
<manual_close>0</manual_close>
<dependencies>
<dependency>
<name>backup: on backup</name>
<expression>{mdm_test_backup_active:test_backup[state].str(on backup,#1)}=1</expression>
<recovery_expression/>
</dependency>
<dependency>
<name>backup: on rotation</name>
<expression>{mdm_test_backup_active:test_backup[state].str(on rotation,#1)}=1</expression>
<recovery_expression/>
</dependency>
<dependency>
<name>backup: on sending</name>
<expression>{mdm_test_backup_active:test_backup[state].str(on sending,#1)}=1</expression>
<recovery_expression/>
</dependency>
<dependency>
<name>backup: starting</name>
<expression>{mdm_test_backup_active:test_backup[state].str(starting script,#1)}=1</expression>
<recovery_expression/>
</dependency>
<dependency>
<name>backup: {ITEM.LASTVALUE1}</name>
<expression>{mdm_test_backup_active:test_backup[state].str(fail,#1)}=1</expression>
<recovery_expression/>
</dependency>
</dependencies>
<tags/>
</trigger>
</triggers>
</zabbix_export>