Zabbixでアスタリスクを監視する普遍的な方法

画像



こんにちは、ハブロフスクの住民。



この投稿では、アスタリスクサーバーの監視方法についてお話したいと思います。 もちろん、ハブ上のアスタリスクを監視するためにZabbixを使用することに関する投稿はすでにあります。私たちの意見では、それらに多くの興味深い情報を収集し、多くの必要なものを追加しました。



それの由来-あなたはカットの下で見ることができます。



テレフォニーは、会社の業務における重要なサービスです。 電話インフラストラクチャの展開および構成後の最も重要なタスクは、その監視です。 電話ネットワークの運用責任者にタイムリーに通知することで、会社は膨大な時間とお金を節約でき、電話交換のダウンタイムを最小限に抑えることができます。



最初に、Asteriskサーバーを監視するには、監視するツールを選択する必要があります。 もちろん、ネットワーク上にはサーバーの表面監視を可能にする多数の自己記述スクリプトがありますが、多くの場合、あまり機能的ではなく、Linuxの深い知識が必要であり、当然GUIもありません。



テレフォニーサーバーのステータスを監視するために、Zabbix監視システムを選択しました。 Zabbixは、ホストおよびプロセスを監視するための多数のテンプレートを備えた非常に強力な監視ツールであり、カスタムのものを埋め込むことができます。 Asteriskサーバーが正常に機能するために、監視する必要がある次のコンポーネントを特定し、それらのPythonスクリプトを作成しました。これらはZabbixに移植します。







上記のパラメーターのいずれかで問題が発生した場合、Zabbixは通知(通知オプション:電子メール、jabber、SMSによる通知)をPBX管理者または問題を迅速に解決するための対策を講じる他の責任者に送信します。



Zabbixアーキテクチャには以下が含まれます。









zabbixエージェントをインストールするプロセスを検討してください。





最初に、サーバーで次の依存関係が満たされる必要があります。







Zabbixエージェントを直接インストールします。

aptitude install zabbix-agent
      
      







Pythonモジュールをインストールして、カスタムZabbixスクリプトを実行します。



 aptitude install python-pip python-all-dev pip install argparse pexpect posix-ipc wsgiref
      
      







必要なスクリプトをダウンロードします(便宜上、それらをbitbucketで収集しました)。

 cd /etc/zabbix/ git clone https://pbxware@bitbucket.org/pbxware/asterisk-zabbix-py.git cd asterisk-zabbix-py
      
      







アスタリスクの設定に従ってsettings.pyを変更します。

 vim setting.py # coding=utf-8 HOST = "localhost" - ,      Asterisk PORT = "5038" -  AMI  manager.conf USERNAME = "zabbix" -  AMI PASSWORD = "zabbixpasswordami" -   AMI DEFAULT_TIMEOUT = 3 AMI_VERSION = "1.3" -  AMI,      telnet localhost 5038
      
      







/etc/asterisk/manager.conf構成ファイルの最後に次の行を追加します。



 [zabbix] ; username from settings.py secret=zabbixpasswordami ; password from settings.py deny=0.0.0.0/0.0.0.0 permit=127.0.0.1/255.255.255.0 read = system,call,log,verbose,agent,user,config,dtmf,reporting,cdr,dialplan write = system,call,agent,user,command,reporting,message allowmultiplelogin = yes displayconnects = no writetimeout = 100
      
      







これらの手順を完了したら、アスタリスクを再起動します。



 service asterisk restart
      
      







次に、zabbixエージェントの設定ファイル/etc/zabbix/zabbix_agentd.confで、一番下に追加します:



 Include=/etc/zabbix/asterisk-zabbix-py/userparameter_asterisk.conf
      
      







zabbixエージェントを再起動します。



 /etc/init.d/zabbix-agent restart
      
      







利用可能なチーム:







パラメータ:



./run.py -aディスカバリー。

./run.py -f <field_name> -pフィールドのパラメーターを返します

./run.py -f <field_name> -p -rフィールド値の正規表現。 (返品グループ1)

./run.py -v詳細



例:



sudo -u zabbix /etc/zabbix/asterisk-zabbix-py/run.py registry -aすべてのSIP登録を返す

sudo -u zabbix /etc/zabbix/asterisk-zabbix-py/run.py peer -aすべてのSIPピアを返す

sudo -u zabbix /etc/zabbix/asterisk-zabbix-py/run.py peer -f Address-IP -p 101 IPアドレスpeer 101を返す

sudo -u zabbix /etc/zabbix/asterisk-zabbix-py/run.py peer -f Status -r "(\ d +)" -p 101 Return Qualify user 101



モジュールの説明





アスタリスクポーリングモジュールは、AMIを介して機能します。



settings.py-モジュール設定

userparameter_asterisk.conf-モジュールに渡されるzabbixコマンドとパラメーター

zasterisk / ami.py-pexpectを使用してAMIに接続します

コマンド/-コマンドを含むフォルダー



このモジュールは汎用的であり、必要なパラメーターがなければ簡単に追加できます。 たとえば、sip-peer 101のコンテキストを取得する必要があります。



 sudo -u zabbix /etc/zabbix/asterisk-zabbix-py/run.py peer -f Context -p 101
      
      





ユーザーからの応答を取得(コンテキスト名)



または、たとえば、使用されているコーデックを確認します。



 sudo -u zabbix /etc/zabbix/asterisk-zabbix-py/run.py peer -f Codecs -p 101
      
      





答えが得られます(g722 | ulaw | alaw | g729)



コマンドへの情報のより詳細な出力については、オプション「-v」を追加できます



追加のコマンドが必要な場合は、コマンドのファイルと同様に、IAXピアを監視するiax2.pyなどの独自のコマンドを追加します。



 # coding=utf-8 from zasterisk.base import DiscoveryFieldCommand class Command(DiscoveryFieldCommand): help = ''' IAX2 peers ''' def discovery(self, ami): def callback(connect, timeout): events = self.parse_events(connect) return self.create_discovery(events.get("PeerEntry"), "{#USERNAME}", "ObjectName") return ami.execute("IAXpeers", {}, callback) def get_field(self, ami, field_name, param): return ami.execute("IAXpeers", {"Peer": param}, lambda connect, timeout: self.expect_field( connect, field_name, timeout)) def count(self, ami): return 0
      
      







その結果、IAXピアのパラメーターを監視できるようになります。



 sudo -u zabbix /etc/zabbix/asterisk-zabbix-py/run.py iax2 -v -f IPaddress -p demo
      
      







結果:216.207.245.47



結論として、私たちは、監視のために私たちの意見で重要ないくつかのプロセスのみを引用したことに注意したいと思います。 Zabbix用のこのモジュールを使用すると、必要な他のプロセスを監視できます。 このトピックにより、アスタリスクの「寿命」に関する詳細情報が得られ、ダウンタイムを可能な限り最小限に抑えることができます。



All Articles