匿名

差分

Asterisk ログファイル

3,757 バイト追加, 2020年8月20日 (木) 15:23
ページの作成:「カテゴリ:Asterisk Asteriskのログファイルについて ==ログファイル== デフォルトの設定ではmessagesログとして、notice, warning, error...」
[[カテゴリ:Asterisk]]

Asteriskのログファイルについて
==ログファイル==
デフォルトの設定ではmessagesログとして、notice, warning, errorが出力されます。<br>
ログファイルの設定は/etc/asterisk/logger.confで行います。
<nowiki># etc/asterisk/logger.conf
[logfiles]
messages => notice,warning,error</nowiki>

noticeレベルログとして認証失敗も記録されるため、Asteriskをインターネットに公開していると、膨大なログが出力されます。<br>
[[SIP-Fail2ban|Fail2ban]]を使用していても、しつこい攻撃者がいると、ログが増えていきます。<br>
ログファイルを置くvarパーティションが溢れないようにログファイルの管理を行う必要があります。

==ログの記録レベルを変更する==
必要がなければ、ログの記録レベルを落として出力を減らすのも、1つの手段です。<br>
/etc/asterisk/logger.confのlogfilesセクションにて、上記の例にならいログレベルをカンマ区切りで記載します。<br>
レベルとしてはdebug, trace, notice, warning, error, verbose, dtmf, fax, securityが記載できます。ログレベルとして「*」を使用すると、全ログレベルを意味します。<br>
また、ログレベルの前に[json]を付与するとJSON出力が可能です。

<nowiki>full-json => [json]debug,verbose,notice,warning,error,dtmf,fax</nowiki>

'''警告:debugログレベル及びこれを含む*ログレベルを使用すると、極めて多量のログが出力されます。運用モードではdebugログを出力しないことを強く勧めます!'''<br>
'''Fail2banを使用している場合は、ログ出力のレベルを変更すると動作に影響を及ぼす恐れがあります。注意して変更してください。'''

設定ファイルを変更したら、[[Asterisk CLI]]でlogger reloadを行うと変更が反映されます。

==自動でログをローテートする==
まず、ログのローテートそのものは、[[Asterisk CLI]]でlogger rotateを行うと実行されます。<br>

systemdの下で定期的にログローテートを行うためのユニットファイルの一例を示します。
<nowiki># /etc/systemd/system/asterisk-logrotate.service
[Unit]
Description=Asterisk log rotate
Requires=asterisk.service

[Service]
Type=simple
#User=asterisk
#Group=asterisk
ExecStart=/usr/sbin/asterisk -rx 'logger rotate'</nowiki>

<nowiki># /etc/systemd/system/asterisk-logrotate.timer
[Unit]
Description=Asterisk log rotate timer

[Timer]
OnCalendar=Mon *-*-* 04:00:00
RandomizedDelaySec=300
Persistent=true

[Install]
WantedBy=timers.target</nowiki>

設定したら、systemdにユニットファイルをリロードさせ、タイマーを始動します。
<nowiki># systemctl daemon-reload
# systemctl start asterisk-logrotate.timer
# systemctl enable asterisk-logrotate.timer</nowiki>

手動で1回ローテートしてみようと思う場合、次を実行します。
<nowiki># systemctl start asterisk-logrotate.service</nowiki>

==外部の機構によりログをローテートする==
上記はAsterisk内蔵のログローテート機構によるローテートを説明しました。logrotate等、外部のログローテートツールを使用してログローテートを行う方法もあります。<BR>
その場合の詳細は割愛しますが、[https://www.voip-info.org/logrotate/ voip-info.org]等には参考となる情報があるようです。<BR>
外部のログローテートツールによる場合でも、ローテート後にはCLIからlogger reloadを実行すればAsteriskはログを開き直すようです。