システムログ管理の基本とrsyslog・journalctl・logrotateの使い方

目次

はじめに

Linuxシステムの運用において、ログ管理は問題解決やセキュリティ対策の要です。本記事では、Linuxで主に使用されるrsyslogsystemd-journalによるログ管理の仕組みと、logrotateによるログのローテーションと圧縮の自動化について詳しく解説します。


1. Linuxにおけるログの役割とは?

ログは、システムやアプリケーションの動作記録であり、以下の目的に使われます。

  • 障害やエラーの原因調査
  • セキュリティ監査
  • システム動作の可視化
  • 中央ログ管理(サーバー管理の集中化)

2. rsyslogの基本設定と使い方

rsyslogとは?

rsyslogは、システムログ(syslog)を記録・転送・整形するためのデーモンです。多くのディストリビューションで標準搭載されています。

主な設定ファイル

ファイル内容
/etc/rsyslog.confメインの設定ファイル
/etc/rsyslog.d/設定ファイルの追加用ディレクトリ
/var/log/各種ログファイルの出力先

ログの記録ルール(ファシリティ・優先度)

ログの分類には以下の形式を使います:

ファシリティ.優先度     アクション

例:全ての認証関連ログを /var/log/auth.log に記録

authpriv.*    /var/log/auth.log

主なファシリティ例

  • auth, authpriv: 認証関係
  • cron: cronジョブ
  • daemon: デーモン
  • kern: カーネル
  • mail: メール
  • syslog: syslog自体
  • user: 一般ユーザ関連

主な優先度(低→高)

  • debug, info, notice, warning, err, crit, alert, emerg

3. ログの送信と受信(中央ログサーバーの設定)

ログの送信設定(クライアント側)

例:ログを192.168.1.100のログサーバーに送信

*.*  @@192.168.1.100:514
  • @ → UDP送信
  • @@ → TCP送信

ログの受信設定(サーバー側)

rsyslog.conf に以下を追加:

module(load="imudp")   # UDP受信
input(type="imudp" port="514")

module(load="imtcp") # TCP受信
input(type="imtcp" port="514")

ログを /var/log/remote.log に記録する例:

*.* /var/log/remote.log

4. systemdのジャーナル管理(journalctl

ジャーナルログとは?

systemd-journald はバイナリ形式でログを保持し、細かいフィルタ・時系列管理が可能です。

ログの確認方法

journalctl

フィルタオプション例

journalctl -u sshd                # 特定のサービス
journalctl --since "1 hour ago" # 過去1時間
journalctl -p err # 優先度がerr以上

永続保存の設定(通常はメモリ上)

sudo mkdir -p /var/log/journal/
sudo systemctl restart systemd-journald

ジャーナルログの削除

sudo journalctl --vacuum-time=7d    # 7日より古いログを削除
sudo journalctl --vacuum-size=1G # サイズが1GB超なら削除

5. logger/systemd-catによるカスタムログ出力

logger(syslogに記録)

logger "Hello from logger command"

systemd-cat(journalに記録)

echo "Something happened" | systemd-cat -t myscript

6. logrotateによるログの自動ローテーションと圧縮

ログファイルが巨大になるのを防ぐため、logrotate で自動管理します。

主な設定ファイル

  • /etc/logrotate.conf:グローバル設定
  • /etc/logrotate.d/:アプリケーションごとの設定ファイル

基本的な設定例(/etc/logrotate.d/myapp

/var/log/myapp.log {
weekly
rotate 4
compress
missingok
notifempty
}
  • weekly:週ごとにローテート
  • rotate 4:4世代まで保持
  • compress:gzipで圧縮
  • notifempty:空ファイルはスキップ

テスト実行

sudo logrotate -d /etc/logrotate.conf

まとめ

機能コマンドまたはファイル
rsyslogの設定/etc/rsyslog.conf, rsyslog.d/
ログの確認journalctl, less /var/log/*
ログ出力logger, systemd-cat
ログのローテーションlogrotate, /etc/logrotate.d/
ジャーナル永続化/var/log/journal/, journald.conf
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次