■ はじめに
こんにちは。
Hinemosでシステムログやログファイルを監視している際、監視履歴に通知される「オリジナルメッセージ」が読めない状態(文字化け)になることがあります。
今回はそのような状況に陥った場合の、対処方法について説明します。
■ 監視メッセージにて、文字化けが発生する原因
監視メッセージの文字化けは、監視対象のログファイルの文字コードと、監視設定にて設定している読み取り側の文字コードが一致していないために発生します。
文字化けが発生すると、Hinemosマネージャ側で設定した「正規表現(パターンマッチ)」も正しく機能しません。
■ 文字化けが発生するケース(例)
例えば、以下のような環境で発生しやすくなります。
・Linux/Windows環境(ファイルエンコーディングのデフォルト設定、UTF-8)で、EUC-JPで出力されるアプリケーションのログを監視した場合。
【具体例:ログファイル監視】
監視対象のログに 「ERROR: 接続に失敗しました」 と出力されていても、
Hinemosマネージャ上のイベント履歴では「 ERROR: ??????? 」のように表示され、メッセージ内容を確認することができない状態になります。
■ 対処方法
1. ログファイル監視の場合
ログファイル監視では、監視設定ごとに文字コードを指定することが可能であり、以下の手順で設定します。
・設定手順
Hinemosクライアントから「監視設定[一覧]」より、設定済みのログファイル監視設定を開く。
該当の設定の「ログファイル[作成・変更]」タブ内にあるファイルエンコーディングの項目を確認する。

デフォルト(UTF-8)から、実際のログファイルと同じ文字コードに変更して保存する。
対応する文字コードは以下の通りになります。

2. システムログ監視の場合
システムログ監視(syslog)の場合、エージェントはOSの仕組みを利用してログを受け取りますが、ここでもエージェントの動作環境(ロケール)が影響します。もしsyslog経由で届くメッセージがエージェントの想定外の文字コードだった場合、同様にパターンマッチの失敗やメッセージの欠落が発生してしまいます。
システムログ(syslog)が文字化けする場合は、システムログ監視を、ログファイル監視で代替することで解決できます。 管理対象ノード上の/var/log/messagesをログファイル監視するよう設定して下さい。
※注意: ログファイル監視を利用するには、対象ノードにHinemosエージェントが導入されている必要があります。
・設定変更方法
監視対象のrsyslogは下記設定ファイルを以下のように修正してください。
/etc/rsyslog.d/rsyslog_hinemos_agent.conf

設定変更を行わずに「ログファイル監視」を追加すると、同じエラーログ1件に対してHinemos上で2通のイベント通知が発生し、同一の内容が二重に監視されてしまいますのでご注意下さい。
システムログ監視をログファイル監視で代替する際は、必ず「rsyslog側での転送設定」を停止(コメントアウト)し、監視ルートを一本化する必要があります。
さらに「1. ログファイル監視の場合」と同様に、ログファイルの監視設定にて、ファイルエンコーディングを実際の読み込むログファイルと同じ文字コードに変更します。
/var/log/messagesに出力するマルチバイト文字列はShift-JISに限定して下さい。
UTF-8で/var/log/messagesに出力しているマルチバイト文字列がある場合、 Shift-JISで読み込もうとするため、その文字列は文字化けします。
以下が実際の設定例になります。

監視設定での文字コード指定は、Hinemosエージェント全体の挙動を変えることなく、特定のログに対してのみピンポイントで適用できるため、システムの他機能への影響を最小限に抑えられます。もし、この設定変更を行っても文字化けが解消されない場合は、出力元のアプリケーション側が想定外のエンコーディングで書き込みを行っていないか、あるいはファイル内に複数の文字コードが混在していないかを再確認してください。
■ おわりに
Hinemosで日本語ログを正しく扱うには、実際のログファイルのエンコード(UTF-8やMS932など)を、監視設定におけるファイルエンコーディングの項目と一致させることで、文字化けすることなく利用することが可能です。
ぜひ、これからのHinemosの運用にお役立てください。
Xをフォローする
メルマガに登録する