こんにちは。エンジニアのリリアンです。
Asteriskでchan_sip.c: Autodestruct on dialogの現象をみたことがありますか?xcallyもchan_sipを利用しているから、この現象が発生することがあります。
このワーニングが起きたときに、根本的解決策ではないですが、対策の一つにAsteriskの再起動があります。今回はZabbixを使って、Asteriskが自動再起動の方法を紹介したいと思います。
前提条件
・Zabbixサーバーをインストール済み
・ホストサーバーにZabbix Agentインストールし、activeになってます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[centos@ip-172-33-26-247 ~]$ systemctl status zabbix-agent ● zabbix-agent.service - Zabbix Agent Loaded: loaded (/usr/lib/systemd/system/zabbix-agent.service; enabled; vendor preset: disabled) Active: active (running) since Tue 2022-01-11 13:26:40 JST; 1 months 6 days ago Process: 983 ExecStart=/usr/sbin/zabbix_agentd -c $CONFFILE (code=exited, status=0/SUCCESS) Main PID: 1003 (zabbix_agentd) CGroup: /system.slice/zabbix-agent.service tq1003 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf tq1005 /usr/sbin/zabbix_agentd: collector [idle 1 sec] tq1006 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection] tq1007 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection] tq1008 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection] mq1009 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec] Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable. |
Zabbixサーバー
Zabbixサーバーをログインして、アイテム、トリガーとアクションを設定します。
アイテムの設定
元々テンプレートを作ってあるので、テンプレートにアイテムとトリガーを追加します。
- 名前:お好みで。例:Log Monitoring
- タイプ:Zabbixエージェント(アクテイブ)
- キー: logrt[/var/log/asterisk/messages,Rescheduling]
- 監視間隔:1m
- アプリケーション:Zabbix Agent
トリガーの設定
次は、トリガーを設定します。
- 深刻度:お好きなように設定。
- 条件式: {Template Xcally basic:logrt[/var/log/asterisk/messages,Rescheduling].nodata(300)}=0 and {Template Xcally basic:logrt[/var/log/asterisk/messages,Rescheduling].count(#1)}>0
2つの式をand条件にしている記述です。
1行目は5分間データがなかったら障害状態を解除する条件です。
2行目は「Reschedulingという文字列が直近1回の計測で1回以上でたら」という条件式になります。
アクションの設定
最後にアクションの設定です。
「設定」→「アクション」→「アクションの作成」ボタンをクリックします。
アクションタブはイメージのように入力します。(名前はお好みで)
3つの条件を設定しています。
- トリガーの深刻度が「重度の障害」だったら
- 先ほど設定した「Freeze chan_sip module」がトリガーされたら
- ホストグループを作った場合
次に、実行内容タブで実行内容詳細を設定します。
- 実行内容のタイプ:リモートコマンド
- コマンド: sleep 300 && sudo systemctl restart asterisk
Zabbixエージェントがインストールされているサーバーで実行するリモートコマンドです。
設定を終わったら、保存します。
ホストサーバー
外部コマンドを実行するため、 /usr/local/etc/zabbix_agentd.confを修正する必要があります。
以下のコマンドを実行して、この2つのパラメータを有効にします。
- EnableRemoteCommands=1
- AllowRoot=1
1 |
sudo sed -i -e 's/# EnableRemoteCommands=0/EnableRemoteCommands=1/' -e 's/# AllowRoot=0/AllowRoot=1/' /etc/zabbix/zabbix_agentd.conf && sudo systemctl restart zabbix-agent |
終わりに
以上、chan_sip.c: Autodestruct on dialogエラーに対し一つの対策を紹介いたしました。是非参考にしてください!
- Asteriskワーニング:Autodestruct on dialog - 2022-03-02
- Kamailioを設定しましょう - 2021-07-02
- AWSでKamailioを構築 - 2021-06-13
- XCALLYでVoice botを作ってみました【Dialogflow×AWS Polly×GoogleASR】 - 2020-12-01
- Creating Simple Graph/Table for XCALLY agent in Grafana - 2019-09-04