👻
Linuxログ管理
rsyslogとは
稼働しているアプリケーションやプログラムのログを、効率的に収集しログファイルやコンソールに出力するログ管理システム
rsyslogの設定ファイル
rsyslogのログは「/etc/rsyslog.conf」と「/etc/rsyslog.d/」で設定される。
ファシリティ
ファシリティはカーネルや、実行中のプロセスなどメッセージの生成元を表す。
ファシリティ | 説明 |
---|---|
auth,authpriv | 認証システムによる出力 |
cron | cronによる出力 |
daemon | 各種デーモンによる出力 |
kern | カーネルによる出力 |
ipr | 印刷システムによる出力 |
メールサービス関連による出力 | |
user | ユーザーアプリケーションによる出力 |
local0~local7 | ローカルシステムの設定 |
プライオリティ
プライオリティはログメッセージの重要度を表す。
プライオリティ | 説明 |
---|---|
emerg | 緊急事態 |
alert | 早急に対処が必要な事態 |
cirt | システムの処理は継続できるものの深刻な事態 |
err | 一般的なエラー |
warning | 一般的な警告 |
notice | 一般的な通知 |
info | 一般的な情報 |
debug | デバッグ情報 |
none | ログを記録しない |
* | 全てのプライオリティ |
出力先
メッセージの出力先を、ログファイルや、端末、他のホストなどを選択できる部分をアクションフィールドと言う。
アクションフィールド | 説明 |
---|---|
/dev/console | コンソールに出力 |
/var/log/messages | /var/log/messagesに出力 |
/var/log/secure | /var/log/secureに出力 |
-/var/log/maillog | /var/log/maillogに出力 |
/var/log/cron | /var/log/cronに出力 |
/var/log/spooler | /var/log/spoolerに出力 |
/var/log/boot.log | /var/log/boot.logに出力 |
loggerコマンド
loggerコマンドを使用すると、ログメッセージを生成することが可能。
# loggerコマンドの実行
[root@ip-172-31-40-215 ec2-user]# logger -p syslog.info -t test "test logger messeage"
# loggerコマンドで生成したメッセージの確認
[root@ip-172-31-40-215 ec2-user]# tail /var/log/messages
May 5 08:35:34 ip-172-31-40-215 systemd: Unit testscrpit.service entered failed state.
May 5 08:35:34 ip-172-31-40-215 systemd: testscrpit.service failed.
May 5 08:35:55 ip-172-31-40-215 dhclient[2850]: XMT: Solicit on eth0, interval 109870ms.
May 5 08:36:22 ip-172-31-40-215 systemd: Created slice User Slice of ec2-user.
May 5 08:36:22 ip-172-31-40-215 systemd: Starting User Slice of ec2-user.
May 5 08:36:22 ip-172-31-40-215 systemd-logind: New session 1 of user ec2-user.
May 5 08:36:22 ip-172-31-40-215 systemd: Started Session 1 of user ec2-user.
May 5 08:36:22 ip-172-31-40-215 systemd: Starting Session 1 of user ec2-user.
May 5 08:36:50 ip-172-31-40-215 su: (to root) ec2-user on pts/0
May 5 08:37:28 ip-172-31-40-215 test: test logger messeage
[root@ip-172-31-40-215 ec2-user]#
loggerコマンドのオプション
引数 | 説明 |
---|---|
-i | 各行にloggerプロセスのプロセスIDを記録 |
-p | ファシリティ.プライオリティ |
-t | タグを指定 |
systemd-catコマンド
systemd-catコマンドは手動でコマンドの実行結果をジャーナルファイルに書き込むことが可能。
[root@ip-172-31-40-215 ec2-user]# systemd-cat df -h
[root@ip-172-31-40-215 ec2-user]# tail /var/log/messages
May 5 08:40:01 ip-172-31-40-215 systemd: Stopping User Slice of root.
May 5 08:41:42 ip-172-31-40-215 dhclient[2850]: XMT: Solicit on eth0, interval 128860ms.
May 5 08:43:51 ip-172-31-40-215 dhclient[2850]: XMT: Solicit on eth0, interval 121640ms.
May 5 08:44:30 ip-172-31-40-215 journal: ファイルシス サイズ 使用 残り 使用% マウント位置
May 5 08:44:30 ip-172-31-40-215 journal: devtmpfs 482M 0 482M 0% /dev
May 5 08:44:30 ip-172-31-40-215 journal: tmpfs 492M 0 492M 0% /dev/shm
May 5 08:44:30 ip-172-31-40-215 journal: tmpfs 492M 404K 492M 1% /run
May 5 08:44:30 ip-172-31-40-215 journal: tmpfs 492M 0 492M 0% /sys/fs/cgroup
May 5 08:44:30 ip-172-31-40-215 journal: /dev/xvda1 8.0G 1.6G 6.5G 19% /
May 5 08:44:30 ip-172-31-40-215 journal: tmpfs 99M 0 99M 0% /run/user/1000
[root@ip-172-31-40-215 ec2-user]#
journalctlコマンド
systemdを採用したシステムにおいて、ログを表示または参照するためのコマンド。
journalctlの設定ファイル
journalctlファイルに関する設定は「/etc/systemd/journald.conf」に設定される。
journalファイルの実態
journalファイルの実態は、「/var/log/journal/」にバイナリファイルとして保存されている。
journalctlコマンドの主なオプション
オプション | 説明 |
---|---|
-f(--follow) | ログの末尾を表示し続ける |
-r(--reverse) | ログを新しい順に表示する |
-e | ジャーナルの末尾を表示する |
-x | 説明文つきで表示する |
-k(--dmesg) | カーネルメッセージのみ表示する |
-b(--boot) | ブート時のメッセージを表示する |
-p | 指定したプライオリティ以上のメッセージを表示する |
-u(--unit) | 指定したUnitのログを表示する |
-l(--full) | 画面表示可能な全てのログを表示 |
-n(--lines) | 直近のログから指定行数分を表示 |
-o(--output) | ログの出力形式を指定 |
--since | 指定した日付時刻以降のログを表示 |
--until | 指定した日付時刻までのログを表示 |
--vacuum-size= | アーカイブジャーナルの総容量が指定したサイズを下回るまでに古いジャーナルを削除 |
--vacuum-time= | 指定した期間より古いアーカイブジャーナルを削除 |
--full | エスケープ文字を除いてプレーンテキストで出力する |
--no-pager | 1ページごとに表示せず、全てのログを出力する |
logrotate
常時起動しているシステムによって追記されるシステムログは、追記される一方なのでどんどん肥大化していく。Linuxでは、logrotate機能によって、古くなったログを切り分けたり、不要になったログを削除したり自動化することでログファイルが肥大化することを防ぐ。
logrotateの設定ファイル
logrotateの設定ファイルは、「/etc/logrotate.conf」と「etc/logrotate.d/」配下に各ログファイルに対しての設定ファイルが存在している。
[root@sandbox ec2-user]# cat /etc/logrotate.conf
# see "man logrotate" for details
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# use date as a suffix of the rotated file
dateext
# uncomment this if you want your log files compressed
#compress
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
minsize 1M
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}
# system-specific logs may be also be configured here.
Discussion