Zabbix: LLD-Überwachung von Yeastar TG SIM-Karten


Vor einigen Monaten habe ich ein Yeastar TG200 GSM-Gateway erworben. Die Ausrüstung selbst ist gut, ganz zu schweigen vom Eierbediener, der regelmäßig ein Schwein legt. Aus diesem Grund mussten aktuelle Informationen zum Status von SIM-ok vorliegen und auf Dumps reagiert werden. Das Problem ist nur eines: In diesem Gerät gibt es wie in der gesamten Serie kein SNMP. Es gibt jedoch eine API (AMI). Da ich keine fertige Lösung gefunden habe, habe ich beschlossen, mein Fahrrad zu einem Mechanismus für die Abfrage des Geräts zu machen. Die gesamte Überwachung von Zabbix wird auf dieser Grundlage erfolgen. Was dazu benötigt wird:

  • Muster
  • Skript
  • netcat ist nc (unter Ubuntu vorinstalliert)
  • API auf dem Gerät aktivieren

Muster


Die Vorlage wurde auf der Basis von Version 4.2 erstellt, funktioniert jedoch möglicherweise mit früheren Versionen. Die Hauptsache ist, dass Ihre Version die Vorverarbeitung von LLD-abhängigen Elementen unterstützt.
Sofort einsatzbereite Daten zu IMSI, SMS-Center, Bediener, Signalstärke, Status und letzter Aktion werden überwacht. Wenn Sie möchten, können Sie ganz einfach einen weiteren Prototyp mit der gewünschten Konvertierung erstellen. Auch in der Vorlage gibt es mehrere Auslöser, einschließlich eines Abfalls in der SIM-Schnittstelle und deren Ersetzung. Erwähnenswert ist, dass nur eingelegte SIM-Karten erkannt werden. Dies ist in den Erkennungsfiltern deaktiviert (Sie wissen nie, vielleicht braucht es jemand). Natürlich muss das Skript in externen Skripten liegen und Ausführungsrechte für andere Benutzer haben.

Hardware - Hefe TG.xml
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>4.2</version>
<date>2019-06-04T19:58:15Z</date>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<templates>
<template>
<template>Hardware - Yeastar TG</template>
<name>Hardware - Yeastar TG</name>
<description> SIM- Yeastar TG.&#13;
yeastar.sh&#13;
:&#13;
{$APIUSER} - API&#13;
{$APIPASS} - API&#13;
.</description>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<applications>
<application>
<name>SIM</name>
</application>
</applications>
<items/>
<discovery_rules>
<discovery_rule>
<name>SIM-</name>
<type>10</type>
<snmp_community/>
<snmp_oid/>
<key>yeastarsim.sh[discovery,{HOST.CONN},{$APIUSER},{$APIPASS}]</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>1</evaltype>
<formula/>
<conditions>
<condition>
<macro>{#POWER}</macro>
<value>Power on</value>
<operator>8</operator>
<formulaid>A</formulaid>
</condition>
<condition>
<macro>{#STATUS}</macro>
<value>Undetected SIM Card</value>
<operator>9</operator>
<formulaid>B</formulaid>
</condition>
</conditions>
</filter>
<lifetime>3d</lifetime>
<description/>
<item_prototypes>
<item_prototype>
<name>SIM{#NUM} - IMSI</name>
<type>18</type>
<snmp_community/>
<snmp_oid/>
<key>hardware.yeastar.sim.imsi[{#ID}]</key>
<delay>0</delay>
<history>7d</history>
<trends>0</trends>
<status>0</status>
<value_type>1</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>SIM</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing>
<step>
<type>5</type>
<params>SIM IMSI: (.*)
\1</params>
<error_handler>0</error_handler>
<error_handler_params/>
</step>
</preprocessing>
<jmx_endpoint/>
<timeout>3s</timeout>
<url/>
<query_fields/>
<posts/>
<status_codes>200</status_codes>
<follow_redirects>1</follow_redirects>
<post_type>0</post_type>
<http_proxy/>
<headers/>
<retrieve_mode>0</retrieve_mode>
<request_method>0</request_method>
<output_format>0</output_format>
<allow_traps>0</allow_traps>
<ssl_cert_file/>
<ssl_key_file/>
<ssl_key_password/>
<verify_peer>0</verify_peer>
<verify_host>0</verify_host>
<application_prototypes/>
<master_item>
<key>yeastarsim.sh[{#ID},{HOST.CONN},{$APIUSER},{$APIPASS}]</key>
</master_item>
</item_prototype>
<item_prototype>
<name>SIM{#NUM} - </name>
<type>18</type>
<snmp_community/>
<snmp_oid/>
<key>hardware.yeastar.sim.last[{#ID}]</key>
<delay>0</delay>
<history>7d</history>
<trends>0</trends>
<status>0</status>
<value_type>1</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>SIM</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing>
<step>
<type>5</type>
<params>Last event: (.*)
\1</params>
<error_handler>0</error_handler>
<error_handler_params/>
</step>
</preprocessing>
<jmx_endpoint/>
<timeout>3s</timeout>
<url/>
<query_fields/>
<posts/>
<status_codes>200</status_codes>
<follow_redirects>1</follow_redirects>
<post_type>0</post_type>
<http_proxy/>
<headers/>
<retrieve_mode>0</retrieve_mode>
<request_method>0</request_method>
<output_format>0</output_format>
<allow_traps>0</allow_traps>
<ssl_cert_file/>
<ssl_key_file/>
<ssl_key_password/>
<verify_peer>0</verify_peer>
<verify_host>0</verify_host>
<application_prototypes/>
<master_item>
<key>yeastarsim.sh[{#ID},{HOST.CONN},{$APIUSER},{$APIPASS}]</key>
</master_item>
</item_prototype>
<item_prototype>
<name>SIM{#NUM} - </name>
<type>18</type>
<snmp_community/>
<snmp_oid/>
<key>hardware.yeastar.sim.networkstatus[{#ID}]</key>
<delay>0</delay>
<history>7d</history>
<trends>0</trends>
<status>0</status>
<value_type>1</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>SIM</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing>
<step>
<type>5</type>
<params>Network Status: (.*)
\1</params>
<error_handler>0</error_handler>
<error_handler_params/>
</step>
</preprocessing>
<jmx_endpoint/>
<timeout>3s</timeout>
<url/>
<query_fields/>
<posts/>
<status_codes>200</status_codes>
<follow_redirects>1</follow_redirects>
<post_type>0</post_type>
<http_proxy/>
<headers/>
<retrieve_mode>0</retrieve_mode>
<request_method>0</request_method>
<output_format>0</output_format>
<allow_traps>0</allow_traps>
<ssl_cert_file/>
<ssl_key_file/>
<ssl_key_password/>
<verify_peer>0</verify_peer>
<verify_host>0</verify_host>
<application_prototypes/>
<master_item>
<key>yeastarsim.sh[{#ID},{HOST.CONN},{$APIUSER},{$APIPASS}]</key>
</master_item>
</item_prototype>
<item_prototype>
<name>SIM{#NUM} - </name>
<type>18</type>
<snmp_community/>
<snmp_oid/>
<key>hardware.yeastar.sim.operator[{#ID}]</key>
<delay>0</delay>
<history>7d</history>
<trends>0</trends>
<status>0</status>
<value_type>1</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>SIM</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing>
<step>
<type>5</type>
<params>Network Name: (.*)
\1</params>
<error_handler>0</error_handler>
<error_handler_params/>
</step>
</preprocessing>
<jmx_endpoint/>
<timeout>3s</timeout>
<url/>
<query_fields/>
<posts/>
<status_codes>200</status_codes>
<follow_redirects>1</follow_redirects>
<post_type>0</post_type>
<http_proxy/>
<headers/>
<retrieve_mode>0</retrieve_mode>
<request_method>0</request_method>
<output_format>0</output_format>
<allow_traps>0</allow_traps>
<ssl_cert_file/>
<ssl_key_file/>
<ssl_key_password/>
<verify_peer>0</verify_peer>
<verify_host>0</verify_host>
<application_prototypes/>
<master_item>
<key>yeastarsim.sh[{#ID},{HOST.CONN},{$APIUSER},{$APIPASS}]</key>
</master_item>
</item_prototype>
<item_prototype>
<name>SIM{#NUM} - </name>
<type>18</type>
<snmp_community/>
<snmp_oid/>
<key>hardware.yeastar.sim.signal[{#ID}]</key>
<delay>0</delay>
<history>7d</history>
<trends>30d</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>SIM</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing>
<step>
<type>5</type>
<params>Signal Quality \(0,31\): (.*)
\1</params>
<error_handler>0</error_handler>
<error_handler_params/>
</step>
</preprocessing>
<jmx_endpoint/>
<timeout>3s</timeout>
<url/>
<query_fields/>
<posts/>
<status_codes>200</status_codes>
<follow_redirects>1</follow_redirects>
<post_type>0</post_type>
<http_proxy/>
<headers/>
<retrieve_mode>0</retrieve_mode>
<request_method>0</request_method>
<output_format>0</output_format>
<allow_traps>0</allow_traps>
<ssl_cert_file/>
<ssl_key_file/>
<ssl_key_password/>
<verify_peer>0</verify_peer>
<verify_host>0</verify_host>
<application_prototypes/>
<master_item>
<key>yeastarsim.sh[{#ID},{HOST.CONN},{$APIUSER},{$APIPASS}]</key>
</master_item>
</item_prototype>
<item_prototype>
<name>SIM{#NUM} - SMS-</name>
<type>18</type>
<snmp_community/>
<snmp_oid/>
<key>hardware.yeastar.sim.smscenter[{#ID}]</key>
<delay>0</delay>
<history>7d</history>
<trends>0</trends>
<status>0</status>
<value_type>1</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>SIM</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing>
<step>
<type>5</type>
<params>SIM SMS Center Number: (.*)
\1</params>
<error_handler>0</error_handler>
<error_handler_params/>
</step>
</preprocessing>
<jmx_endpoint/>
<timeout>3s</timeout>
<url/>
<query_fields/>
<posts/>
<status_codes>200</status_codes>
<follow_redirects>1</follow_redirects>
<post_type>0</post_type>
<http_proxy/>
<headers/>
<retrieve_mode>0</retrieve_mode>
<request_method>0</request_method>
<output_format>0</output_format>
<allow_traps>0</allow_traps>
<ssl_cert_file/>
<ssl_key_file/>
<ssl_key_password/>
<verify_peer>0</verify_peer>
<verify_host>0</verify_host>
<application_prototypes/>
<master_item>
<key>yeastarsim.sh[{#ID},{HOST.CONN},{$APIUSER},{$APIPASS}]</key>
</master_item>
</item_prototype>
<item_prototype>
<name>SIM{#NUM} - </name>
<type>18</type>
<snmp_community/>
<snmp_oid/>
<key>hardware.yeastar.sim.state[{#ID}]</key>
<delay>0</delay>
<history>7d</history>
<trends>0</trends>
<status>0</status>
<value_type>1</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>SIM</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing>
<step>
<type>5</type>
<params>State: (.*)
\1</params>
<error_handler>0</error_handler>
<error_handler_params/>
</step>
</preprocessing>
<jmx_endpoint/>
<timeout>3s</timeout>
<url/>
<query_fields/>
<posts/>
<status_codes>200</status_codes>
<follow_redirects>1</follow_redirects>
<post_type>0</post_type>
<http_proxy/>
<headers/>
<retrieve_mode>0</retrieve_mode>
<request_method>0</request_method>
<output_format>0</output_format>
<allow_traps>0</allow_traps>
<ssl_cert_file/>
<ssl_key_file/>
<ssl_key_password/>
<verify_peer>0</verify_peer>
<verify_host>0</verify_host>
<application_prototypes/>
<master_item>
<key>yeastarsim.sh[{#ID},{HOST.CONN},{$APIUSER},{$APIPASS}]</key>
</master_item>
</item_prototype>
<item_prototype>
<name>SIM{#NUM} - </name>
<type>18</type>
<snmp_community/>
<snmp_oid/>
<key>hardware.yeastar.sim.status[{#ID}]</key>
<delay>0</delay>
<history>7d</history>
<trends>0</trends>
<status>0</status>
<value_type>1</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>SIM</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing>
<step>
<type>5</type>
<params>Status: .*, (.*), .*, .*
\1</params>
<error_handler>0</error_handler>
<error_handler_params/>
</step>
</preprocessing>
<jmx_endpoint/>
<timeout>3s</timeout>
<url/>
<query_fields/>
<posts/>
<status_codes>200</status_codes>
<follow_redirects>1</follow_redirects>
<post_type>0</post_type>
<http_proxy/>
<headers/>
<retrieve_mode>0</retrieve_mode>
<request_method>0</request_method>
<output_format>0</output_format>
<allow_traps>0</allow_traps>
<ssl_cert_file/>
<ssl_key_file/>
<ssl_key_password/>
<verify_peer>0</verify_peer>
<verify_host>0</verify_host>
<application_prototypes/>
<master_item>
<key>yeastarsim.sh[{#ID},{HOST.CONN},{$APIUSER},{$APIPASS}]</key>
</master_item>
</item_prototype>
<item_prototype>
<name>SIM{#NUM} - Parsing</name>
<type>10</type>
<snmp_community/>
<snmp_oid/>
<key>yeastarsim.sh[{#ID},{HOST.CONN},{$APIUSER},{$APIPASS}]</key>
<delay>2m</delay>
<history>1h</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>SIM</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing/>
<jmx_endpoint/>
<timeout>3s</timeout>
<url/>
<query_fields/>
<posts/>
<status_codes>200</status_codes>
<follow_redirects>1</follow_redirects>
<post_type>0</post_type>
<http_proxy/>
<headers/>
<retrieve_mode>0</retrieve_mode>
<request_method>0</request_method>
<output_format>0</output_format>
<allow_traps>0</allow_traps>
<ssl_cert_file/>
<ssl_key_file/>
<ssl_key_password/>
<verify_peer>0</verify_peer>
<verify_host>0</verify_host>
<application_prototypes/>
<master_item/>
</item_prototype>
</item_prototypes>
<trigger_prototypes>
<trigger_prototype>
<expression>{Hardware - Yeastar TG:hardware.yeastar.sim.imsi[{#ID}].diff()}=1 and {Hardware - Yeastar TG:hardware.yeastar.sim.status[{#ID}].regexp(Undetected SIM Card)}=0</expression>
<recovery_mode>0</recovery_mode>
<recovery_expression/>
<name> SIM{#NUM} {HOST.NAME}</name>
<correlation_mode>0</correlation_mode>
<correlation_tag/>
<url/>
<status>0</status>
<priority>2</priority>
<description/>
<type>0</type>
<manual_close>1</manual_close>
<dependencies/>
<tags/>
</trigger_prototype>
<trigger_prototype>
<expression>{Hardware - Yeastar TG:hardware.yeastar.sim.status[{#ID}].regexp(Undetected SIM Card)}=1</expression>
<recovery_mode>0</recovery_mode>
<recovery_expression/>
<name> SIM{#NUM} {HOST.NAME}</name>
<correlation_mode>0</correlation_mode>
<correlation_tag/>
<url/>
<status>0</status>
<priority>3</priority>
<description/>
<type>0</type>
<manual_close>1</manual_close>
<dependencies/>
<tags/>
</trigger_prototype>
<trigger_prototype>
<expression>{Hardware - Yeastar TG:hardware.yeastar.sim.state[{#ID}].regexp(SIM PIN REQ,#2)}=1</expression>
<recovery_mode>0</recovery_mode>
<recovery_expression/>
<name> PIN SIM{#NUM} {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_prototype>
<trigger_prototype>
<expression>{Hardware - Yeastar TG:hardware.yeastar.sim.smscenter[{#ID}].regexp(.*,#2)}=0</expression>
<recovery_mode>0</recovery_mode>
<recovery_expression/>
<name> SMS- SIM{#NUM} {HOST.NAME}</name>
<correlation_mode>0</correlation_mode>
<correlation_tag/>
<url/>
<status>0</status>
<priority>2</priority>
<description/>
<type>0</type>
<manual_close>1</manual_close>
<dependencies/>
<tags/>
</trigger_prototype>
<trigger_prototype>
<expression>{Hardware - Yeastar TG:hardware.yeastar.sim.signal[{#ID}].avg(#3)}&lt;9</expression>
<recovery_mode>0</recovery_mode>
<recovery_expression/>
<name> SIM{#NUM} {HOST.NAME}</name>
<correlation_mode>0</correlation_mode>
<correlation_tag/>
<url/>
<status>0</status>
<priority>1</priority>
<description/>
<type>0</type>
<manual_close>1</manual_close>
<dependencies/>
<tags/>
</trigger_prototype>
<trigger_prototype>
<expression>{Hardware - Yeastar TG:hardware.yeastar.sim.status[{#ID}].regexp(Down,#2)}=1</expression>
<recovery_mode>0</recovery_mode>
<recovery_expression/>
<name> SIM{#NUM} {HOST.NAME}</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>
<graph_prototype>
<name> SIM{#NUM}</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>2</drawtype>
<color>1A7C11</color>
<yaxisside>0</yaxisside>
<calc_fnc>7</calc_fnc>
<type>0</type>
<item>
<host>Hardware - Yeastar TG</host>
<key>hardware.yeastar.sim.signal[{#ID}]</key>
</item>
</graph_item>
</graph_items>
</graph_prototype>
</graph_prototypes>
<host_prototypes/>
<jmx_endpoint/>
<timeout>3s</timeout>
<url/>
<query_fields/>
<posts/>
<status_codes>200</status_codes>
<follow_redirects>1</follow_redirects>
<post_type>0</post_type>
<http_proxy/>
<headers/>
<retrieve_mode>0</retrieve_mode>
<request_method>0</request_method>
<allow_traps>0</allow_traps>
<ssl_cert_file/>
<ssl_key_file/>
<ssl_key_password/>
<verify_peer>0</verify_peer>
<verify_host>0</verify_host>
<lld_macro_paths/>
<preprocessing/>
<master_item/>
</discovery_rule>
</discovery_rules>
<httptests/>
<macros/>
<templates/>
<screens/>
<tags/>
</template>
</templates>
</zabbix_export>


Skript


hefearsim.sh
#!/bin/bash
# 2019/05/24 AcidVenom v1.0
# LLD- SIM- API Yeastar Zabbix
# : $discovery_2_3_etc $IP $APIUSER $APIPASS
# SIM-
# - discovery
IFS=$'\n'
JSON="{\"data\":["
SEP=""
if [[ $1 = "discovery" ]]
then
get=`echo -e "Action: Login\nUsername: $3\nSecret: $4\n\nAction: smscommand\nCommand: gsm show spans\n\nAction: Logoff\n\n" | nc $2 5038 | grep "span [0-9]*:"`
for pool in $get
do
id=`echo $pool | sed "s/.* span //g" | sed "s/:.*//g"`
num=$(($id-1))
power=`echo $pool | grep "span [0-9]*:" | sed "s/.*: //g" | sed "s/,.*//g"`
status=`echo $pool | grep "span [0-9]*:" | sed "s/.*: //g" | sed "s/^.*, \(.*\), .*, .*/\1/g"`
JSON=$JSON"$SEP{\"{#ID}\":\"$id\", \"{#NUM}\":\"$num\", \"{#POWER}\":\"$power\", \"{#STATUS}\":\"$status\"}"
SEP=", "
done
JSON=$JSON"]}"
echo $JSON
# SIM-
# - discovery ("2", "3" ..)
else
echo -e "Action: Login\nUsername: $3\nSecret: $4\n\nAction: smscommand\nCommand: gsm show span $1\n\nAction: Logoff\n\n" | nc $2 5038
fi
view raw yeastarsim.sh hosted with ❤ by GitHub


Das Skript empfängt die folgenden Parameter:
$ 1 - Erkennung oder Bereichsnummer, die von der Erkennung erkannt wird
$ 2 - {HOST.CONN} - Knotenadresse
$ 3 - {$ APIUSER} - API-Benutzername
$ 4 - {$ APIPASS} - API-Passwort

Bei der Erkennungsanforderung gibt das Skript JSON alle SIM-Karten, deren Status, Bereiche und Nummern an (eine aus Gründen der Lesbarkeit weniger). Auf Wunsch der Spanne vollständige Informationen ohne Zensur zum Parsen.

Für einen korrekten Betrieb müssen Sie daher die Makros {$ APIUSER} und {$ APIPASS} in jedem Knoten angeben, an den diese Vorlage angehängt ist. Wenn solche Makros bereits vorhanden sind, benennen Sie sie einfach in der Vorlage um, z. B. in {$ TGAPIUSER} und {$ TGAPIPASS}. Wenn Sie auf allen Gateways dieselben Kennwörter für die API verwenden, verwenden Sie globale Makros. Ich wiederhole, die API auf der Gateway-Seite muss aktiviert sein, die Anmeldeinformationen müssen korrekt sein.

Bonus


Als Bonus hinterlasse ich ein Skript zum Senden von SMS von Zabbix. Das Skript muss im Ordner alertscripts abgelegt und mit der Berechtigung zur Ausführung für andere Benutzer versehen werden.

hefarsms.sh
#!/bin/bash
# AcidVenom 2019/05/20 v1.0
# SMS API Yeastar
# : $IP $APIUSER $APIPASS $SPAN $PHONE $MESSAGE
span=$(($4+1))
# SMS
echo -e "Action: Login\nUsername: $2\nSecret: $3\n\nAction: smscommand\nCommand: gsm send sms $span $5 \"$6\"\n\nAction: Logoff\n\n" | nc $1 5038
view raw yeastarsms.sh hosted with ❤ by GitHub


Gehen Sie als Nächstes zu AdministrationWarnmethodenErstellen einer Warnmethode und wählen Sie Skript . Der Name des Skripts sollte mit dem Namen der Datei übereinstimmen (in meinem Fall hevesarsms.sh). Das Skript selbst akzeptiert die folgenden Variablen (Parameter):

$ 1 - IP oder DNS des Gateways
$ 2 - API-Benutzername
$ 3 - API-Passwort
$ 4 - SIM-Port wie er ist (zum Beispiel 1)
$ 5 - der Empfänger (ich benutze {ALERT.SENDTO})
$ 6 - Nachricht (ich benutze {ALERT.SUBJECT})
Wenn Sie die Reihenfolge der Parameter ändern, funktioniert das Skript nicht .

Ich freue mich über Vorschläge und Kommentare.

PS: Geänderte Trigger für das Ersetzen und Entfernen der SIM-Karte. Laden Sie die Vorlage herunter.

Source: https://habr.com/ru/post/de454702/


All Articles