エレクトロニクス

Linuxでrsyslogを使ったリモートログ管理の基本

背景

システムの稼働状況や障害を素早く把握するには、ログを適切に収集・管理することが重要です。rsyslog は Linux の標準的なログデーモンであり、ファイルへの出力だけでなく、ネットワーク経由で他のサーバーへログを転送する機能を備えています。これにより複数台のサーバーからのログを集中管理でき、監査や分析が容易になります。

手順

1. rsyslog のインストールと起動確認

多くのディストリビューションでは rsyslog が標準でインストールされています。Debian 系では `sudo apt install rsyslog`、RHEL 系では `sudo dnf install rsyslog` で導入できます。インストール後は `sudo systemctl enable --now rsyslog` で起動と自動起動設定を確認します。

2. 受信サーバーの設定

ログを集約する側のサーバーでは rsyslog をリスナーとして設定します。/etc/rsyslog.conf または /etc/rsyslog.d/ 以下の設定ファイルに以下のような行を追加します。`module(load="imudp")` と `input(type="imudp" port="514")` を追加すると UDP ポート514で受信を開始します。TCP で受信する場合は `module(load="imtcp")` と `input(type="imtcp" port="514")` を追加します。変更を保存後 `sudo systemctl restart rsyslog` で設定を反映させます。

3. 送信クライアントの設定

ログを送信したいサーバー側では、/etc/rsyslog.conf または個別の設定ファイルでリモート送信を定義します。例えば `/etc/rsyslog.d/remote.conf` を作成し、`*.* @@logserver.example.com:514` のように記述します。単一の @ は UDP、二重の @@ は TCP を表します。ファシリティや優先度を絞りたい場合は `authpriv.*` や `kern.warning` のように指定します。設定後は rsyslog を再起動します。

4. ログの受信確認とファイルへの保存

受信サーバーでは送られてきたログをどこに保存するかを設定できます。/etc/rsyslog.d/remote.conf などに、`template(name="RemoteFmt" type="string" string="/var/log/remote/%HOSTNAME%/%PROGRAMNAME%.log")` のようなテンプレートを定義し、対応する ruleset で `action(type="omfile" dynaFile="RemoteFmt")` を指定します。これによりホスト名ごとにディレクトリを分けてログを保存できます。適切なパーミッションを設定し、ディスク使用量を監視することも忘れないでください。

5. セキュリティと運用上の注意

リモートログは平文で流れるため、機密性の高い環境では暗号化された転送(例えば TLS)を利用することを検討します。rsyslog には GTLS モジュールがあり、証明書を用意することで暗号化転送を実現できます。また、送信先をホスト名で記述する場合は DNS 障害に備えて IP アドレスも控えておくと安心です。ログの転送設定を行った後は、実際にログが集約されているか定期的に確認し、必要に応じて logrotate などでファイルのローテーション設定を行いましょう。

まとめ

rsyslog を用いてログをリモートに集約することで、サーバー群の運用監視が効率化されます。基本的なインストールと設定を行い、UDP/TCP のポートを開けるだけでシンプルな転送が可能です。テンプレートを活用して保存先を整理したり、TLS による暗号化で安全性を高めるなど、システムの規模や要件に応じて柔軟にカスタマイズできます。集中管理されたログはトラブルシュートやセキュリティ分析に役立ちますので、ぜひ導入を検討してみてください。

  • この記事を書いた人

たけぞう

熊谷に住みながら都内のIT企業でエンジニアをしています。ガジェットやアウトドア用品についてレビューをしていきます。 趣味はスポーツジムでトレーニングやジョギングをすることです。

-エレクトロニクス