SJISファイルのログ監視方法について

お世話になっております。
Zabbix1.6.8を使用して、ログを監視を設定しているのですが、
日本語(Shift-JIS)のログファイルの取り込みについて、
お教えいただけませんでしょうか。

[マネージャ]
CentOS 5.4
Zabbix 1.6.8

[エージェント]
Solaris 9
Zabbix 1.6.8
OSデフォルトLANG ja_JP.PCK

------------------------ 設定 ------------------------
[アイテム]
名前 Log Monitor AP ($1)
タイプ ZABBIXエージェント(アクティブ)
キー log[/xxx/xxx/logfile.sjis]
        ログファイル日本語文字コードはShift_JIS
データ型 ログ
更新間隔(秒) 1
例外の更新間隔(秒) (設定無し)
ヒストリの保存期間(日) 365

------------------------------------------------------

対象ログを「監視データ」-「ヒストリ」より収集されたログを見ると日本語文字列以降が欠落しています。

(ログファイルの内容)
2010/08/24 19:07:56 [INFO ][hostname][ABCDEFGHIJ ][02][ ] 処理が正常終了しました。 [info.framework.batch.successBatch]

(Zabbixで取りこんだ表示)
2010/08/24 19:07:56 [INFO ][hostname][ABCDEFGHIJ ][02][ ]

ログファイルをUTF-8へnkfへ変換して、Zabbix取り込んでみたところ、日本語も正常に取り込めていました。

対象ログファイル出力でUTF-8への変更することは難しいので、可能であれば、Shift-JISをUTF-8に変換して
Zabbixに取り込みたいと思っているのですが、そのようなことは可能でしょうか?

また、Windowsイベントログ監視では、zabbix_agentd.confへ「Encoding=utf8」を設定することで、
エンコードの変更が可能のようなのですが、UNIXでそのようなことを実現する方法などありましたら、
ご教授いただきたいです。

http://www.zabbix.jp/modules/newbb/viewtopic.php?topic_id=272&forum=6&post_id=1727

よろしくお願いいたします。

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー kodai の写真

こんにちは。

1.6系ですと、テキストログはUTF-8以外には対応していません。

1.8系からは様々なエンコードに対応していますので、EUC-JPやShiftJISのテキストログを監視される場合は1.8を利用いただく必要があります。

ユーザー kiytakah の写真

kodai さま、

ご返信ありがとうございます。

1.8系へのアップデートを検討するようにいたします。

今後ともどうぞよろしくお願いいたします。

ユーザー kiytakah の写真

お世話になっています。

Versionを1.6.8 => 1.8.3へアップデートしてみたところ、
多くのサーバでSJIS日本語ファイルがZabbixで正常に取り込めるようになった
のですが、一部のサーバで正常に取り込めない事象がおこりました。

AgentのDebugLevelを4に設定し、確認したところ、AgentからMangerへ渡す際に
正常の渡せていないのではないかと思われました。

マネージャーログ監視設定
キー log[/home/zabbix/check.log,,SHIFT_JIS,]

(正常に取り込めるサーバのagent.log)
"data":[
{
"host":"hostname1",
"key":"log[\/home\/zabbix\/check.log,,SHIFT_JIS,]",
"value":"あいうえお",  ←文字化けしていない
"lastlogsize":20,
"clock":1283857433}],

(正常に取り込めない場合のagent.log)
"data":[
{
"host":"hostname2",
"key":"log[\/home\/zabbix\/check.log,,SHIFT_JIS,]",
"value":"・「・、・ヲ・ィ",  ←文字化けしていない
"lastlogsize":43,
"clock":1283858986}],

どちらもSolaris9のサーバで、Zabbixエージェントは1.8.3になっています。
また当然ながら、MySQL側には文字列が欠けてデータが格納されていました。

(正常に取り込める場合)
mysql> select itemid, lastvalue from items where itemid = 28936 ;
+--------+-------------+
| itemid | lastvalue |
+--------+-------------+
| 28936 | あいうえお |
+--------+-------------+

(正常に取り込めない場合)
mysql> select itemid, lastvalue from items where itemid = 28937 ;
+--------+-------------+
| itemid | lastvalue |
+--------+-------------+
| 28937 | |
+--------+-------------+

何かサーバ側の環境依存か、またはZabbixマネージャー側の設定なのでしょうか。 :-(

大変恐縮ですが、解決策やアドバイスをご教授頂けないでしょうか。

ユーザー TNK の写真

正常に取り込めない場合のagent.logで「文字化けしていない」と書かれていますが、フォーラム上では文字化けしているようにみえます。本当は、「文字化けしている」と示されたかったのでしょうか?
それともkiytakahさんの環境では文字化けしていないのでしょうか?

文字化けしていないのであれば、書き込み自体は文字化けしてしまっているようですので、具体的にどのような文字であったのかをお教えいただけないでしょうか?

そして、エージェントのログの段階で文字化けしてしまっているのであれば、エージェント側の問題の可能性が高いと思われます。
文字コードの変換は、iconv()を利用していたと思いますので、iconv()に必要なファイルが文字化けしてしまう環境上で不足しているのかもしれません。

具体的に何が原因かまではわかりませんが、文字化けしない環境と文字化けする環境とで、インストールされているパッケージやソフトウェア、そして環境の設定の違いがないか確認してみてください。

ユーザー kodai の写真

こんにちは。

TNKさんの指摘の通り、コンパイル時にiconvのライブラリがないと、エンコード変換の処理が行われないようになっています。

Solarisの場合はGNU iconvをインストールしてからエージェントのコンパイルを行えばエンコード変換が機能するはずです。

ユーザー kiytakah の写真

お世話になっています。

TNKさん、kodaiさんのご指摘通り、iconvパッケージが不足していたことが原因でした。
無事、SHIFT_JISの日本語ログファイルを監視することができるようになりました。

参考までに、今回の日本語が正常に取り込めなかったサーバですが、

・Zabbix Agent はZabbix SIAよりバイナリを入手し使用。
 http://www.zabbix.com/downloads/1.8.3/zabbix_agents_1.8.3.solaris9.sparc.tar.gz
・Solaris9 で OSは最小構成でインストール(SUNWCreq - Core System Support )
  → よって、iconv系pkgがインストールされていなかった。
  → 正常にSJIS日本語ファイルを扱えるサーバは、(SUNWCprog - Developer System Support)でした。
・Iconv関係のパッケージを追加
SUNWjiu8(x) Japanese iconv modules for UTF-8 (64-bit)
SUNWuiu8(x) Iconv Modules for UTF-8 Locale (64-bit)
SUNWuium Iconv Man Pages for UTF-8 Locale

という感じでした。

正常に取り込めない場合のagent.logで「文字化けしていない」と書かれていますが、フォーラム上では文字化けしているようにみえます。本当は、「文字化けしている」と示されたかったのでしょうか?

TNKさん>
すみません。こちらは誤記でした。TNKさんのおっしゃる通り「文字化けしている」と記載すべきでした。

ご教授いただき、ありがとうございました。

これで無事ログ監視についても、運用開始できそうです。 :-)