Asteriskを監視する方法
Asteriskを監視する方法は主に3通りあります。
環境に合った方法を選択します。
CLI (Command Line Interface)
AsteriskのCLIコマンドをzabbix-agentから実行して監視を行います。
戻り値をgrepやawkで整形してZabbixに取り込めるデーターの形にします。
SNMP (Simple Network Management Protocol)
SNMP(Simple Network Management Protocol)を利用します。
Net-SNMPがインストールされていて、AsteriskがSNMPを利用出来る状態になっている必要があります。
AMI (Asterisk Manager Interface)
本来はtelnet 5038を利用しますが、AsteriskはHTTP/HTTPSサーバーを内蔵しているのでHTTP/HTTPS経由でAMIを利用する事が可能です。
HTTP(S)経由でAMIを利用する
公式サイトzabbix.comにHTTP(S)経由でAMIを利用したAsterisk監視のページがあります。
https://www.zabbix.com/integrations/asterisk
取得可能なデータ 一覧もあります。
git.zabbix.comのREADME.md
ZABBIX6.0
https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/tel/asterisk_http?at=release/6.0
ZABBIX5.4
https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/tel/asterisk_http?at=release/5.4
You should enable the mini-HTTP Server, add the option webenabled=yes in the general section of the manager.conf file and create Asterisk Manager user with system and command write permissions within your Asterisk instance.
manager.confのgeneralセクションでwebenabled=yes、AMIユーザをsystem権限で書き込み権限にて作成します。
AMIユーザー作成
公式:manager.confサンプルはこちら
https://github.com/asterisk/asterisk/blob/master/configs/samples/manager.conf.sample
HTTP設定
デフォルトはHTTPです。上記の様にhttp.confを設定すればHTTPSもサポートします。
HTTPが8088, HTTPSが10089を利用する例です。
公式:http.confサンプルはこちら
https://github.com/asterisk/asterisk/blob/master/configs/samples/http.conf.sample
Firewall設定
TCP5038 (AMI) TCP8088 (HTTP)のZabbixサーバーからの通信を許可します。
HTTPSを利用する場合は上記例ではTCP10089を開放します。
ブラウザからHTTP経由でAMIを利用して確認する
ログイン:
http://<IP>:8088/rawman?action=login&username=zabbix&secret=password
レスポンスチェック:
http://<IP>:8088/rawman?action=ping
テンプレートをZabbixにインポートする
gitのテンプレート template_tel_asterisk_http.yaml をダウンロードしてZabbixサーバーにインポートします。
ホストにテンプレートをアサインしてマクロを設定する
テンプレートを監視対ホストにアサインします。
マクロを変更します。
- {$AMI.SECRET} パスワードを設定
- {$AMI.URL} http(s)://<IP or FQDN>:8088/rawman
テンプレートデフォルトのAMI.URLはhttp://asterisk:8088/asterisk/rawmanですが、これはhttp.confでprefix=asteriskに設定した場合なので、:8088/rawmanと指定します。
データーを確認する
監視方法
ZABBIX公式のAsterisk by HTTPテンプレートはアクティブコールなどの呼量情報はHTTP(S)経由のAMIにて取得します。
TCP5038の本来のAMIはAsteriskの死活監視と応答速度監視に利用しています。
認証なしにTCP接続の応答が有るかどうかを確認しているだけなのでAsterisk側で認証エラーがログに出力されますが、問題は有りません。
O’Reillyの監視入門はこちら↓