目次
はじめに
Linuxシステムの運用において、ログ管理は問題解決やセキュリティ対策の要です。本記事では、Linuxで主に使用されるrsyslogやsystemd-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 |

コメント