コース一覧
LinuC レベル1 102試験対策(LPIC-1対応)
ログ管理

LinuC レベル1 102試験対策(LPIC-1対応)

LinuC レベル1/LPIC-1の102範囲を、シェル、ユーザーとセキュリティ、ネットワーク、システム管理の実機演習と章末問題で固めます。Linuxを安全に運用するための知識とコマンド操作を体系的に身につける25レッスンのコースです。

1
102 シェルとスクリプト
01. シェル環境18分
02. testと条件式18分
03. スクリプトの制御18分
04. cronとat15分
05. systemdタイマー18分
06. 過去問 シェル15分
2
102 ユーザーとセキュリティ
01. passwdとshadow18分
02. ユーザー管理コマンド18分
03. suとsudo18分
04. 特殊パーミッション18分
05. ホストのセキュリティ18分
06. SSHとGPG18分
07. 過去問 ユーザーとセキュリティ15分
3
102 ネットワーク
01. TCP/IPとウェルノウンポート18分
02. アドレス設定18分
03. ルーティング18分
04. 名前解決の設定18分
05. 疎通トラブルシュート18分
06. 過去問 ネットワーク15分
4
102 システム管理
01. 時刻とNTP15分
02. ロケールと文字コード18分
03. ログ管理18分
04. サービス管理の試験形式18分
05. メールと印刷のきほん15分
06. 過去問 システム管理15分

ログ管理

障害が起きたときに最初に見るのはログです。逆に言えば、ログの出方を設計できないと障害は追えません。なお、この学習環境には rsyslogd が入っておらず、動いているのは systemd-journald だけです。rsyslog の書式は試験に出るので読み方だけ押さえます。

プライオリティは数字が小さいほど深刻

数字名前意味
0emerg (panic)システムが使用不能
1alert直ちに対処が必要
2crit致命的な状態
3err (error)エラー
4warning (warn)警告
5notice通常だが重要
6info情報
7debugデバッグ用の詳細

emerg が 0 で最も重く、debug が 7 で最も軽い。日常の感覚と逆向きなので表ごと覚えます。また、設定でプライオリティを1つ指定すると、それ以上に深刻なものもすべて含まれます。mail.info と書けば mail の info から emerg までが対象です。

ファシリティはどこから出たログかの分類で、auth と authpriv が認証、cron、daemon、kern、印刷の lpr、mail、syslog 自身、既定値の user があります。加えて local0 から local7 が利用者の自由枠で、自作アプリのログを分けたいときにここを使う、という設計が問われます。

rsyslog.conf は ファシリティ.プライオリティ と 出力先

プレーンテキスト

auth,authpriv.*                 /var/log/auth.log
*.info;mail.none;cron.none      /var/log/messages
*.*                             @192.168.1.10

* はすべてを表します。.none はそのファシリティを除外する指定で、*.info;mail.none は「全部の info 以上、ただしメールは除く」です。セミコロンで条件を並べ、カンマでファシリティを列挙します。ファイル名の前に - を付けると書き込みのたびに同期しません。@ で始まる出力先は他ホストへの転送で、@ 1つが UDP、@@ 2つが TCP、ポートは 514 番です。

シェルから syslog へ書くのが logger です。-p でファシリティとプライオリティを local0.info の形で指定し、-t でタグを付けます。

journalctl はユニットと期間で絞る

オプション何をするか
-u <ユニット>指定したユニットのログだけ
-b今回の起動以降。-b -1 で1つ前の起動
-p <レベル>指定レベル以上のログだけ
--since --until期間を絞る。--since "1 hour ago" も可
-n <件数>末尾から指定件数だけ。-f は追尾
-kカーネルのメッセージだけ。--no-pager でページャを外す

journald の記録は既定では /run/log/journal/ に置かれ、再起動すると消えます。永続化するには /var/log/journal/ を作るか、/etc/systemd/journald.conf に Storage=persistent を書きます。

logrotate の rotate は残す世代数

設定は、対象のログのパスに続けて項目を波括弧で囲んで並べる形です。周期は daily weekly monthly、rotate <数> が残す世代数で、それより古いものは削除されます。compress は gzip 圧縮、delaycompress は圧縮を1世代遅らせる指定です。missingok は対象ファイルが無くてもエラーにせず、notifempty は中身が空なら回しません。create <権限> <所有者> <グループ> は新しい空ファイルを指定の権限で作り、copytruncate は名前を変えずに中身を切り詰めるのでファイルを開き続けるプロセス向けです。size はサイズ契機、postrotate から endscript はローテーション後に実行するコマンドです。

全体の既定は /etc/logrotate.conf にあり、末尾で /etc/logrotate.d/ を読み込みます。個別の設定はこのディレクトリに置きます。logrotate -d <設定ファイル> なら動かさずに動作を確認できるので、書いたら必ずこれで確かめてください。

試験で狙われるところ

プライオリティは数字が小さいほど深刻で、emerg が 0、debug が 7 です。mail.info は info 以上が全部対象、.none は除外の指定です。@host は UDP 転送、@@host は TCP 転送です。rotate 4 は4回回すのではなく4世代残すという意味です。そして /var/log/wtmp と btmp と lastlog はバイナリなので cat では読めず、last lastb lastlog が要ります。

ヒント

①方針 前半はログを1本書いて拾うだけです。後半はエディタを開かず、ヒアドキュメントで設定ファイルを一気に書きます

②使うコマンド ログを書くのは logger -p <ファシリティ>.<プライオリティ> "<本文>"。拾うのは journalctl --no-pager と grep の組み合わせ。ファイルを書くのは cat <<EOF > <パス> ... EOF です

③部分解 logger -p local0.notice "LINUC-TEST" のあと journalctl --no-pager -n 200 | grep LINUC-TEST > /root/log-report.txt。設定は cat <<EOF > /etc/logrotate.d/linuc で始めて、/var/log/linuc-app.log { の中に weekly, rotate 4, compress, missingok を並べ、} と EOF で閉じます

  • 1. logger -p local0.notice "LINUC-TEST" でログを1本書く
  • 2. journalctl から LINUC-TEST を含む行を探して /root/log-report.txt に保存する。--no-pager を付けるとページャで止まらない
  • 3. /etc/logrotate.d/linuc を作る
  • 4. 設定の中身は /var/log/linuc-app.log を対象に weekly, rotate 4, compress, missingok を含めること
  • 5. logrotate -d /etc/logrotate.d/linuc で書式を確認する

Linux は使うときに起動します(初回は約102MB通信します)

5 項目で採点します