サロゲート文字の取り扱い

お世話になっております。

Zabbixの仕様で4バイトサロゲート文字の取り扱いに不明点があり、ご存じの方がいたらご教示ください。
Zabbixを利用した監視でログ監視(logrt)の結果をアクションのメッセージに含めると(ITEM.VALUEマクロを使用)4バイトサロゲート文字が展開されないのですが、そういう仕様なのでしょうか?
サロゲート文字が来たら監視がエラーになる、というのが一番困ると考えていて、無視されるだけなら許容できるのですが、サロゲート文字の取り扱いで動作が不正になるケースはあるでしょうか?

Zabbixは2.0.8を利用しています。よろしくお願いいたします。

コメント表示オプション

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

データベースには何を利用されていますか?
その文字コードには何を利用されていますか?

4バイト文字を扱う場合、MySQLだとutf8だとutf8mb4という文字コー
ドを指定する必要があると思われます。
utf8だと文字化けが発生するでしょう。

MySQLでも、5.5以降でなければutf8mb4は利用できないようです。
http://dev.mysql.com/doc/refman/5.5/en/charset-charsets.html

なお、この文字列処理の問題は、Zabbixの問題ではなく、データベ
ースとそれらにアクセスするために利用するライブラリやツールが
4バイト文字を正常に取り扱えるかの問題だと思われます。

utf8のままの場合、文字化けは発生したり、データベースへの情報
登録時にエラーが発生したりするとは思いますが、監視が止まって
しまうようなことはないと思います。

あと、メッセージで4バイトサロゲート文字が展開されないとのこと
ですが、メールでの送信でしょうか?
Webフロントエンドのイベント上で情報が展開できていて、送信され
たメールを受信した際に展開されていなかったのであれば、

 ・メールの送信方法
 ・利用されているメールサーバ(メールの配送経路も含む)

が4バイトサロゲート文字に対応しているかも確認してみてください。

Webフロントエンドで確認しても展開されていないのであれば、やは
り、文字コードの問題でそもそも正常に受け取れていなかった可能性
が考えられますので、最初に書かせて頂きましたが、データベースの
文字コードをご確認ください。

ユーザー mkt の写真

ありがとうございます。
使っているDBはMySQL5.1で4バイトが使えないので仕方ないのですがZabbixの仕様としてはなにか規定されているのかなと気になった次第でした。
DB挿入時にエラーになるとイヤだなと思ったのですが、ヒストリに登録される時点で消えているので文字が無視されるだけで済みそうかなと思っています。

ユーザー KAZ の写真

mktさん

ログ周りですが、WindowsとLinux、Macで処理が変わるので監視対象のOSとか文字コードとか書いていただくと話がスムースにできるかと。

WindowsのJIS2004で書かれているファイルと仮定して…

以前ソース読んだ記憶では対応していなかったように思えます。
「ヒストリに登録される時点で消えている」という事ですが、物によっては文字化けするかもしれません。

ユーザー mkt の写真

手元にあった手っ取り早い環境(監視対象)がCentOS6.3だったのでWindowsでUTF-8で作ったファイルに4バイト文字を含めてログ監視させてみました。
そうすると、ヒストリには4バイト文字以降の文字列が削除された形で登録されました。

この結果から、非StrictモードでZabbixがMySQLに登録を行い、文字の切り取りが発生したのではと推察しています。