Instiq
第4章 · 重要なシステムサービス·v1.0.0·更新 2026/7/6·読了目安 約13分

変更要約: 初版(主題1.09・副主題1.09.1〜1.09.3に対応)

4.2システムのログ

この節の要点

ログの収集・参照・保守を学びます。rsyslogrsyslog.confファシリティプライオリティ・アクション、中央ログサーバーへの転送)、systemd ジャーナルjournalctl の問い合わせ・フィルタ・journald.conf/var/log/journal/)、手動出力(loggersystemd-cat)、logrotate によるローテーション(/etc/logrotate.conf/etc/logrotate.d/)を押さえます。

障害対応の第一歩は常に「ログを見る」です(本主題の重要度5)。現代の Linux では、systemd のジャーナルと伝統の rsyslog並走しており、両方の引き方と、肥大対策(logrotate)までがセットで問われます。

4.2.1rsyslog とファシリティ・プライオリティ

  • rsyslogd=syslog 系の標準デーモン。rsyslog.conf のルールは「ファシリティ.プライオリティ アクション」形式(例 mail.err /var/log/mail.err)。
  • ファシリティ=ログの発生源の分類(auth・authpriv・cron・daemon・kern・mail・user・local0〜7)。プライオリティ重大度(低→高:debug・info・notice・warning・err・crit・alert・emerg)。指定した重大度以上が対象になる。
  • アクション=ファイルへ書く(/var/log/...)だけでなく、@ホスト(UDP)・@@ホスト(TCP)で中央ログサーバーへ転送できる(受け側も rsyslog で受信設定)。
  • 手動でログを打つ=loggerlogger -p user.err "テスト"=スクリプトから syslog へ)・systemd-cat(コマンドの出力をジャーナルへ流す)。

4.2.2systemd ジャーナルと logrotate

  • journalctl=ジャーナルの問い合わせ:-u nginx(ユニット別)・-b(今回起動分)・-f(追随=tail -f 相当)・-p err(重大度フィルタ)・--since "2026-07-06"(期間)。
  • ジャーナルの永続化=/var/log/journal/存在すればディスクへ保存(無ければメモリのみ=再起動で消える)。設定は /etc/systemd/journald.conf(上限サイズ等)。古い分の削除=journalctl --vacuum-size=500M--vacuum-time=30d
  • logrotateテキストログのローテーション・圧縮・削除の自動化。全体設定 /etc/logrotate.conf+パッケージごとの /etc/logrotate.d/(rotate 4・weekly・compress 等)。cron/タイマー経由で定期実行される。
試験ポイント

「mail.err の意味=mail ファシリティの err 以上」「@=UDP・@@=TCP 転送」「ユニットのログ=journalctl -u・追随=-f・今回起動=-b」「ジャーナル永続化=/var/log/journal/ の有無」「ローテーション=logrotate(logrotate.d)」 が定番です。「以上」の解釈(err 指定で crit も対象)を外さないこと。

「nginx が落ちた」障害対応で流れを組みましょう。まず journalctl -u nginx -b -p warning今回起動分の警告以上に絞って眺め、時間帯が分かったら --since--until で挟み込みます。ジャーナルで足りない伝統デーモンのログは /var/log/(messages・secure 等)を確認——どのファイルに何が入るかを決めているのが rsyslog.conf のルールです。authpriv.* /var/log/secure なら認証ログは secure へ、*.info;mail.none /var/log/messages なら「info 以上ただし mail は除く」が messages へ、とセレクタの読み方まで問われます。複数サーバーの監査要件があるなら *.* @@log01.example.comTCP 転送の中央集約を構成します(UDP の @ は軽量だが欠落しうる)。ジャーナルはバイナリ形式なので grep でなく journalctl のフィルタで引く、テキストログの肥大は logrotate が「週次で4世代・圧縮」などの規則で面倒を見る、という役割の線引きまで整理できれば、この節は完成です。

目的コマンド/設定要点
ユニットのログを追うjournalctl -u nginx -f-b で今回起動・-p で重大度
振り分けルールrsyslog.conf「fac.pri アクション」指定重大度**以上**が対象
中央サーバーへ転送@host(UDP)/@@host(TCP)監査要件は TCP が定石
肥大対策logrotate / --vacuum-*テキスト=logrotate・ジャーナル=vacuum
注意

ひっかけ: 「mail.err は mail の err のみを対象にする」は誤りです。syslog のセレクタは指定重大度以上(err・crit・alert・emerg)を含みます。また「ジャーナルは常にディスクに永続化される」も誤り=/var/log/journal/ が無ければメモリのみで再起動で消えます。「logrotate はジャーナル(バイナリ)もローテーションする」も誤り=ジャーナルの整理は journald の上限設定と --vacuum 系です。

rsyslog のルール・journalctl のフィルタ・logrotate の役割分担図。
セレクタは「以上」を含む

4.2.3この節のまとめ

  • rsyslog=fac.pri(以上)→アクション(@UDP/@@TCP 転送可)・手動は logger/systemd-cat
  • journalctl -u/-b/-f/-p/--since・永続化は /var/log/journal/。テキストの肥大は logrotate・ジャーナルは --vacuum

進捗の記録にはログインが必要です。

理解度チェック

(軽い確認用)

Q1. systemd 環境で、nginx ユニットの「今回の起動以降」のログだけを表示したい。適切なコマンドは?

Q2. rsyslog.conf の「mail.err /var/log/mail.err」というルールが対象とするメッセージはどれ?

Q3. /var/log/ 配下のテキストログを「週次で4世代・圧縮保存」のように自動ローテーションしたい。使う仕組みと設定場所は?

理解度を確認第4章「重要なシステムサービス」の問題を解く

学習の記録を残しませんか

参考書はすべて無料で読めます。無料登録すると、問題集での演習・既読と進捗の記録・間違えた問題の復習・ハイライトが使えます。