困った時の「虎の巻」
こんにちは!「リナックス先生」です。
全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を選んでおくと、サーバーを作り直さずに拡張できて便利です。



コメント