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

Containerzabbix

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

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

GitHub - zabbix/zabbix-docker: Official Zabbix Dockerfiles
Official Zabbix Dockerfiles. Contribute to zabbix/zabbix-docker development by creating an account on GitHub.

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

Dockerで建てたzabbixサーバーのグラフの文字化けを治したい | 日本Zabbixユーザー会
404 Not Found - Qiita - Qiita

が、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のコードを確認してみると、以下のようになっていました。

Removed font processing. Using default font · zabbix/zabbix-docker@48604a1
Official Zabbix Dockerfiles. Contribute to zabbix/zabbix-docker development by creating an account on 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

こちらの「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

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

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

この記事を書いた人

kometchtech

うつ病を患いながら、IT業界の末席にいるおっさんエンジニア。科学計算をしたことがないのに、HPC分野にお邪魔している。興味のある分野で学習したことをblogにまとめつつ、うつ病の経過症状のメモも置いておく日々。じつはRouterboard User Group JPの中の人でもある。 Amazon欲しいものリスト / Arm板を恵んでくれる人募集中

kometchtechをフォローする
タイトルとURLをコピーしました