2012-02-28 13 views
0

私は、http://www.nagios.co.jp/nagios/home.htmでhttp://www.nagios.or.jpにアクセスしてください。端末からのナギオスアラートを受信することは可能ですか?

パラメータとしてホスト名を使用し、アラートを受信するリモートワークステーションの端末から実行できるスクリプトがありますか?

./ackホスト名

利点は、一見平凡ながら、3つあります。まず、http loadをnagiosから取り出します。第二に、nagiosのhttpページには最大10〜20秒かかることがありますので、時間を節約したいと思います。第三に、マウス+ウェブインターフェース+ Firefox /その他の面倒な低速ブラウザの使用を避ける。

理想的には、スクリプトのキーボードショートカットにバインドして、最新のアラートを確認するのが理想的です。最後に、ジョイスティック、ボタン、その他の入力から入力を受け取り、スクリプトにバインドされた大きな赤いボタンに接続したいので、ボタンを押すことで最新のナギオスの警告を受け取ることができます。 (警報のテキストにエンクロージャの画面が表示されていた場合は、ボタンも画面に表示されます)

私はあなたが望むすべてを楽しませてくれますが、これは実際には役に立ちます。アラートごとに5秒を節約することができ、1日に200アラートが得られれば、それは1日15分節約できます。そして、自動化できるものを自動化するシステム管理者の要点ではありませんか?

ありがとうございます!

答えて

1

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

参照:

#!/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")) 

あなたは単にパラメータとしてホストを配置する必要があり、そしてスクリプトが壊れたサービスが表示されます。

+0

スクリプト全体で編集された投稿 –

+0

まったくありません!私はちょっと遅いです。私はまた、サーバー障害でこれを投稿しておくべきであることを認識しました。私はあなたがnagiosサーバーからスクリプトを実行すると仮定していますか?私はリモートのワークステーションから実行できるものを期待していましたが、私はそれを明確にすべきでした。 –

+0

はい、Nagiosサーバーからです。あなたはssh: 'ssh nagios-server/path/to/executable/script.py'を使ってリモートホストで同じことをすることができます –

関連する問題