双六工場日誌

平凡な日常を淡々と綴ります。

Zabbix 2.0 のグラフの文字化けを直す、「alternatives」での日本語フォント設定方法

今更感がありますが、Zabbix 2.0 を入れる度にフォントの名前、パス、alternativesの書式を毎回忘れるのでメモ。環境はCentOS 6です。

「alternatives」を使ってZabbix 2.0 の文字化けを直す

Zabbix SIAのパッケージを使って、Zabbix 2.0 (zabbix-web)をインストールした直後は、「DejaVuSans」がグラフ描画用のフォントに指定されていて、Web画面を日本語化した場合、グラフ内の日本語が文字化けして「□」のような文字となってしまいます。これはグラフ描画用のフォントに日本語フォントが指定されていないためです。

f:id:sechiro:20130827025219p:plain

Zabbix SIAのパッケージを使って、Zabbix 2.0のインストールを行った場合、このグラフ表示用のフォントは「alternatives」という設定切替ツールで管理されています。インストール直後の設定を確認すると、以下のようになっており、日本語フォントが設定されていません。

$ alternatives --display zabbix-web-font
zabbix-web-font -ステータスは自動です。
リンクは現在 /usr/share/fonts/dejavu/DejaVuSans.ttf を指しています。
/usr/share/fonts/dejavu/DejaVuSans.ttf - 優先項目 10
現在の「最適」バージョンは /usr/share/fonts/dejavu/DejaVuSans.ttf です。

これに「IPA Pゴシック」を追加して、それに設定を切り替えることでグラフを日本語表示させることができるようになります。そのためには、以下のコマンドを実行します。

$ sudo yum install ipa-pgothic-fonts
$ sudo alternatives --install /usr/share/zabbix/fonts/graphfont.ttf zabbix-web-font /usr/share/fonts/ipa-pgothic/ipagp.ttf 1000

最後の引数の「1000」は優先度。「DejaVuSans」の優先度「10」より大きければ構いませんが、作業者が意図的に変更していることがあとからわかるようにここでは大きい値を設定しました。

以下のように、設定が変更されたことを確認します。

$ alternatives --display zabbix-web-font
zabbix-web-font -ステータスは自動です。
リンクは現在 /usr/share/fonts/ipa-pgothic/ipagp.ttf を指しています。
/usr/share/fonts/dejavu/DejaVuSans.ttf - 優先項目 10
/usr/share/fonts/ipa-pgothic/ipagp.ttf - 優先項目 1000

設定変更は、これで完了です。Webブラウザからグラフを確認してみてください。「□」のところが、日本語表示となっているはずです。

f:id:sechiro:20130827025240p:plain

「alternatives」の仕組み

ここまでで設定変更としては十分ですが、せっかくなので「alternatives」コマンドのことも補足として書きたいと思います。

「alternatives」は、複数の設定を都度入れ替えて使えるようにする仕組みです。内部では、設定された内容でシンボリックリンクの張替えを行う。今回の設定の後、変更されたシンボリックリンクの内容を確認すると以下の通りとなっていました。*1

$ ll /usr/share/zabbix/fonts/graphfont.ttf
lrwxrwxrwx 1 root root 33  827 02:15 2013 /usr/share/zabbix/fonts/graphfont.ttf -> /etc/alternatives/zabbix-web-font
$ ll /etc/alternatives/zabbix-web-font
lrwxrwxrwx 1 root root 38  827 02:15 2013 /etc/alternatives/zabbix-web-font -> /usr/share/fonts/ipa-pgothic/ipagp.ttf

「alternatives」が書き換えているシンボリックリンクを直接「ln」コマンドを使って書き換えても同等の設定は可能です。ネットを検索した限りだとその手順も多いですが、パッケージが「alternatives」を使っているので、その流儀に従う方がベターだと思います。

ちなみに、ターミナルで「alternatives」とだけ打つと、以下のように新規設定の方法が表示されますが、かなり直感的ではありません…。

alternatives --install <リンク> <名前> <パス> <優先度>

ここで表示されているそれぞれの引数の意味は以下の通りです

  • <リンク>は、管理したい設定ファイルのパスです。今回はZabbixグラフ描画用フォントファイル「/usr/share/zabbix/fonts/graphfont.ttf」です。
  • <名前>は、alternatives上での設定管理名で、今回は「zabbix-web-font」*2
  • <パス>は、追加する設定ファイルへのパスで、今回は新たにインストールした「/usr/share/fonts/ipa-pgothic/ipagp.ttf」です。
  • <優先度>は、複数の<パス>が設定されている場合の優先度。値が大きいほうが優先的に使用される。今回はもともとの「DejaVuSans」に「10」が設定されていたので、追加した「IPA Pゴシック」に「1000」を指定して、そちらが優先的に使われるようにしました。ただし、優先度にかかわらず、以下に紹介する方法で、直接使用する<パス>を設定することもできます。

また、今回行った設定を元に戻したい場合は、以下のコマンドを使います。コマンドを実行すると、対話的に設定を選ぶことができます。追加設定時は面倒ですが、その後の切替は楽ですね。

$ sudo alternatives --config zabbix-web-font

設定の際の参考になれば。それでは。

追記: 「zabbix-web-japanese」 をインストールすればよいとの情報をいただきました。

@ さんから、以下の情報をいただきました。

このパッケージは、Zabbix SIAのリポジトリに含まれているファイルで、中身を確認したところ、以下のコマンドで「alternatives」の設定を追加して、日本語フォントを設定してくれるもののようです。

/usr/sbin/update-alternatives --install /usr/share/zabbix/fonts/graphfont.ttf zabbix-web-font /usr/share/fonts/vlgothic/VL-PGothic-Regular.ttf 20

以下のコマンドでインストールできます。

$ sudo yum -y install zabbix-web-japanese

インストールして、結果を見たところ、僕の環境では以下のような設定がなされました。

$ alternatives --display zabbix-web-font
zabbix-web-font -ステータスは自動です。
リンクは現在 /usr/share/fonts/ipa-pgothic/ipagp.ttf を指しています。
/usr/share/fonts/dejavu/DejaVuSans.ttf - 優先項目 10
/usr/share/fonts/ipa-pgothic/ipagp.ttf - 優先項目 1000
/usr/share/fonts/vlgothic/VL-PGothic-Regular.ttf - 優先項目 20
現在の「最適」バージョンは /usr/share/fonts/ipa-pgothic/ipagp.ttf です。

優先度「20」で「VL-PGothic-Regular」の設定が追加されていますね。ただ、手動で設定したものより優先度が低いので、そのままだと設定が変わらず。以下のコマンドを実行して、「3」を選ぶと追加でインストールした設定に切り替えることができました。

$ sudo alternatives --config zabbix-web-font

3 プログラムがあり 'zabbix-web-font' を提供します。

  選択       コマンド
-----------------------------------------------
   1           /usr/share/fonts/dejavu/DejaVuSans.ttf
*+ 2           /usr/share/fonts/ipa-pgothic/ipagp.ttf
   3           /usr/share/fonts/vlgothic/VL-PGothic-Regular.ttf

Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:3

*1:/etc/alternatives以下にシンボリックリンクが貼られていれば、そのファイルはalternativesに管理されているファイルということになります。

*2:これが/etc/alternatives以下に作成されるシンボリックリンクの名前になっています。そのため、変更対象の設定名がわからない場合は、/etc/alternativesのシンボリックリンクファイル名から名前を調べることができます