2009年12月15日火曜日

Zabbix 1.8のグラフの文字化け

Zabbix 1.8ではグラフの表示方法が大幅に変わっていて、日本語が文字化けしてしまいます。(赤線の部分)


文字化けの原因は英語フォントを利用しているためで、日本語フォントを指定すれば日本語を表示することができます。ひとまずCentOSに付属しているさざなみフォントを利用して表示してみました。

まず、ZabbixのWebインターフェースのファイルがあるディレクトリの、fontsディレクトリにOSのフォントのシンボリックリンクを張ります。

# cd /usr/share/zabbix/fonts
# ln -s /usr/share/fonts/japanese/TrueType/sazanami-gothic.ttf .

次にWebインターフェースのファイルがあるディレクトリのinclude/defines.inc.phpの48行目あたり

44         define('ZBX_MAX_PERIOD',                        2*365*86400);   // ~2 years
45         define('ZBX_PERIOD_DEFAULT',                    3600);          // 1 hour
46 
47         define('ZBX_FONTPATH',                          realpath('fonts'));     // where to search for font (GD > 2.0.18)
48         define('ZBX_GRAPH_FONT_NAME',                   'DejaVuSans');          // font file name
49 /* END OF USERS DEFINES */
50 
51         define('ZBX_AUTH_INTERNAL',     0);

の「DejaVuSans」を「sazanami-gothic」に書き換えます。

するとグラフの凡例やタイトルは日本語を表示できたのですが、グラフの横軸の時間の表示が正常に表示されませんでした。この縦書き表示部分にはphpのImageStringUp関数が使用されているのですが、フォントとの相性があるようです。すべてのフォントで正しく表示させるためにはいちど横書きにして90度回転させた方がよさそうです。


試しにIPAフォント(再配布条件がややこしい旧バージョンのもの)を使ってみるときれいに表示できてます。でもフォントファイルだけ再配布できないので、ZABBIX-JPのRPMでは含められないですね...。


再配布条件が緩くなった現在のIPAフォントだとなぜか文字間の幅が広がってしまいます。


ということで、たんにフォントを置き換えただけでは表示上の問題やライセンスの問題でZABBIX-JPのRPMは作成できそうにありません。いちどsazanami-gothicを使って正常に表示させることができないかphp側の修正を試してみようと思います。

2009/12/18追記: Zabbix 1.8のグラフの文字化け(2)

0 件のコメント: