「Asterisk ログファイル」の版間の差分
(→ログファイル) |
(→自動でログをローテートする) |
||
27行目: | 27行目: | ||
==自動でログをローテートする== | ==自動でログをローテートする== | ||
− | + | Asteriskには、内蔵のログローテート機構があり、追加の設定なしにログローテートを実行可能です。<br> | |
+ | ログのローテートそのものは、[[Asterisk CLI]]でlogger rotateを行うと実行されます。<br> | ||
− | + | そこで、systemdの下で定期的にログローテートを行うためのユニットファイルの一例を示します。 | |
<nowiki># /etc/systemd/system/asterisk-logrotate.service | <nowiki># /etc/systemd/system/asterisk-logrotate.service | ||
[Unit] | [Unit] |
2020年8月20日 (木) 16:41時点における版
Asteriskのログファイルについて
ログファイル
デフォルトの設定では/var/log/asterisk/messagesに、ログレベルnotice, warning, errorが出力されます。
ログファイルの設定は/etc/asterisk/logger.confで行います。
# /etc/asterisk/logger.conf [logfiles] messages => notice,warning,error
noticeレベルログとして認証失敗も記録されるため、Asteriskをインターネットに公開していると、膨大なログが出力されます。
Fail2banを使用していても、しつこい攻撃者がいると、ログが増えていきます。
ログファイルを置くvarパーティションが溢れないようにログファイルの管理を行う必要があります。
ログの記録レベルを変更する
必要がなければ、ログの記録レベルを落として出力を減らすのも、1つの手段です。
/etc/asterisk/logger.confのlogfilesセクションにて、上記の例にならいログレベルをカンマ区切りで記載します。
レベルとしてはdebug, trace, notice, warning, error, verbose, dtmf, fax, securityが記載できます。ログレベルとして「*」を使用すると、全ログレベルを意味します。
また、ログレベルの前に[json]を付与するとJSON出力が可能です。
full-json => [json]debug,verbose,notice,warning,error,dtmf,fax
警告:debugログレベル及びこれを含む*ログレベルを使用すると、極めて多量のログが出力されます。運用モードではdebugログを出力しないことを強く勧めます!
Fail2banを使用している場合は、ログ出力のレベルを変更すると動作に影響を及ぼす恐れがあります。注意して変更してください。
設定ファイルを変更したら、Asterisk CLIでlogger reloadを行うと変更が反映されます。
自動でログをローテートする
Asteriskには、内蔵のログローテート機構があり、追加の設定なしにログローテートを実行可能です。
ログのローテートそのものは、Asterisk CLIでlogger rotateを行うと実行されます。
そこで、systemdの下で定期的にログローテートを行うためのユニットファイルの一例を示します。
# /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'
# /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
設定したら、systemdにユニットファイルをリロードさせ、タイマーを始動します。
# systemctl daemon-reload # systemctl start asterisk-logrotate.timer # systemctl enable asterisk-logrotate.timer
手動で1回ローテートしてみようと思う場合、次を実行します。
# systemctl start asterisk-logrotate.service
外部の機構によりログをローテートする
上記はAsterisk内蔵のログローテート機構によるローテートを説明しました。logrotate等、外部のログローテートツールを使用してログローテートを行う方法もあります。
その場合の詳細は割愛しますが、voip-info.org等には参考となる情報があるようです。
外部のログローテートツールによる場合でも、ローテート後にはCLIからlogger reloadを実行すればAsteriskはログを開き直すようです。