rsyslogd を利用して /var/log/messages に特定のログが出力されないようにフィルタリングしてみた 【RHEL 版】

rsyslogd を利用して /var/log/messages に特定のログが出力されないようにフィルタリングしてみた 【RHEL 版】

Clock Icon2025.03.05

はじめに

テクニカルサポートの 片方 です。
Red Hat Enterprise Linux 9.x などには、無視してもよいエラーメッセージが /var/log/messages に出力されることあります。

※ 出力例

sh-5.1$ sudo grep "Cannot change IRQ" /var/log/messages
Mar  1 04:33:37 ip-10-0-27-162 irqbalance[663]: Cannot change IRQ 28 affinity: Input/output error
Mar  1 04:38:07 ip-10-0-27-162 irqbalance[663]: Cannot change IRQ 29 affinity: Input/output error
sh-5.1$

このエラーメッセージはシステムの動作に影響を与えない警告メッセージですが、ログの可読性向上のため抑制することができます。
そのため rsyslogd を利用して /var/log/messages に特定のログが出力されないようフィルタリングしてみました。

https://access.redhat.com/solutions/7053596
https://access.redhat.com/ja/solutions/1541273

やってみた

お好みの方法で 対象 EC2 インスタンスへ SSH 接続してください。

  1. 設定ファイルを作成します。
$ sudo vi /etc/rsyslog.d/irq-filter.conf
  1. 作成した設定ファイルに記述
if $programname == "irqbalance" and $msg contains "Cannot change IRQ" and $msg contains "affinity" then stop

001
※ 記述後 :wq で保存してください

  1. rsyslogサービス再起動
$ sudo systemctl restart rsyslog

これで終了です。非常に簡単ですね。
検証として、複数回 irqbalanceサービスを再起動させて強制的にログを生成します。

$ sudo systemctl restart irqbalance
sh-5.1$ sudo grep "Cannot change IRQ" /var/log/messages
Mar  1 04:33:37 ip-10-0-27-162 irqbalance[663]: Cannot change IRQ 28 affinity: Input/output error
Mar  1 04:38:07 ip-10-0-27-162 irqbalance[663]: Cannot change IRQ 29 affinity: Input/output error
sh-5.1$

新しいメッセージのみがフィルタリングされ、既存のログファイル内の古いメッセージは残ったままとなります。
上記のように追加で出力されていなければ成功です。

まとめ

フィルタリング設定を行う際は、重要なメッセージを誤って除外しないよう十分にご検討ください。
本ブログが誰かの参考になれば幸いです。

参考資料

アノテーション株式会社について

アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイトをご覧ください。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.