【LPIC1】システムログ

LPIC1

1.システムログとは

ユーザーの操作やプログラムによりシステムの状態が変化することをイベントといい、イベントの記録簿がシステムログ。システムに異常が発生した時の原因特定や、システムが正常に稼働していることの確認他、幅広く使われてる。

2.システムログの種類

システムログには主に下記2種類の系統がある。
・syslogとrsyslog…大抵の環境で動作する。rsyslogの方が新しく信頼性も高いため主流。
・systemd-jornald…systemdが入っているLinuxで動作する。

(1)rsyslog

①仕組み

「/etc/rsyslog.conf」という設定ファイルでログ取得方法などの設定を行う。設定ファイルに基づいて「rsyslog」デーモンが動作しログを取得する仕組み。

②/etc/rsyslog.conf

設定ファイルの基本文法は以下の通り。

<文法>
ファシリティ.プライオリティ アクション
※プライオリティの後ろに「;」をつけることでさらに後ろにファシリティ.プライオリティを書ける。
<例>
*.info;mail.none /var/log/messages

③ファシリティ

ログとなる動作の発信元を指す。主なファシリティは以下の通り。

ファシリティ名説明
auth認証システム関連
authpriv認証情報(プライベート)
croncronデーモン
daemonシステムデーモン全般
kernカーネルメッセージ
lpr印刷システム
mailメール関連
newsニュースサーバ関連
syslogsyslog自体のメッセージ
userユーザー処理プログラム
uucpUUCPサブシステム
local0local7ローカル用途(アプリケーションなど独自に使用可能)

④プライオリティ

メッセージの重要度や優先度を指す。

プライオリティ説明
emerg緊急。システムが使用不能
alert即時対応が必要
crit重大な状態
err(または errorエラー状態
warning(または warn警告状態
notice通知(通常重要な状態)
info情報メッセージ
debugデバッグ用情報
noneロギングなし

⑤アクション

指定したファシリティ・プライオリティのログの出力先などを指定する。

アクション説明
ファイルパス(例:/var/log/messagesログをファイルに書き込み
@ホスト名リモートホストへUDPで転送
@@ホスト名リモートホストへTCPで転送
ユーザー名ユーザーの端末に出力
/dev/consolsコンソール画面に出力
*ログイン中の全ユーザーの端末に出力

⑥rsyslogにメッセージを送る(logger)

rsyslogの設定が反映されたかを確認するためテスト用のログを作りたいとき等に使うのがloggerコマンド。

<書式>
logger [オプション] メッセージ
<オプション>
・-p ファシリティ.プライオリティ
 →送信メッセージの種類を指定
.-t タグ
 →ログの識別子を指定
<例>
logger -t TEST "これはテストログです。"

⑦ログファイルの保管場所

rsyslogの保管先は「/var/log/messages」か「/var/log」ディレクトリ内のログを確認したいアプリケーション名のファイルのいずれか。ログファイルの分析などが必要な場合ここから取り出す。
なお、ユーザーのログイン履歴は「/var/log/secure」ファイルに保管されている。

(2)systemd-journald

①仕組み

systemdが入っているlinuxで使われているログ管理サービスのこと。
systemdで起動したサービスから発生する全イベントを記録している。
systemd-journaldは長いため、journaldと略されることが多い。このページでは以下journaldと呼ぶ。
rsyslogと併用している場合、journaldがイベントログを取得して、rsyslogに送信することになる。

②ログデータベースの確認(journalctl)

journaldは独自にログデータベースを持っており、ここに収集したログが保管される。ログデータベースはバイナリのためcatコマンドなどで確認することはできない。ログデータベースにアクセスするためのコマンドが「journalctl」。

<書式>
journalctl [オプション]
<オプション>
・journalctl -e
→システムログの最新部分の表示
・journalctl -f
→システムログを表示し続ける
・journalctl -x
→詳細を表示
・journalctl -u Unit名
→指定したユニットのログのみ表示。「systemctl list-units --type=service
」などで事前に指定できるユニット名は調べておくこと。

③journaldの設定

journald自体の設定は「/etc/systemd/journald.conf」ファイルを編集することで行える。

項目説明
Storage=ログの保存先。volatile(RAMのみ)、persistent(ディスク保存)、auto(自動)、none(保存しない)
Compress=ログファイルを圧縮するかどうか。yes または no
SystemMaxUse=ディスク上で system journal が使える最大容量(例:1G, 500M
SystemKeepFree=空き容量として確保しておく最低限のディスクサイズ
SystemMaxFileSize=ジャーナルファイル1つの最大サイズ
SystemMaxFiles=保持するジャーナルファイルの最大数
RuntimeMaxUse=/run/log/journal の最大使用量(RAM使用)
ForwardToSyslog=rsyslog などにログを転送するかどうか(yes / no
MaxRetentionSec=最大保持期間(例:1week1month)※最近のsystemdでは廃止傾向
ファイルを設定するだけでは反映されないため、必ず下記コマンドでリスタートすること。
sudo systemctl restart systemd-journald

Storage=autoに設定したが/var/log/journal/ファイルがない場合、ログがRAMにしか保管されず永続化しないため、下記コマンドを実行する必要がある。
sudo mkdir -p /var/log/journal
sudo systemd-tmpfiles --create --prefix /var/log/journal
sudo systemctl restart systemd-journald

④ログの検証(systemd-cat)

systemd-cat は、標準出力や標準エラーの出力を systemd の ログに送るためのコマンド。

<書式>
systemd-cat ログに送りたいコマンド
<例>
systemd-cat echo "テスト"
→任意の文字列をログに送信している。

タイトルとURLをコピーしました