それから私は自問しました、それはどこかでNagiosの電話警報を設定する方法を説明していますか? 少しグーグルで、私はいくつかの記事を見つけ、それらを読んで、そこに記載されているソリューションには多くの欠点があることに気付きました。
- NagiosとAsteriskは同じサーバーにインストールする必要があります。
- 音声合成用のエンジンのローカルインストールが必要です。
- 管理者の電話はスクリプトに「接続」され、すべての通知を受信します。
Asterisk側では、 キャッシュの代わりにスクリプト/etc/asterisk/call_from_nagios.shが実行されます。これは、表明するフレーズのリストを含む変数を持つAsteriskの呼び出しファイルを生成します 。 基本的には以上です。さらに詳しく説明します。
ここではNagiosとAsteriskのインストールプロセスについては説明しませんが、これらのサービスの両方が既に機能していると仮定します。 アスタリスクサーバーの部分から始めましょう。 スクリプト/etc/asterisk/call_from_nagios.shを作成します。
#!/bin/bash data=`cat <&0` _TMP=/var/tmp callfile="${_TMP}/nag_callfile_$$" echo "`date '+%Y.%m.%d %H:%M:%S'` ${data}" >> ${_TMP}/nag.log number=`echo "${data}" | cut -f 1 -d " "` data=`echo ${data} | cut -f 1 -d ":" | cut -d " " -f 2-100 | tr "[:upper:]" "[:lower:]" | sed 's/ /\&/g' ` echo "Channel: Local/${number}@from-internal Context: custom-nagios-say Extension: s Priority: 1 MaxRetries: 0 WaitTime: 40 Setvar: play=${data} Account: NAGIOS CallerId: \"NAGIOS\" <168> " > $callfile chmod 666 $callfile mv $callfile /var/spool/asterisk/outgoing/
extensions.confにコンテキストを作成します。
[custom-nagios-say] exten => s,1,Answer() exten => s,n,Wait(1) exten => s,n,Set(CHANNEL(language)=nag) exten => s,n,Playback(intro) exten => s,n,Playback(${play}) exten => s,n,Playback(${play}) exten => s,n,Playback(end) exten => s,n,Hangup()
ディレクトリ/ var / lib /アスタリスク/ sounds / nag /を作成し、次のファイルをそこに配置します。
critical.mp3-クリティカル
down.mp3-利用不可
end.mp3-電子メールによる詳細情報
host.mp3-サーバー
intro.mp3-注意!
problem.mp3-問題
service.mp3-サービス
status.mp3-ステータス
warning.mp3-警告
サーバーとサービスの名前と同様。 ファイル自体は、自分の声で、またはトピックで説明されている方法で表明することができ、この記事について考えるようになりました。
wget -U "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5" "http://translate.google.com/translate_tts?q=&tl=ru" -O host.mp3
さらに2つのオプションがあります。format_mp3モジュールをアスタリスクにインストールするか、各ファイルを消化可能なアスタリスク形式に変換します。 私は最初の方法を好みましたが、例として変換のためのコマンドを与えます:
sox host.mp3 -r 8000 -c 1 host.wav
次のコマンドでテストコールを開始できます。
echo "168 PROBLEM Host ISP status DOWN" | /etc/asterisk/call_from_nagios.sh
すべてのわき柱を捕まえて電話をかけ、「注意! 問題。 ホストはインターネットサービスプロバイダーです。 ステータス-利用不可」、次のステップに進み、sshを介してネットワーク経由でアラートを受信する機能を準備できます。
パスフレーズなしで別のssh証明書を生成します。
次に、 id_rsa.pubの内容を/root/.ssh/authorized_keysに追加し、 コマンドパラメーターを行の先頭に追加します。 することを忘れないでくださいssh-keygen -t rsa -b 4096
chmod 600 /root/.ssh/authorized_keys
ファイルは次のようになります。
command="/etc/asterisk/call_from_nagios.sh" ssh-rsa AAAAB3NA0PCGAC/8kZU= root@nagios
次のコマンドでもう一度確認して先に進みます。
echo "168 PROBLEM Host ISP status DOWN" | ssh -l root -i id_rsa localhost
それでは、Nagiosサーバーを操作しましょう。 連絡先があるとします:
define contact{ contact_name vasea alias Vasea Pupkin service_notification_period 24x7 host_notification_period 24x7 service_notification_options w,u,c,r host_notification_options d,r service_notification_commands notify-service-by-email host_notification_commands notify-host-by-email email vasea@mydoamin.ru }
コピーして少し変更します。
define contact{ contact_name vasea_phone alias Vasea Pupkin phone service_notification_period dayhours host_notification_period dayhours service_notification_options w,c,r host_notification_options d,r service_notification_commands notify-by-phone host_notification_commands host-notify-by-phone pager 163 }
ここでは、通知期間を昼間に置き換えました(以前はdefine timeperiodディレクティブで説明していました)。これは7〜22時間に相当します。 Vasyaが夜間に電話を受ける準備ができている場合は、24時間年中無休のままでかまいません。 実際、電話番号168を追加しました。内部電話を使用し、モバイルへの転送はアスタリスク自体に既に設定されています。 ただし、原則として、携帯電話番号をすぐに示すことができます。
vasea_phone連絡先を、対応するサービスの責任者のリストまたは対応するcontactgroupに追加します。 次に、コマンドを作成します。
define command{ command_name notify-by-phone command_line [ "$NOTIFICATIONTYPE$" = "PROBLEM" ] && /etc/nagios3/notify_by_phone.sh "$CONTACTPAGER$ $NOTIFICATIONTYPE$ Host $HOSTNAME$ Service $SERVICEDESC$ status $SERVICESTATE$ : $SERVICEOUTPUT$" } define command{ command_name host-notify-by-phone command_line [ "$NOTIFICATIONTYPE$" = "PROBLEM" ] && /etc/nagios3/notify_by_phone.sh "$CONTACTPAGER$ $NOTIFICATIONTYPE$ Host $HOSTNAME$ status $HOSTSTATE$ : $HOSTOUTPUT$" }
また、スクリプト/etc/nagios3/notify_by_phone.shは次のとおりです。
#!/bin/bash data=$@ date=`/bin/date '+%Y.%m.%d %H:%M:%S'` echo "${date} ${data}" >> /tmp/nag.log echo "${data}" | ssh -i /etc/nagios3/id_rsa root@10.1.5.61
10.1.5.61は私のアスタリスクサーバーのIPアドレスです。 / etc / nagios3 / id_rsaファイルは、アスタリスクサーバーで生成したファイルです。 新しいサーバーに初めて接続するとき、sshはknown_hostsに指紋を入力する前に確認を求めます。 したがって、nagiosユーザーになり(Nagiosデーモンがこのユーザーの下で実行される場合、これが通常のケースです)、手動で/etc/nagios3/notify_by_phone.shスクリプトを実行する必要があります。
su - nagios /etc/nagios3/notify_by_phone.sh 168 PROBLEM Host ISP status DOWN
これを行う前に、nagiosユーザーの/ bin / falseを/ bin / bash in / etc / passwordに置き換える必要がある場合があります。 上記のコマンドを実行した後、これを返すことができます。
以上です! たぶん私が見落としていたいくつかの詳細。 もしそうなら-コメントを書いて、私は記事を更新します。
これで、問題が発生したことを最初に知り、クライアントまたは管理者が気付く前に修正することができます。