Zabbix 1.8でグラフ/マップの文字化け

Zabbixも1.8がかなり浸透してきて、日本語環境でもそろそろ安定したのかな?ということで、自宅の監視環境を1.8にバージョンアップ検証中。ユーザ言語を日本語にして使ってみたところ、グラフとマップに文字化けが。。というわけで、今回はZabbix 1.8を日本後環境で使用する場合の文字化け対処について。

文字化けの原因と対処

まずは現象の確認から。環境はCentOS 5.4 64bitにZabbix 1.8.2をソースからインストール。以下の例では、マップ上のステータス表示文字列が文字化けしてしまっており、運用上非常に見づらい状態となっている。

文字化けの原因は、Zabbixに同梱されている日本語フォント(DejaVuSans)では本来表示したい文字が含まれていないため。つまり、対処としては日本語フォントを追加してあげて、それを使用するようにZabbixのPHP側に修正を加えてやればよい。

ここではまず手っ取り早く文字化けを解決する方法として、OS側で元々導入済みのフォント(sazanami-gothic)をZabbixでも使うことで対処してみる。対処の内容は非常にシンプルで、「/usr/share/fonts/japanese/TrueType/sazanami-gothic.ttf」をZabbixのWeb(frontend)コンテンツのパスにあるzabbix/fontsにリンクするだけ。私のテスト環境では「/var/www/html/zabbix/fonts」に相当する。

<リンクを作成>


# cd /var/www/html/zabbix/fonts/
# ln -s /usr/share/fonts/japanese/TrueType/sazanami-gothic.ttf
# ll
合計 612
-rw-r--r-- 1 zabbix zabbix 622280 3月 30 02:22 DejaVuSans.ttf
lrwxrwxrwx 1 root root 54 4月 14 15:17 sazanami-gothic.ttf -> /usr/share/fonts/japanese/TrueType/sazanami-gothic.ttf
<Zabbix WebのPHPを編集>
続いてPHP側の編集を行う。変更するファイルは「var/www/html/zabbix/include/defines.inc.php」。これも環境により異なるので、RPMなどを利用している方は読み替えて下さい(※未確認だがRPM版だとDejaVuSans以外の日本語フォントも同梱されていたような気もするので、そもそも問題にならないかも?)。

# pwd
/var/www/html/zabbix/include

# diff -u defines.inc.php.orig defines.inc.php
--- defines.inc.php.orig 2010-03-30 02:22:45.000000000 +0900
+++ defines.inc.php 2010-04-14 15:19:08.000000000 +0900
@@ -48,13 +48,17 @@
define('ZBX_POPUP_MAX_ROWS', 20);

define('ZBX_FONTPATH', realpath('fonts')); // where to search for font (GD > 2.0.18)
- define('ZBX_GRAPH_FONT_NAME', 'DejaVuSans'); // font file name
+ //define('ZBX_GRAPH_FONT_NAME', 'DejaVuSans'); // font file name
+ define('ZBX_GRAPH_FONT_NAME', 'sazanami-gothic'); // font file name

define('ZBX_SCRIPT_TIMEOUT', 360); // in seconds
define('ZBX_SCRIPT_BYTES_LIMIT', 1073741824); // 1073741824 is 1MB in bytes
/* END OF USERS DEFINES */

- define('ZBX_FONT_NAME', 'DejaVuSans');
+ //define('ZBX_FONT_NAME', 'DejaVuSans');
+ define('ZBX_FONT_NAME', 'sazanami-gothic');

define('ZBX_AUTH_INTERNAL', 0);
define('ZBX_AUTH_LDAP', 1);

さて、これで完了。文字化けが解消したことを確認してみる。

フォントの追加とカスタマイズ

前述の手順でひとまず文字化けが解消することは確認できた。が、sazanami-gothicってあんまり…ということで、別のフォントに変更する場合の方法についても少しだけ触れておく。新規にフォントを追加する場合は、以下のような手順となる。

  1. フォントをWebからダウンロード
  2. ダウンロードしたフォントファイルをZAbbix Webのfonts/に配置
  3. PHP側で使用するフォントを変更

フォントのダウンロード先はsource-forge などがよいでしょう。