#cat zk_status.sh #放在externalscripts路徑下,zabbix用戶可執行express
#!/bin/bash ip=$1 port=$2 check=$3 if [ $check == "Received" ] || [ $check == "Sent" ] || [ $check == "Connections" ] || [ $check == "Mode" ] then res=`echo stat|nc $ip $port|grep ^"$check:"` if [ $? == "0" ] then echo $res|awk -F" " '{print $2}' else echo "get $3 from $1:$2 failed." &&exit 1 fi elif [ $check == "ruok" ] then res=`echo ruok|nc $ip $port` if [ $? == "0" ] then echo $res #echo "" else echo "check zookeeper ruok error." &&exit 1 fi elif [ $check == "Nodecount" ] then res=`echo stat|nc $ip $port|grep ^"Node count:"` if [ $? == "0" ] then echo $res|awk -F" " '{print $3}' else echo "get $3 from $1:$2 failed." &&exit 1 fi else echo "not support $check."&&exit 1 fi
導出模板的xmlbash
<?xml version="1.0" encoding="UTF-8"?> <zabbix_export> <version>2.0</version> <date>2016-04-01T08:24:12Z</date> <groups> <group> <name>Templates</name> </group> </groups> <templates> <template> <template>template zookeeper</template> <name>template zookeeper</name> <description/> <groups> <group> <name>Templates</name> </group> </groups> <applications> <application> <name>zookeeper</name> </application> </applications> <items> <item> <name>zookeeper $1 Mode</name> <type>10</type> <snmp_community/> <multiplier>0</multiplier> <snmp_oid/> <key>zk_status.sh[{IPADDRESS},2181, Mode]</key> <delay>60</delay> <history>90</history> <trends>365</trends> <status>0</status> <value_type>4</value_type> <allowed_hosts/> <units/> <delta>0</delta> <snmpv3_contextname/> <snmpv3_securityname/> <snmpv3_securitylevel>0</snmpv3_securitylevel> <snmpv3_authprotocol>0</snmpv3_authprotocol> <snmpv3_authpassphrase/> <snmpv3_privprotocol>0</snmpv3_privprotocol> <snmpv3_privpassphrase/> <formula>1</formula> <delay_flex/> <params/> <ipmi_sensor/> <data_type>0</data_type> <authtype>0</authtype> <username/> <password/> <publickey/> <privatekey/> <port/> <description/> <inventory_link>0</inventory_link> <applications> <application> <name>zookeeper</name> </application> </applications> <valuemap/> <logtimefmt/> </item> <item> <name>zookeeper $1 Node count</name> <type>10</type> <snmp_community/> <multiplier>0</multiplier> <snmp_oid/> <key>zk_status.sh[{IPADDRESS},2181, Nodecount]</key> <delay>60</delay> <history>90</history> <trends>365</trends> <status>0</status> <value_type>3</value_type> <allowed_hosts/> <units/> <delta>0</delta> <snmpv3_contextname/> <snmpv3_securityname/> <snmpv3_securitylevel>0</snmpv3_securitylevel> <snmpv3_authprotocol>0</snmpv3_authprotocol> <snmpv3_authpassphrase/> <snmpv3_privprotocol>0</snmpv3_privprotocol> <snmpv3_privpassphrase/> <formula>1</formula> <delay_flex/> <params/> <ipmi_sensor/> <data_type>0</data_type> <authtype>0</authtype> <username/> <password/> <publickey/> <privatekey/> <port/> <description/> <inventory_link>0</inventory_link> <applications> <application> <name>zookeeper</name> </application> </applications> <valuemap/> <logtimefmt/> </item> <item> <name>zookeeper $1 Received</name> <type>10</type> <snmp_community/> <multiplier>0</multiplier> <snmp_oid/> <key>zk_status.sh[{IPADDRESS},2181, Received]</key> <delay>60</delay> <history>90</history> <trends>365</trends> <status>0</status> <value_type>3</value_type> <allowed_hosts/> <units/> <delta>0</delta> <snmpv3_contextname/> <snmpv3_securityname/> <snmpv3_securitylevel>0</snmpv3_securitylevel> <snmpv3_authprotocol>0</snmpv3_authprotocol> <snmpv3_authpassphrase/> <snmpv3_privprotocol>0</snmpv3_privprotocol> <snmpv3_privpassphrase/> <formula>1</formula> <delay_flex/> <params/> <ipmi_sensor/> <data_type>0</data_type> <authtype>0</authtype> <username/> <password/> <publickey/> <privatekey/> <port/> <description/> <inventory_link>0</inventory_link> <applications> <application> <name>zookeeper</name> </application> </applications> <valuemap/> <logtimefmt/> </item> <item> <name>zookeeper $1 ruok</name> <type>10</type> <snmp_community/> <multiplier>0</multiplier> <snmp_oid/> <key>zk_status.sh[{IPADDRESS},2181,ruok]</key> <delay>60</delay> <history>90</history> <trends>365</trends> <status>0</status> <value_type>4</value_type> <allowed_hosts/> <units/> <delta>0</delta> <snmpv3_contextname/> <snmpv3_securityname/> <snmpv3_securitylevel>0</snmpv3_securitylevel> <snmpv3_authprotocol>0</snmpv3_authprotocol> <snmpv3_authpassphrase/> <snmpv3_privprotocol>0</snmpv3_privprotocol> <snmpv3_privpassphrase/> <formula>1</formula> <delay_flex/> <params/> <ipmi_sensor/> <data_type>0</data_type> <authtype>0</authtype> <username/> <password/> <publickey/> <privatekey/> <port/> <description/> <inventory_link>0</inventory_link> <applications> <application> <name>zookeeper</name> </application> </applications> <valuemap/> <logtimefmt/> </item> <item> <name>zookeeper $1 Sent</name> <type>10</type> <snmp_community/> <multiplier>0</multiplier> <snmp_oid/> <key>zk_status.sh[{IPADDRESS},2181, Sent]</key> <delay>60</delay> <history>90</history> <trends>365</trends> <status>0</status> <value_type>3</value_type> <allowed_hosts/> <units/> <delta>0</delta> <snmpv3_contextname/> <snmpv3_securityname/> <snmpv3_securitylevel>0</snmpv3_securitylevel> <snmpv3_authprotocol>0</snmpv3_authprotocol> <snmpv3_authpassphrase/> <snmpv3_privprotocol>0</snmpv3_privprotocol> <snmpv3_privpassphrase/> <formula>1</formula> <delay_flex/> <params/> <ipmi_sensor/> <data_type>0</data_type> <authtype>0</authtype> <username/> <password/> <publickey/> <privatekey/> <port/> <description/> <inventory_link>0</inventory_link> <applications> <application> <name>zookeeper</name> </application> </applications> <valuemap/> <logtimefmt/> </item> <item> <name>zookeeper server $2 port 2181</name> <type>3</type> <snmp_community/> <multiplier>0</multiplier> <snmp_oid/> <key>net.tcp.service[tcp,{IPADDRESS},2181]</key> <delay>60</delay> <history>90</history> <trends>365</trends> <status>0</status> <value_type>3</value_type> <allowed_hosts/> <units/> <delta>0</delta> <snmpv3_contextname/> <snmpv3_securityname/> <snmpv3_securitylevel>0</snmpv3_securitylevel> <snmpv3_authprotocol>0</snmpv3_authprotocol> <snmpv3_authpassphrase/> <snmpv3_privprotocol>0</snmpv3_privprotocol> <snmpv3_privpassphrase/> <formula>1</formula> <delay_flex/> <params/> <ipmi_sensor/> <data_type>0</data_type> <authtype>0</authtype> <username/> <password/> <publickey/> <privatekey/> <port/> <description/> <inventory_link>0</inventory_link> <applications> <application> <name>zookeeper</name> </application> </applications> <valuemap/> <logtimefmt/> </item> <item> <name>zookeeper server $2 port 3888</name> <type>3</type> <snmp_community/> <multiplier>0</multiplier> <snmp_oid/> <key>net.tcp.service[tcp,{IPADDRESS},3888]</key> <delay>60</delay> <history>90</history> <trends>365</trends> <status>0</status> <value_type>3</value_type> <allowed_hosts/> <units/> <delta>0</delta> <snmpv3_contextname/> <snmpv3_securityname/> <snmpv3_securitylevel>0</snmpv3_securitylevel> <snmpv3_authprotocol>0</snmpv3_authprotocol> <snmpv3_authpassphrase/> <snmpv3_privprotocol>0</snmpv3_privprotocol> <snmpv3_privpassphrase/> <formula>1</formula> <delay_flex/> <params/> <ipmi_sensor/> <data_type>0</data_type> <authtype>0</authtype> <username/> <password/> <publickey/> <privatekey/> <port/> <description/> <inventory_link>0</inventory_link> <applications> <application> <name>zookeeper</name> </application> </applications> <valuemap/> <logtimefmt/> </item> </items> <discovery_rules/> <macros/> <templates/> <screens/> </template> </templates> <triggers> <trigger> <expression>{template zookeeper:net.tcp.service[tcp,{IPADDRESS},2181].last(#1)}<>1</expression> <name>zookeeper {IPADDRESS} check port 2181 failed</name> <url/> <status>0</status> <priority>3</priority> <description/> <type>0</type> <dependencies/> </trigger> <trigger> <expression>{template zookeeper:net.tcp.service[tcp,{IPADDRESS},3888].last(#1)}<>1</expression> <name>zookeeper {IPADDRESS} check port 3888 failed</name> <url/> <status>0</status> <priority>3</priority> <description/> <type>0</type> <dependencies/> </trigger> <trigger> <expression>{template zookeeper:zk_status.sh[{IPADDRESS},2181, Mode].str(follower,#2)}=0 and {template zookeeper:zk_status.sh[{IPADDRESS},2181, Mode].str(leader,#2)}=0</expression> <name>zookeeper {IPADDRESS} is not leader or follower</name> <url/> <status>0</status> <priority>4</priority> <description/> <type>0</type> <dependencies/> </trigger> <trigger> <expression>{template zookeeper:zk_status.sh[{IPADDRESS},2181,ruok].str(imok,#2)}=0</expression> <name>zookeeper {IPADDRESS} is not ok</name> <url/> <status>0</status> <priority>3</priority> <description/> <type>0</type> <dependencies/> </trigger> </triggers> </zabbix_export>