[zabbix][docker][文字化け] zabbix-docker の4.2.2からフォントの配置が変わっていた。

2019-06-06 10:09:56Container, zabbixAlpine, container, docker, font, zabbix, フォント, 文字化け, 日本語

皆様、インフラの監視頑張っておりますでしょうか。nagios使っていたり、zabbixを使っていたり、datadogなどを使っていたりするのでしょうか。自分のところは伝統的にzabbixを使用しています。

さらにうちではdockerの上に公式のcontainerイメージによるzabbixを構築し、それを使用しています。

公式のcontainerイメージについては、日本語環境で使用する場合、そのままではグラフにおいて豆腐と呼ばれる状態で表示されることになり、フォントの置き換えが必要です。このことについてはWeb各所でそれ関係の記事を見かけることがあります。

が、alpineイメージのtag 4.2.2については設定が変わってしまったのか、以前までのフォントの置き換えでは日本語が有効になりません。

Webでの情報だと

qiitaの記事では以下のようになっています。

cd data/fonts
ln -s ipag.ttf graphfont.ttf

自分の以前の記事は以下のように書いています。

FROM zabbix/zabbix-web-nginx-mysql:alpine-3.4-latest
RUN echo "http://dl-4.alpinelinux.org/alpine/edge/testing" | tee -a /etc/apk/repositories && \
	apk --update add --no-cache font-ipa && \
	mv /usr/share/zabbix/fonts/graphfont.ttf /usr/share/zabbix/fonts/graphfont.ttf.org && \
	ln -s /usr/share/fonts/TTF/ipag.ttf /usr/share/zabbix/fonts/graphfont.ttf

何が問題?

あれーと思ってgithubのコードを確認してみると、以下のようになっていました。

コードを一部抜粋。フォントに関する部分をパッチで置き換えてたんですな。

 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',		'graphfont'); // font file name
 define('ZBX_GRAPH_LEGEND_HEIGHT',	120); // when graph height is less then this value, some legend will not show up
POINT

こちらの「web-apache-mysql/alpine/conf/tmp/font-config」がゴッソリ削除されているんですよねぇ・・・ 
というわけでgraphfontという指定ではなくなりました。また、フォントの配置も変わっています。

解決策

というわけでフォントパッケージをインストールした場合は、以下のようにシンボリックリンクを張るようにしてやれば良いかと。

mv /usr/share/zabbix/assets/fonts/DejaVuSans.ttf /usr/share/zabbix/assets/fonts/DejaVuSans.ttf.bak
ln -s /usr/share/fonts/TTF/ipag.ttf /usr/share/zabbix/assets/fonts/DejaVuSans.ttf

もしくはホストのフォントを、そのままcontainer側にマウントして置き換えても良いかもしれません。
ホスト側がUbuntu 18.04の場合は以下の通り。

  volumes:
   - /usr/share/fonts/truetype/fonts-japanese-gothic.ttf:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf:ro

これで豆腐表示状態が解消していると思います。少なくとも手元の環境では問題なくグラフの日本語表示ができています。

最初、日本語の表示ができないのでなにか設定を間違えたかなーとか悩んでいました。間違えているようでしたらご指摘いただけると助かります。

2019-06-06 10:09:56Container, zabbixAlpine, container, docker, font, zabbix, フォント, 文字化け, 日本語