2015年9月16日水曜日

Zabbix のカスタムスクリプトで Redis を自動で再起動させてみた

概要

Redis を監視してダウンしたら自動で起動するようにしてみました
カスタムスクリプトの使い方のおさらいもしたのでメモしておきます

環境

  • CentOS 6.6 64bit
  • Zabbix 2.4.5
  • Redis 3.0.2-1

各種インストール方法

アイテムおよびトリガーの作成

Redisを監視するアイテムとトリガーを作成します
テンプレートはお好きなテンプレートを作成してください

  • アイテム
    redis_item.png

  • トリガー
    redis_trigger.png

アクションの作成

上記作成したトリガーを元に実行されるアクションを設定します

  • 条件
    redis_action_condition.png

  • 実行内容
    redis_action_plan.png

ポイントは実行内容を「リモートコマンド」にして「現在のホスト」でコマンドを実行される部分でしょうか
このままだと権限の関係でコマンドを実行できない可能性があるので設定ファイルを修正します

zabbix_agentd.conf の修正

以下のパラメータが有効になっているか確認してください

  • EnableRemoteCommands=1
  • AllowRoot=1

今回 service コマンドで redis を再起動しますが、zabbix ユーザだと権限がなく service コマンドを実行できません
また、EnableRemoteCommands を有効にしないとカスタムスクリプト自体使えません
AllowRoot の設定はセキュリティ的に嫌だという場合は sudo 等で権限を与えるようにしてください
修正後は zabbix-agent を再起動してください

ここまで設定できれば完了です
実際に redis を停止すれば設定したリモートコマンドが実行されると思います

トラブルシュート

カスタムスクリプトに指定したコマンドがうまく実行されない場合は Zabbix サーバのログを見てみましょう
デフォルトだとログレベルが warnings (3) になっているため debugging (4) にしてください

  • vim /etc/zabbix/zabbix_server.conf
    • DebugLevel=4

これでリモートコマンドが実行されたときに/var/log/zabbix/zabbix_server.logにログが出るようになります
ただ、ログの量が非常に多いのでtail -f /var/log/zabbix/zabbix_server.log | grep start等で必要なログだけ見るようにしてください
Zabbix サーバのログにエラーが出ていなくてもリモートコマンドが実行されていない場合はコマンドを実行しているホスト側で何かしらが原因で実行されていないのでホスト側を確認しましょう
いろいろと原因は考えられますが、コマンドが間違っていたり、一番多そうなのはやはり権限回りかと思います

最後に

Zabbix はトラブルシュート系が結構面倒だといつも感じます
もう少しログを見やすくしてほしい気もします
一番はUI上で「失敗」や「エラー」となっている状態で、その原因を詳細に確認できるとログもデバッグモードにして見る必要がないので楽かなと思います

0 件のコメント:

コメントを投稿