RHEL 8で大量に出力されるログをロストなく記録する方法です。
記事の目次
大量に出力されるログはすべては記録されない可能性がある!
RHEL 8では、システムダウンを防ぐため、ログ出力に制限がかかっています。
journaldの設定を変更する!
journald.confの設定を確認します。
# cat /etc/systemd/journald.conf # This file is part of systemd. # # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. # # Entries in this file show the compile time defaults. # You can change settings by editing this file. # Defaults can be restored by simply deleting this file. # # See journald.conf(5) for details. [Journal] #Storage=auto #Compress=yes #Seal=yes #SplitMode=uid #SyncIntervalSec=5m #RateLimitIntervalSec=30s #RateLimitBurst=10000 #SystemMaxUse= #SystemKeepFree= #SystemMaxFileSize= #SystemMaxFiles=100 #RuntimeMaxUse= #RuntimeKeepFree= #RuntimeMaxFileSize= #RuntimeMaxFiles=100 #MaxRetentionSec= #MaxFileSec=1month #ForwardToSyslog=no #ForwardToKMsg=no #ForwardToConsole=no #ForwardToWall=yes #TTYPath=/dev/console #MaxLevelStore=debug #MaxLevelSyslog=debug #MaxLevelKMsg=notice #MaxLevelConsole=info #MaxLevelWall=emerg #LineMax=48K
デフォルトの値は、コメントで記載されている値です。ログ出力をすべて記録するためには、以下のように変更します。
RateLimitIntervalSec=0 RateLimitBurst=0
jounarldを再起動します。
# systemctl restart systemd-journald.service
rsyslogdの設定を変更する!
rsyslogd.confに設定に以下の2行を追記します。
# cat /etc/rsyslog.conf ... $imjournalRatelimitInterval 0 $imjournalRatelimitBurst 0
rsyslogdを再起動します。
# systemctl restart rsyslog.service
ログがすべて記録されることを確認する!
以下のようなシェルを作成して、ログがすべて記録されることを確認します。
#!/bin/bash MAX_NUM=30000 i=1 while [ $i -le ${MAX_NUM} ] do logger -ip local0.crit -t logtest "Critical error 01 occured! [$i]" i=`expr $i + 1` done
ログ出力の件数を確認します。
# journalctl -x | grep "Critical error 01 occured!" | wc -l 30000 # grep "Critical error 01 occured!" /var/log/messages | wc -l 30000
おわりに
RHEL 8では、ログ出力に制限がかかっています。ロストしないようにするためには、jounraldとrsyslogdの設定を変更します。
参考情報
関連記事
関連書籍(Amazon)