Environment
- Zabbix server 4.0.1
- 監視 target: Windows Server 2016
Requirement
Zabbix で障害状態になった場合, 自動復旧させる.
PreRequire
監視 target の server における zabbix_agentd.conf で EnableRemoteCommands=1
を指定しておく.
Process
監視 item と監視 trigger を作成する.
# 監視 item の例 <items> <item> <name>Check-Login</name> <type>10</type> <snmp_community/> <snmp_oid/> <key>check_login[-h,{HOST.DNS},-u,{$KANSHI_USER},-p,{$KANSHI_PASS}]</key> <delay>1m</delay> <history>7d</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/> <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> <master_item/> </item> </items>
# 1min 間隔の監視で 5min の内 2回 `CRITICAL` の結果が出た場合 trigger を kick <triggers> <trigger> <expression>{template_sample:check_login[-h,{HOST.DNS},-u,{$KANSHI_USER},-p,{$KANSHI_PASS}].count(5m, CRITICAL)}>2</expression> <recovery_mode>1</recovery_mode> <recovery_expression>{template_sample:check_login[-h,{HOST.DNS},-u,{$KANSHI_USER},-p,{$KANSHI_PASS}].iregexp(OK)}<>0</recovery_expression> <name>Check-Login_{HOST.DNS}_CRITICAL</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>
Zabbix Action を作成する.
復旧方法の例として IIS DefaultAppPool の recycle を行うこととする.
powershell.exe -command "Start-WebAppPool DefaultAppPool"
動作確認
- [x] 障害状態になった場合 Trigger が kick されること.
- [x] Zabbix Action 経由で Remote Command が実行されること.
- [x] Zabbix Agent 経由で recycle が行われること.