【Rsyslog講座 完結編】全5回の総復習&トラブルシューティング・設定チートシート

Linux

困った時の「虎の巻」

こんにちは!「リナックス先生」です。
全5回のRsyslog構築講座、本当にお疲れ様でした。これであなたもログ管理のスペシャリストです。

コウ君

先生、構築はできたんですけど、時間が経つと「あれ?あの設定どうやるんだっけ?」って忘れちゃいそうです…。
あと、別のサーバーでやろうとしたらエラーが出て焦ってます!

リナックス先生

人間だもの、忘れるのは当然よ。
今回は、各記事へのインデックスと、現場でよくある「ハマりポイント(トラブル)」の解決策をまとめたわ。
困った時はこの記事に戻ってきなさい。

Rsyslog構築講座 インデックス

手順を振り返りたい時はこちらからどうぞ。

【第1回】設計編
なぜログを集めるのか? UDP/TCPの使い分けや、ディスク容量計算(サイジング)の基礎知識。

【第2回】構築編
Rsyslogのインストール、時刻同期(Chrony)、Firewalldによる送信元制限の設定。

【第3回】設定編
RainerScript記法を使った設定ファイルの書き方。IPごとのフォルダ自動振り分け設定。

【第4回】運用編
Logrotateを使ったログの自動圧縮、日付付与、世代管理の設定。

【第5回】保全編
NFSマウントとrsyncスクリプトによる、外部ストレージへの自動バックアップ。

トラブルシューティング(FAQ)

構築中によく遭遇するエラーとその解決策です。

Q1. 外部からのログが届かない(フォルダが作られない)

Check 1: ファイアウォール
firewall-cmd --list-all で 514/udp, 514/tcp が許可されているか、または Rich Rules の IPアドレス制限が間違っていないか確認してください。

Check 2: SELinux
一時的に setenforce 0 を実行してログが届くなら、SELinuxが原因です。
標準以外のポート(5140等)を使っていませんか? semanage port で許可を与える必要があります。

Q2. ログファイルはできるが、書き込めない

原因:ディレクトリ権限
Rsyslogが作成したディレクトリの権限が 700 (rwx------) になっていませんか?
/etc/rsyslog.conf のグローバル設定で以下が設定されているか確認してください。

global( ... DirCreateMode="0755" FileCreateMode="0644" )

Q3. ローカルのログ(/var/log/messages)にも重複して記録される

原因:stop命令の欠落
Rulesetの設定で、処理の最後に stop を書いていないと、処理が通過してデフォルトの設定(/var/log/messagesへの書き込み)まで到達してしまいます。

ruleset(name="remote_rules") {
    action(...)
    stop  # <-- これが超重要!
}

Q4. 設定ファイルの構文エラーが直らない

解決策:デバッグモード
目で見てわからなくても、コンピューターは知っています。以下のコマンドでエラー箇所(行数)を特定してください。

rsyslogd -N1

【保存版】RainerScript設定チートシート

第3回の設定内容をギュッと凝縮しました。コピペ用としてどうぞ。

# /etc/rsyslog.conf の主要設定例

# 1. グローバル設定(権限周り)
global(workDirectory="/var/lib/rsyslog"
       DirCreateMode="0755"
       FileCreateMode="0644"
)

# 2. 受信モジュール(Ruleset紐付け)
module(load="imudp")
input(type="imudp" port="514" ruleset="remote_rules")
module(load="imtcp")
input(type="imtcp" port="514" ruleset="remote_rules")

# 3. テンプレート(保存パス定義)
# 例: /var/log/remote/servers/ホスト名/プログラム名.log
template(name="TplServer" type="string" string="/var/log/remote/servers/%HOSTNAME%/%PROGRAMNAME%.log")
template(name="TplNetwork" type="string" string="/var/log/remote/network/%fromhost-ip%/syslog.log")

# 4. ルールセット(振り分けロジック)
ruleset(name="remote_rules") {
    # IPアドレスで分岐
    if ($fromhost-ip startswith "192.168.10.") then {
        action(type="omfile" DynaFile="TplNetwork" asyncWriting="on")
        stop
    }
    # それ以外
    action(type="omfile" DynaFile="TplServer" asyncWriting="on")
    stop
}

次のステップへ:ログの「可視化」

これで、ログを「集めて、守る」仕組みは完璧になりました。
しかし、テキストデータのログを目視でチェックするのは大変ですよね。

次のステップとして、集めたログをグラフ化したり、キーワードで高速検索できる「ログ可視化サーバー」への挑戦をおすすめします。

  • Graylog: 比較的手軽に導入できる統合ログ管理GUI
  • ELK Stack (Elasticsearch, Logstash, Kibana): 世界標準の分析プラットフォーム

これらのツールと、今回作ったRsyslogサーバーを連携させれば、まさに「司令室」のような監視環境が手に入ります。
インフラエンジニアの道はまだまだ続きます。これからも一緒に学んでいきましょう!

▼実験環境におすすめのVPS

Rsyslogの次は可視化ツールや監視サーバー(Zabbixなど)も動かしたくなりますよね。メモリやディスクを追加しやすいVPSを選んでおくと、サーバーを作り直さずに拡張できて便利です。

【2026年最新】Linuxサーバー構築におすすめのVPS比較3選!現役エンジニアが速度とコスパで厳選
Linuxの勉強、まだ「自分のPC」でやって消耗していませんか?「Linuxを覚えたいけど、環境構築でエラーが出て先に進めない…」「VirtualBoxを入れたらパソコンが重くなった…」これは、Linux学習を始める9割の人がぶつかる壁です...

コメント