Zabbix:Yeastar TG SIM卡的LLD监视


几个月前,我购买了Yeastar TG200 GSM网关。 设备本身很好,更不用说定期下蛋的鸡蛋操作员了。 这就是为什么需要具有有关SIM-ok状态的最新信息并响应转储的原因。 问题只是一件事:在该设备中,与整个系列一样,没有SNMP。 但是有一个API(AMI)。 我没有找到一个现成的解决方案,因此我决定将自行车作为一种轮询设备机制,并在此基础上构建所有Zabbix监控器。 为此需要什么:

  • 模式
  • 剧本
  • netcat是nc(预先安装在Ubuntu上)
  • 在设备上启用API

模式


该模板是在4.2版的基础上创建的,但也许可以在早期版本上使用。 最主要的是,您的版本支持对LLD相关元素的预处理。
IMSI,SMS中心,操作员,信号强度,状态和最后操作的开箱即用数据受到监控。 如果愿意,您可以非常简单地创建具有所需转换的另一个原型。 此外,模板中还包含多个触发器,包括SIM卡界面中的删除及其替换。 值得一提的是,仅检测到插入的SIM卡。 在检测过滤器中禁用了此功能(您永远不知道,也许有人需要它)。 当然,脚本必须位于外部脚本中,并且对其他用户具有执行权限。

硬件-Yeastar 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>


剧本


酵母
#!/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


该脚本接收以下参数:
$ 1-发现将检测到的发现或跨度编号
$ 2- {HOST.CONN} -节点地址
$ 3- {$ APIUSER} -API用户名
$ 4- {$ APIPASS} -API密码

发现请求时,该脚本会为JSON提供所有SIM卡,其状态,跨度和数字(为便于阅读,少了一个)。 根据范围的请求,无需检查即可进行分析的完整信息。

因此,为了正确操作,您需要在此模板所连接的每个节点中指定宏{$ APIUSER}和{$ APIPASS}。 如果已经存在这样的宏,只需在模板中将其重命名为{$ TGAPIUSER}和{$ TGAPIPASS}。 如果在所有网关上对API使用相同的密码,请使用全局宏。 我重复一遍,必须激活网关端的API,凭据必须正确。

红利


另外,我将保留一个脚本,用于从Zabbix发送短信。 该脚本必须放在alertscripts文件夹中,并具有执行其他用户的权限。

酵母
#!/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


接下来,转到管理警报方法创建警报方法,然后选择脚本 。 脚本的名称应与文件的名称匹配(在我的情况下,为eastarsms.sh)。 脚本本身接受以下变量(参数):

$ 1-网关的ip或dns
$ 2-API用户名
$ 3-API密码
$ 4-SIM卡端口保持不变(例如1)
$ 5-收件人(我使用{ALERT.SENDTO})
$ 6-消息(我使用{ALERT.SUBJECT})
更改参数顺序时,脚本将不起作用

我将很高兴提出建议和意见。

PS:修改后的触发器,用于更换和移除SIM。 下载模板。

Source: https://habr.com/ru/post/zh-CN454702/


All Articles