このトピックでは、ZabbixおよびAsteriskベースのオフィスPBXと友達になる方法を説明します。 緊急事態が発生すると、ロボットがあなたに電話し、問題を説明するメッセージを話します。
なぜそれが必要ですか
電子メールアラートは、少数の場合にうまく機能します。 文字数が多いと、重大なエラーを見逃す可能性があります。 したがって、すべてのレベルの問題について電子メールでアラートを設定し、SMSで最も重要なアラートのみをセットアップするのが論理的です。
しかし、残念ながら、仲間の管理者全員がGMSモデムを購入してSMSの支払いをする予算を持っているわけではありません。 オンラインサービスを介してSMSを送信することは信頼できません。 インターネット上のチャンネルを削除した可能性があります。 PBXを介した通知は無料です。 オフィスの内線番号、加入者のグループ、またはモバイルへのコールをセットアップできます。 PBXが物理的な電話回線に接続されている場合、インターネットチャネルの崩壊は彼女にとって恐ろしいことではありません。
仕組み
ネット上で、この問題を解決するためのサンプルスクリプトをいくつか見つけました。 ただし、どちらにも重大な欠点があります。PHPを使用している(なぜですか?)メッセージテキストの読み方がわからない-何らかの問題があるという標準メッセージのみです。
スクリプトは次のように機能します。
- アラートが発生すると、Zabbixはbashスクリプトを起動します。
- bashスクリプトは、アスタリスクの呼び出しファイルとテキスト形式のエラーメッセージを準備します。
- ファイルはSCPを介してアスタリスクサーバーに送信されます。
- SSHを介して、Asteriskはtext2waveを起動します。text2waveはテキストをwavファイルに読み込みます。
- wavファイルと呼び出しファイルは、対応するアスタリスクフォルダーにコピーされます。
- アスタリスクはファイルを確認し、電話をかけ、メッセージを再生します。
プロセス全体にかかる時間は1〜2秒です。
スクリプト
Zabbixは、問題が発生したときにスクリプトを実行できます。 スクリプトは、Zabbixサーバー設定のAlertScriptsPath変数で指定されたフォルダーにあります。
このようなすべてのスクリプトと同様に、スクリプトは3つのパラメーター(宛先、メッセージの件名、メッセージテキスト)を受け取る必要があります。
#!/bin/bash # Asterisk server="asterisk@pbx.roga-i-kopyta.com" # ts=$(date +%s%N) # txtname=/tmp/zabbix-alert.$ts.txt callname=/tmp/zabbix-alert.$ts.call # . # . . echo "Zabbix alert,,,,,,,,,,,,,,,,," > $txtname # $2 - subject . $3 - . echo "$2" >> $txtname # Call- Asterisk echo "Channel: Local/$1@from-internal" > $callname echo "Extension: s" >> $callname echo "MaxRetries: 2" >> $callname echo "RetryTime: 60" >> $callname echo "WaitTime: 30" >> $callname # echo "Callerid: 999" >> $callname echo "Application: Playback" >> $callname # 3 echo "Data: zabbix-alert.$ts&zabbix-alert.$ts&zabbix-alert.$ts" >> $callname scp $txtname $server:$txtname scp $callname $server:$callname rm -f $txtname rm -f $callname ssh $server "cat $txtname | /usr/bin/text2wave -F 8000 > /var/lib/asterisk/sounds/zabbix-alert.$ts.wav && mv $callname /var/spool/asterisk/outgoing/ && rm -f $txtname && find /var/lib/asterisk/sounds/ -name 'zabbix-alert*' -type f -mmin +10 -delete"
サーバーを構成します
それはすべてあなたのOS /ディストリビューションに依存しているので、100%正確な推奨をすることはできません。
簡単に言うと、まず、アスタリスクにtext2wave( フェスティバルパッケージ)をインストールする必要がある場合、オプションでロシア語の音声をインストールします。
次に、ZabbixとAsteriskの間でパスワードなしのSSH認証を設定する必要があります。 この命令を使用できます(段落1〜6)。 キーはパスフレーズなしで実行する必要があります。 ZabbixおよびAsteriskのユーザーと他のユーザーの両方に対して認証を構成できますが、2番目の場合は、スクリプトでsudoを使用する必要があります。
また、生成された呼び出しファイルに対するすべての権利がアスタリスクにあることを確認してください。
必要に応じて、呼び出しが発生する別の内線を作成します。
すべての構成が完了したら、コンソールからスクリプトを実行して確認できます。
./call_sip.sh "" ""
動作しない場合は、Zabbix、ssh、およびアスタリスクのログを選択します。 私はほとんどの時間をsudoとsshのセットアップに費やしました。
Zabbixをカスタマイズする
最も単純な:
[管理-メディアタイプ]で、新しいアラートタイプを作成します。
必要なユーザー(管理-ユーザー)の[メディア]タブで、電話番号を指定します。 これは、PBXのダイヤル計画に従って、内部番号または携帯電話番号のいずれかになります。
アクションでは、通知されたユーザーを指定して新しいアクションを編集または作成します。 メッセージヘッダーを{TRIGGER.STATUS} {TRIGGER.NAME} {HOSTNAME}に設定することをお勧めします。これにより、どのマシンに問題が発生したかが明確になります。
合計
電子メールとSMSに加えて、管理者に警告する別のチャネルを受け取りました。