会社では、停電のためにサーバーが数回クラッシュし、管理者は従業員が仕事に就けない午前中にのみこれを発見しました。
主な問題は、管理者へのすべての通知がメールで送信されることでした-簡単に推測できるように、これもメールに含まれています
それから、「管理者が危機的な状況で電話するように!」
実装とスクリプトについては、猫の下でお願いします。
出発点として、通知システムのみを持たない、すでにインストールおよび設定されたZabbixを使用します。
インフラストラクチャでは、zabbixがDebian 7 x64に展開されています。このシステムではSkypeを起動できなかったため、通知プロセスにいくつかのフリルが追加されました。 32ビットシステムを使用している場合、頭痛はありません。
それでは始めましょう。
まず、 Skypeとその依存関係をインストールする必要があります。
システムは非常にリソース効率の高いものになるように計画されているため、グラフィカルシェルは存在しません。
1.基本コンポーネントをインストールします。
依存関係が残っている場合-apt-get installを使用してください。
*
Skypeは32ビットのみであることに注意してください。 また、Debian 7 x64では起動に失敗しました。 私の解決策は、Debian 7 32ビットを備えた別の仮想マシンをインストールし、その上でskypeを起動することでしたSkype4pyをインストールする必要がある
2番目の手順 -Skypeインスタンスに接続できるPythonスクリプト/ユーティリティのセット。
ですから、現時点では仕事に必要なものはすべて揃っています。
3番目のステップは、今後の作業を簡素化します。
これを行うには、サービスの起動を高速化するためのスクリプトをいくつか作成します。
1. start-server.sh-このスクリプトは、Xvfb、fluxbox、およびSkype自体を開始、停止、再起動します。
2. start-vnc.sh-VNCサーバーを起動するスクリプト-Skypeアカウントを入力し、外部APIを使用する権限を確認するためのグラフィカルインターフェイスが必要なため:
4番目のステップ -skypeを起動して構成します。
両方のスクリプトをskypeユーザーの下で起動します。
./start-server.sh start
./start-vnc.sh start
VNCサーバーのポートを転送します(スクリプト./start-vnc.sh \でサーバーのローカルIPに\をマップすることもできますが、より汎用性を高めるためにこのメソッドを使用します)。
ssh -L 5900:127.0.0.1:5900 'skype@your.zabbix.server'
お気に入りのVNCビューアーを127.0.0.1ポート5900に接続すると、Skypeが実行されていることがわかります
通知を送信するアカウントのユーザー名とパスワードを入力します。パスワードを
保存するためにチケットを受け取るのを忘れないでください
Skypeに含まれるもの:
チャット履歴なし
私のリストに載っている人だけが私に書くことができます
リストに載っている人だけが私に電話をかけることができます
GUIウィンドウを閉じる前に、Skype自体へのSkype4py接続を有効にする必要があります。
これを行うには、コンソールから実行します(スクリプトテキストはテキストの下にあります)。
./sendim.sh 'USERNAME' 'HELLO WORLD'
ここで、USERNAMEは、メッセージを送信するアカウントの名前です
HELLO WORLD-メッセージ自体
VNCを使用してウィンドウに戻り、Skypeが許可を求めていることを確認します-[許可して記憶]をクリックします。
VNCサーバーを停止します。
./start-vnc.sh stop
そして、Skypeの動作を確認して、再度送信します。
./sendim.sh 'USERNAME' 'HELLO WORLD'
これで、メッセージがユーザー名に届くはずです。
最後のステップは、zabbixを設定することです。
1. zabbix_server.confでAlertScriptsPathのパスを探しています。
2.通知を送信するスクリプトを作成します
2つのスクリプトを作成します。
sendim.sh-skypeユーザーのホームディレクトリで、AlertScriptsPathフォルダーへのリンクを作成します
このスクリプトでは、最初のパラメーターはユーザー名(送信先)、2番目はメッセージです。
sendim.py-Skypeホームディレクトリ内:
import Skype4Py import sys
もう一度確認してください:
./sendim.sh username message
Zabbixで通知を構成します。
1.メディアタイプを構成する
[管理]-> [メディアタイプ]に移動し、新しいメディアタイプを作成します。
Name: Skype
Type: Script
Script name: sendim.sh
Enabled: true
2.これらの通知で作業するユーザーを定義します。
[管理]-> [ユーザー]に移動し、ユーザーのプロパティで、新しいメディアタイプを有効にし、Skypeのユーザー名を構成します。
Type: Skype
Send to: YOUR_SKYPE_NAME
YOUR_SKYPE_NAME-送信先のSkypeログイン。
したがって、各ユーザーに対して、誰に通知を送信したいのでしょう。
通知を送信するアクションを構成します。
skypeに送信するものはすべて件名行に含める必要があります(メッセージ本文自体は送信されません)。
必要な条件を作成し、操作を構成します。
テストできます。
*最初に示したように、zabbixとは別のサーバーにSkypeがあり、コマンドはリモートで実行されます
sudo sshpass -p 'skype' ssh skype@IP_ADDRESS "./sendim.sh '$1' '$2'"
ここで、IP_ADDRESSはskypeを使用したサーバーIPです
「ダイヤラー」という機能も実装されています。 Skypeは指定された番号で管理者に電話をかけます。
スクリプトテキストは次のとおりです。 必要に応じて、構成方法を説明しますが、これは別の投稿のトピックです)
skype_caller.py-接続してskypeから呼び出します:
skype_caller.sh-skype_caller.py呼び出し元:
すべてのHabrへ。