web-dev-qa-db-ja.com

zabbixサーバー(それ自体)を外部から監視する

Zabbixサーバーによって監視されているインフラストラクチャ(サーバー、スイッチなど)があり、問題が発生した場合に警告するように設定されています。ここまでは順調ですね。しかし、Zabbixサーバー自体(または基盤となるインフラストラクチャのいずれか)で問題が発生した場合はどうなりますか?

1つのアイデアは、外部システムで監視できるある種のハートビートを公開することです。 Zabbix API(おそらくpy-zabbixを使用)を使用してこれをhttpで公開し、 monitor.us のようなsmthを使用して監視することを考えています。

思い切って始める前に、これをカバーするために何かsimpleがすでに存在するかどうか疑問に思わずにはいられませんか?それとも、これは良いアプローチですか? monit は、カスタムPythonスクリプトと比較してより良いアプローチですか?(これが「単純さ」テストに合格するかどうかはわかりません)...

1
sxc731

だからこれが私がやったことです:

  1. かなり単純なPythonスクリプトを作成しました。このスクリプトは pyzabbix を使用して、現在失敗している「トリガー」のセットについてZabbixに問い合わせます(以下のスニペットを参照)。これはバックグラウンドスレッドで定期的に実行されます。 (したがって、スレッドセーフである必要があります)。
  2. web.py を使用して、これを外部監視システムに公開しました。

予期しない問題が発生しました。ZabbixサーバーがダウンしていてもZabbixAPIが応答し、サーバーのステータスを問い合わせる方法がありません。これが私が監視したかった主なことでした。ありがたいことに、 パッチが存在します このようなサーバーステータスクエリを許可します。

失敗したZabbixトリガーのセットをクエリするコードを次に示します( pyzabbixに付属する例 から採用)。フルモニターのコードが必要な場合は、コメントで質問してください。githubに投稿します。

def __query_unacked_triggers(self):
    """ queries for currently tripped _triggers which haven't been acked """
    return self._zapi.trigger.get(
        only_true = 1,
        filter = { 'value': 1 },
        skipDependent = 1,
        monitored = 1,
        active = 1,
        output = 'extend',
        expandDescription = 1,
        expandData = 'Host',
        withLastEventUnacknowledged = 1,
    )
1
sxc731

外部の心拍は行く方法です。

私はそのようなツールを知りません、私は私が使用する監視システムのために私自身を持っています。ハートビートであり、障害レポートではないことを確認してください。例えば。あなたはいつもすべてが大丈夫だと報告します、そして監視システムがあなたの心拍をより長い期間受け取らないとき、それはあなたに知らせるべきです。

0