AMIを利用してZabbixでAsteriskを監視する

Asteriskを監視する方法

Asteriskを監視する方法は主に3通りあります。
環境に合った方法を選択します。

CLI (Command Line Interface)

AsteriskのCLIコマンドをzabbix-agentから実行して監視を行います。
戻り値をgrepやawkで整形してZabbixに取り込めるデーターの形にします。

sudo asterisk -rx “core show calls” | grep active | awk ‘{ print $1 }’
10

SNMP (Simple Network Management Protocol)

SNMP(Simple Network Management Protocol)を利用します。
Net-SNMPがインストールされていて、AsteriskがSNMPを利用出来る状態になっている必要があります。

snmpwalk -v2c -c public 127.0.0.1 .1.3.6.1.4.1.22736
.1.3.6.1.4.1.22736.1.5.4.1.4.3 = INTEGER: 2
.1.3.6.1.4.1.22736.1.5.4.1.4.4 = INTEGER: 2
.1.3.6.1.4.1.22736.1.5.4.1.4.5 = INTEGER: 1
.1.3.6.1.4.1.22736.1.5.4.1.4.6 = INTEGER: 1
.1.3.6.1.4.1.22736.1.5.4.1.5.1 = INTEGER: 1
…etc

AMI (Asterisk Manager Interface)

本来はtelnet 5038を利用しますが、AsteriskはHTTP/HTTPSサーバーを内蔵しているのでHTTP/HTTPS経由でAMIを利用する事が可能です。

telnet 192.168.56.102 5038
Trying 192.168.56.102…
Connected to 192.168.56.102.
Escape character is ‘^]’.
Asterisk Call Manager/2.7.0
Action: Login
Username: zabbix
Secret: password
Response: Success
Message: Authentication accepted

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ユーザー作成

vi /etc/asterisk/manager.conf
[general]
enabled = yes
webenabled = yes
port = 5038
bindaddr = 0.0.0.0
displayconnects = yes
[zabbix]
secret = password
read=system
write=all
deny=0.0.0.0/0.0.0.0
permit=1.2.3.4/255.255.255.255
sudo asterisk -rx “core reload”

公式:manager.confサンプルはこちら
https://github.com/asterisk/asterisk/blob/master/configs/samples/manager.conf.sample

HTTP設定

vi /etc/asterisk/http.conf
[general]
enabled=yes
bindaddr=0.0.0.0
bindport=8088
tlsenable=yes          ; enable tls -- default no.
tlsbindaddr=0.0.0.0:10089
tlscertfile=/etc/asterisk/keys/asterisk.pem
tlsprivatekey=/etc/asterisk/keys/asterisk.key

デフォルトは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

画像に alt 属性が指定されていません。ファイル名: amiping.png

レスポンスチェック:
http://<IP>:8088/rawman?action=ping

Linuxターミナルからcurlを使ってテストするにはCookieの保存が必要です。

テンプレートを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側で認証エラーがログに出力されますが、問題は有りません。

tail -f /var/log/asterisk/full
[Jun 19 13:24:32] VERBOSE[16644] manager.c: Connect attempt from ‘40.81.xxx.yyy’ unable to authenticate
[Jun 19 13:24:33] VERBOSE[16645] manager.c: Connect attempt from ‘40.81.xxx.yyy’ unable to authenticate


O’Reillyの監視入門はこちら↓

TwitterFacebookLinkedInHatenaPocketCopy Link