CentOS7において、syslogからjournaldへとログ管理の仕組みが変更となった
#syslog⇒journald
変更となった理由は以下のようらしい。
・eコマースなどのWebシステムを利用する顧客のログ集計のために、システムのログやセンサーのログなど、様々なログが収集されるようになった
・従来のsysylogでは複数のシステムのログをネットワーク経由で一括して管理できる機能などを備えていることから、多くの管理ソフトウェアと連携が可能であった
・しかし、膨大なログの中から目的の情報を抽出するために、様々なコマンドやツール、スクリプト類を駆使する必要があった
・その負荷を軽減するために、目的の情報を抽出しやすい新たな仕組みを搭載したのがjournald
#journaldログの保存
ログファイルは、デフォルト設定では「/run/log/journal」ディレクトリ配下に格納される
そして、そのディレクトリはtempfsでマウントされているため、OS再起動で配下に格納されているログファイルは削除されてしまう
そのため、ログが削除されないように設定ファイルを以下のように修正
#Storage=auto
↓
Storage=persistent
修正したら、再起動
systemctl restart systemd-journald
すると、「/var/log/jounal」ディレクトリ配下にログが移動している
※Storage=autoでは、「/var/log/jounal」ディレクトリが無い場合は「/run/log/journal」ディレクトリ配下にログが作成される
ログファイルは、デフォルトではファイルシステムの10%がログの容量として割り当てられている
最大サイズを明示的に指定する場合は以下のように記載
SystemMaxUse=100M
ログデータの転送には、journald以外にrsyslogを利用可能
また、ログファイルの完全性を保証するために、キーペアの作成と検証がかのうである
キーペア作成
journalctl --setup-keys --force
赤文字で「533f6d-399531-b17d48-325afc/1a247b-35a4e900」といった鍵が表示される
検証
journalctl --verify-key 533f6d-399531-b17d48-325afc/1a247b-35a4e900
完全性が認められた場合、「PASS」と表示される
###<コマンド例>
・時系列フィルタ
journalctl --since="2018-11-10 00:00:00" --until="2018-11-11 22:00:00"
・特定サービスの出力
journalctl --since="2018-11-10 00:00:00" --until="2018-11-11 22:00:00" -u httpd
・リアルタイム出力
journalctl -f
・緊急度フィルタ
journalctl --since=today -p warning
※プライオリティの値で指定も可能
emerg : journalctl -p 0
alert : journalctl -p 1
crit : journalctl -p 2
err : journalctl -p 3
warning : journalctl -p 4
notice : journalctl -p 5
debug : journalctl -p 6
・テストログ出力(例:emerg)
logger -p daemon.emerg "TEST LOG"
・ブートログ出力
journalctl -b
・カーネルログ出力
journalctl -k
・特定プロセスの出力
journalctl _PID=100
・実行ファイルのパス指定による出力
jounalctl /usr/sbin/crond
・現在ログファイルの容量確認
journalctl --disk-usage
#sosreport
システム全体のログと設定ファイルを簡単に一括取得できるコマンド
sosreport -a
以下のように質問2つがされ、システム全体のログと設定ファイルを固めたファイルが出力される
Please enter your first initial and last name [localhost.localdomain]:
Please enter the case id that you are generating this report for []:
中略
Creating compressed archive...
Your sosreport has been generated and saved in:
/var/tmp/sosreport-localhost.localdomain-20181112000402.tar.xz
boot/ etc/ java@ lsof@ ps@ run/ sys/ version.txt
chkconfig@ free@ last@ lspci@ pstree@ sos_commands/ uname@ vgdisplay@
date@ hostname@ lib/ mount@ root/ sos_logs/ uptime@
df@ installed-rpms@ lsb-release@ netstat@ route@ sos_reports/ usr/
dmidecode@ ip_addr@ lsmod@ proc/ rpm-Va@ sos_strings/ var/
tarファイルの中には、「sos.html」といったhtmlファイルが作成されており、作成されたtarファイルを解凍し、Apache管理下に配置すればWebブラウザからログや設定ファイルが確認可能となる
例:http://192.168.11.233/sosreport-localhost.localdomain-20181112000402/sos_reports/sos.html
※「sosreport-localhost.localdomain-20181112000402」ディレクトリへのパーミッション付与のみではSELINUXによりアクセスできませんでした
※参考:CentOS7 実践ガイド