0

確認応答への http リンクを使用して jabber を介して送信されるように nagios アラートを設定しています。

ホスト名をパラメーターとして受け取り、アラートを確認するリモートワークステーションの端末から実行できるスクリプトがある可能性はありますか?

./ack ホスト名

一見平凡に見えますが、利点は 3 倍です。まず、nagios から http 負荷を取り除きます。第二に、nagios の http ページは読み込みに最大 10 ~ 20 秒かかることがあるため、時間を節約したいと考えています。第三に、マウス + Web インターフェース + Firefox やその他の面倒なほど遅いブラウザの使用が遅くなるのを回避します。

理想的には、最新のアラートを確認するだけのキーボード ショートカットにバインドされたスクリプトが必要です。最後に、ジョイスティック、ボタンなどから入力を取得し、スクリプトにバインドされた大きな赤いボタンに接続して、ボタンを押すだけで最新の nagios アラートを確認できるようにします (笑)。(ボタンのエンクロージャーにスクリーンがあり、アラートのテキストが確認されたことを示すものであれば、それも素晴らしいことです笑)

いくらなんでも私をからかってください、でもこれは実は私にとって役に立つことなのです。1 回のアラートで 5 秒節約でき、1 日 200 件のアラートを確認する必要がある場合、1 日 15 分節約できます。そして、自動化できるものを自動化することがシステム管理者の全体的なポイントではありませんか?

ありがとう!

4

1 に答える 1

1

はい、ファイルを解析することでnagiosを確認することができ/var/lib/nagios3/retention.datます。

見る :

#!/usr/bin/env python
# -*- coding: utf8 -*-
# vim:ts=4:sw=4

import sys

file = "/var/lib/nagios3/retention.dat"

try:
    sys.argv[1]
except:
    print("Usage:\n"+sys.argv[0]+" <HOST>\n")
    sys.exit(1)

f = open(file, "r")
line = f.readline()

c=0
name = {}
state = {}
host = {}

while line:
    if "service_description=" in line:
        name[c] = line.split("=", 2)[1]
    elif "current_state=" in line:
        state[c] = line.split("=", 2)[1]
    elif "host_name=" in line:
        host[c] = line.split("=", 2)[1]
    elif "}" in line:
        c+=1

    line = f.readline()

for i in name:
    num = int(state[i])

    if num > 0 and sys.argv[1] == host[i].strip():
        print(name[i].strip("\n"))

ホストをパラメーターとして設定するだけで、スクリプトは壊れたサービスを表示します。

于 2012-02-28T20:48:00.633 に答える