Windows Eventlog監視で日本語の情報が取得できません
いつもお世話になっております。
ZABBIX1.6.6にて、Windows Eventlog監視設定を行いましたが日本語の箇所が抜け落ちてしまいます。
MySQLにログインしhistory_logテーブルを参照すると、同様に日本語の箇所が抜け落ちています。
Linuxでは日本語のテキストファイルは取得可能です。
確認済み事項
・my.cnfには以下の設定を入れています。
[mysqld]
default-character-set=utf8
skip-character-set-client-handshake
・zabbix_agentd.confには以下の設定を入れています。
Encoding=utf8
・MySQL言語まわりは以下の通りです。
mysql> show variables like "char%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
・下記コマンドでもDEFAULT CHARSET=utf8を確認しました。
mysql> show create table zabbix.history_log;
(前略)
| history_log | CREATE TABLE `history_log` (
`id` bigint(20) unsigned NOT NULL default '0',
`itemid` bigint(20) unsigned NOT NULL default '0',
`clock` int(11) NOT NULL default '0',
`timestamp` int(11) NOT NULL default '0',
`source` varchar(64) NOT NULL default '',
`severity` int(11) NOT NULL default '0',
`value` text NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `history_log_2` (`itemid`,`id`),
KEY `history_log_1` (`itemid`,`clock`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
(後略)
・php.iniのdefault_charsetは下記の通りです。
default_charset="UTF-8"
他に設定を確認・変更すべき箇所はありますでしょうか。
毎度お手数お掛け致しますが、よろしくお願い致します。
TNK - 投稿数: 4744
一応確認させて下さい。
利用されているZABBIX 1.6.6は、このZABBIX-JPで配布されているパッケージを利用されていますか?
それとも本家からソースをダウンロードしてコンパイルし導入されたものですか?
もし、本家から入手されたものであった場合、Windowsイベントログの日本語には対応していなかったと思います。
1.6系でWindowsのイベントログの日本語を取り扱われたい場合は、ZABBIX-JPのパッケージを利用されるか、ZABBIX-JPのパッケージで利用しているパッチを適用して環境を構築される必要があります。
ちなみに、Zabbix 1.6.8-2.JPのリリース案内は、以下のURLにあります。
http://www.zabbix.jp/modules/news/article.php?storyid=175
このリリースにも書かれている通り、Windowsのイベントログの日本語対応に関しては、オリジナルから修正して対応して頂いたもののようです。
sgym - 投稿数: 66
TNK様
ご返信ありがとうございます。
本家からダウンロードした「zabbix-1.6.6.tar.gz」を解凍し導入したものです。
本家1.6系ではWinの日本語には対応していないのですね。確認不足でした。
ZABBIX-JPのパッケージ(zabbix-1.6.8-2.el5.JP.i386.rpm)を利用し再構築します。
ありがとうございました。
sgym - 投稿数: 66
下記RPMパッケージをzabbixサーバへインストールしたのですが、Windows(WinXP SP3)のログ(テキストファイル、イベントログ)の値自体が取得できない状況が続いています。
zabbix-1.6.8-2.el5.JP.i386.rpm
zabbix-server-1.6.8-2.el5.JP.i386.rpm
zabbix-server-mysql-1.6.8-2.el5.JP.i386.rpm
zabbix-web-1.6.8-2.el5.JP.i386.rpm
zabbix-web-mysql-1.6.8-2.el5.JP.i386.rpm
zabbix-agent-1.6.8-2.el5.JP.i386.rpm
これとは別に構築しているzabbixサーバ(1.6.6)では監視対象のWindows(WinXP SP3)に対して、当然ながらマルチバイト文字は見れませんが、値自体は取得できているので何がネックとなって取得できていないのか分かりません。
サーバ側のzabbix_server.logやエージェント側のzabbix_agentd.logにもエラーがはかれていないため、何か解決策がないものかと思案しております。
TNK - 投稿数: 4744
eventlog[]でログが取得できない場合、可能性として考えられるのは、
A. そもそも監視対象のZabbix Agentに接続できない
・Firewallの設定で制限できない
・zabbixサーバに設定した監視対象のIPアドレスが誤っている
B. 接続はできるが監視できない
・zabbix_agentd.confのServerの値が誤っている
・Hostnameとzabbixサーバ側の値が一致していない
・zabbix_agentd.confのListenIPの値が誤っている
C. 接続し監視はできるがeventlog[]で値が取得できない
・Active Checkが無効になっている
(DisableActive=1になっている)
などが考えられます。
今回の場合、別のzabbixサーバからであれば値取得ができるということですので、可能性として残されるのは、
・zabbix_agentd.confのServerの値が誤っている
ではないかと予想しています。
それ以外にも気になっている点としては、
・zabbixエージェント側にはどのバージョンのものを利用されていますか?
・テンプレートのTemplate_Windowsなどを利用して他の項目の値は取得できますか?
などが挙げられますので、この点に関して状況をお教え頂ければと思います。
ちなみに、手元の環境で、
zabbixサーバ側
Zabbix 1.6.8-2.JP(MySQL版)
CentOS 5.4
zabbixエージェント側
zabbix_agent-1.6.8-1.JP_installer.exe
Windows XP SP3
を利用して、Windows XPのFirewallの設定でポート番号10050の外部からの接続を許可し、zabbix_agentd.confの「Server」「Hostname」「ListenIP」「DisableActive」の設定をすることでeventlog[]の値の取得ができています。
--- 追記 ---
zabbix_agentd.exeを、本家の1.6.6のtar ballに含まれるものに入れ替えて、
タイプ: ZABBIXエージェント(アクティブ)
アイテム: eventlog[system]
という設定にしてみましたが、値は取得できるものの日本語メッセージは取得できなくなりました。
つまり、エージェント側もサーバ側に合わせてZABBIX-JPがリリースしている同じバージョンのものを利用する必要があると思います。
sgym - 投稿数: 66
TNK様
zabbix_agentd.confのServerの値と、Webフロントエンドの[設定]->[ホスト]の[名前]欄にある対象マシンは一致しています。
本家の1.6.6だったので、zabbix_agent-1.6.8-1.JP_installer.exeを利用して、インストールし直しました。
デフォルトのTemplate_Windowsを使い、キーに指定されている
・perf_counter[\PhysicalDisk(_Total)\Avg. Disk Read QUeue Length]
・vfs.fs.size[c:,free]
・system.cpu.load[,avg5]
など、他の項目は問題なく取得できています。
しかし、
・eventlog[system]
・log[C:\zabbix\logtest.txt]
などのログ監視系だけが依然として取得できません。
ちなみにですが、今回エージェントを本家の1.6.6からzabbix_agent-1.6.8-1.JPにしたことにより、別サーバ(1.6.6)から見たイベントログ監視(eventlog[])で日本語の文字化けが解消されました。テキストファイルの監視(log[])は半角英数は取得できますが、日本語が抜け落ちたままでした。
TNK - 投稿数: 4744
本当にこのように設定されていたら、監視できないと思います。
ログ以外は監視できているようですので、ホストの名前の欄に指定した文字列は、Hostnameにきちんと設定されているのではないでしょうか?
やはり気になるのは、Serverの値です。
もしかして、1.6.6のサーバと1.6.8のサーバの両方のIPアドレスを、zabbix_agentd.confのServerに指定されていませんか?
この場合、どちらかのサーバにしかログは転送されなかったと思います。
log[]の方は、文字コードの問題だと思われます。
C:\zabbix\logtest.txtには、Shift-JIS(CP932)でログを出力されていませんか?
恐らく、UTF-8に変換されず、そのままの文字コードでZabbixサーバ側に送られたため、日本語が認識されないのだと思われます。
ちなみに、Zabbix 1.8.xだと文字コードの指定ができるようになったようです。
http://www.zabbix.com/documentation/1.8/manual/log_file_monitoring
sgym - 投稿数: 66
TNK様
大変失礼致しました。返信内容に誤りがありました。
誤
zabbix_agentd.confのServerの値
正
zabbix_agentd.confのHostnameの値
の間違いです。
こちらは過去のスレッドでも話題に出ていましたので、下記のように監視元を変更する場合はどちらか片方をコメントアウトするようにしています。
#Server=x.x.x.1
Server=x.x.x.2
下記の用途で使用しています。
x.x.x.1→本番用
x.x.x.2→検証用
ANSI→UTF-8へ変更して新たにログを出力させましたが変化はありませんでした。
[監視データ]->[最新データ]で値を見ると、「最新のチェック」「最新の値」「変更」の値が全て「-」と表示されています。
1.8系が安定してくるのを待った方が良いでしょうかね。。。