RHEL10 Zabbix7.0 LTSの導入と、グラフの日本語が豆腐になるのを直す

こんにちは、tukapiyoです。
RHEL10の導入に合わせて、Zabbix 7.0 LTSの導入を行いました。
素直に導入はできなかったのでその方法を簡単に紹介しつつ、グラフの文字化けを直す方法を紹介します。
目次
Zabbix 7.0 LTSの導入
導入できないの?
Zabbixの導入は公式ページに従うと簡単に実施できます…が、Zabbix 7.0 LTSをRHEL10に入れる方法が書かれていない…?のです。
そこで、リポジトリを直接覗いてみます。
公式の手順を10に置き換えて導入していきましょう。
まぁほぼ公式の手順なのですが。
epelリポジトリの除外設定
例に漏れず、epelリポジトリを導入しているため、epelに含まれるzabbix
パッケージを無視する設定を行います。
# vim /etc/yum.repos.d/epel.repo [epel] (..snip..) excludepkgs=zabbix*
Zabbix公式リポジトリのインストール
zabbix-release
パッケージをインストールするだけです。私はdnf
コマンド使う派です。
ここのパッケージは、先ほどのリポジトリの中にある、最新のものを探してください。
# dnf install https://repo.zabbix.com/zabbix/7.0/rhel/10/x86_64/zabbix-release-7.0-7.el10.noarch.rpm # dnf clean all
各種パッケージのインストール
私はDBにMariaDBを使っているのでこれだけです。あと、Agent2を使います。
# dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent2
その後は公式に従ってDBの作成や、設定ファイルの編集などを行ってくださいませ。
グラフの日本語が豆腐になる
発生事象
そんなこんなで導入は終わり、何だかんだでWebインタフェースも利用できるようにしたところで、異変に気づくわけです。
まぁ豆腐になることってよくあるので、調べたところzabbix-web-japanese
パッケージを入れれば良いらしいということで入れます。
# dnf install zabbix-web-japanese
さて解決するかな?
全く解決しないどころか悪化しました。
原因
alternativesによる設定
どうやらZabbixのグラフのフォント種別を司っているのは、alternatives
のようです。
alternatives
は、システム上で同じ機能を提供する複数のファイルを管理して、切り替えて使えるようにする仕組みです。
うちのシステムではalternatives
で以下のファイルを管理していました。
# alternatives --list libnssckbi.so.x86_64 auto /usr/lib64/pkcs11/p11-kit-trust.so soelim auto /usr/bin/soelim.groff cifs-idmap-plugin auto /usr/lib64/cifs-utils/cifs_idmap_sss.so ld auto /usr/bin/ld.bfd iptables auto /usr/sbin/iptables-nft ebtables auto /usr/sbin/ebtables-nft arptables auto /usr/sbin/arptables-nft man auto /usr/bin/man.man-db mta auto /usr/sbin/sendmail.postfix zabbix-web-font auto /usr/share/fonts/google-noto-cjk/NotoSansCJK-Regular.ttc zabbix-server auto /usr/sbin/zabbix_server_mysql
この中に、zabbix-web-font
というのが存在しますね。
zabbix-web-fontの設定内容
alternatives
でzabbix-web-font
をどのように管理しているのか見てみます。
# alternatives --display zabbix-web-font zabbix-web-font - status is auto. link currently points to /usr/share/fonts/google-noto-cjk/NotoSansCJK-Regular.ttc /usr/share/fonts/dejavu-sans-fonts/DejaVuSans.ttf - priority 10 /usr/share/fonts/google-noto-cjk/NotoSansCJK-Regular.ttc - priority 20 Current `best' version is /usr/share/fonts/google-noto-cjk/NotoSansCJK-Regular.ttc.
2つのフォントが設定されており、NotoSansCJK-Regular.ttc
を使うようになっています。
ちなみにこのフォント、RHEL10に存在しません…!
# ll /usr/share/fonts/ 合計 7 drwxr-xr-x. 2 root root 4096 8月 14 17:41 dejavu-sans-fonts drwxr-xr-x. 2 root root 60 8月 14 19:09 fontawesome drwxr-xr-x. 2 root root 32 8月 14 16:09 google-noto-sans-cjk-vf-fonts drwxr-xr-x. 2 root root 36 8月 14 16:09 google-noto-sans-mono-cjk-vf-fonts drwxr-xr-x. 2 root root 33 8月 14 16:09 google-noto-serif-cjk-vf-fonts drwxr-xr-x. 2 root root 65 8月 14 17:41 google-noto-vf drwxr-xr-x. 2 root root 34 8月 14 17:41 redhat-vf
RHEL9には、google-noto-cjk-fonts-common
パッケージが存在し、/usr/share/fonts/google-noto-cjk
ディレクトリがあります。
RHEL10ではパッケージ名が変わったのか、そのようなパッケージはなく、代わりにgoogle-noto-sans-cjk-fonts
やgoogle-noto-sans-cjk-vf-fonts
パッケージになっているようです。
minimalインストールしたRHEL10では、google-noto-sans-cjk-vf-fonts
がインストールされていました。
zabbix-web-japaneseパッケージの意味
では、先ほどインストールしたzabbix-web-japanese
パッケージは何のためにあるのでしょうか。
パッケージを削除して様子を見てみましょう。
# dnf remove zabbix-web-japanese # alternatives --display zabbix-web-font zabbix-web-font - status is auto. link currently points to /usr/share/fonts/dejavu-sans-fonts/DejaVuSans.ttf /usr/share/fonts/dejavu-sans-fonts/DejaVuSans.ttf - priority 10 Current `best' version is /usr/share/fonts/dejavu-sans-fonts/DejaVuSans.ttf.
NotoSansCJK-Regular.ttc
が消えて、DejaVuSans.ttf
になりました。
どうやら、zabbix-web-japanese
はZabbixが使うフォントを日本語に対応したものに切り替えるもののようです。
(まぁその指定したフォントがRHEL10には存在しないのですが。)
解決
zabbix-web-japanese
は今のところRHEL10では無用の長物ですので、手動でフォントを設定することにします。
フォントのインストール
本来使いたい同じフォントにしておいた方が安心だろうということで、(インストールされていなければ)google-noto-sans-cjk-fonts
パッケージを入れておきます。
# dnf install google-noto-sans-cjk-fonts # ll /usr/share/fonts/google-noto-sans-cjk-fonts/ 合計 127608 -rw-r--r--. 1 root root 19629516 4月 30 2021 NotoSansCJK-Black.ttc -rw-r--r--. 1 root root 20050760 4月 30 2021 NotoSansCJK-Bold.ttc -rw-r--r--. 1 root root 18245584 4月 30 2021 NotoSansCJK-DemiLight.ttc -rw-r--r--. 1 root root 18160344 4月 30 2021 NotoSansCJK-Light.ttc -rw-r--r--. 1 root root 18354360 4月 30 2021 NotoSansCJK-Medium.ttc -rw-r--r--. 1 root root 19484784 4月 30 2021 NotoSansCJK-Regular.ttc -rw-r--r--. 1 root root 16727128 4月 30 2021 NotoSansCJK-Thin.ttc
alternativesのlinkの確認
alternatives
にフォントの候補を追加するためには、alternatives --install <link> <name> <path> <priority>
という書式でコマンドを実行すれば良いのですが、<link>
の設定値が分かりません。
なので、zabbix-web-fontの設定ファイルを確認します。
# cat /var/lib/alternatives/zabbix-web-font auto /usr/share/zabbix/assets/fonts/graphfont.ttf /usr/share/fonts/dejavu-sans-fonts/DejaVuSans.ttf 10
/usr/share/zabbix/assets/fonts/graphfont.ttf
が<link>
の設定値だということが分かりました。
alternativesにフォントを追加
先ほどのファイルを直接弄っても良さそうですが、一応コマンドでまっとうに追加します。
# alternatives --install /usr/share/zabbix/assets/fonts/graphfont.ttf zabbix-web-font /usr/share/fonts/google-noto-sans-cjk-fonts/NotoSansCJK-Regular.ttc 30 # alternatives --display zabbix-web-font zabbix-web-font - status is auto. link currently points to /usr/share/fonts/google-noto-sans-cjk-fonts/NotoSansCJK-Regular.ttc /usr/share/fonts/dejavu-sans-fonts/DejaVuSans.ttf - priority 10 /usr/share/fonts/google-noto-sans-cjk-fonts/NotoSansCJK-Regular.ttc - priority 30 Current `best' version is /usr/share/fonts/google-noto-sans-cjk-fonts/NotoSansCJK-Regular.ttc.
先ほどインストールしたNotoSansCJK-Regular.ttc
をプライオリティ30で追加します。
zabbix-web-japanese
はプライオリティ20でフォントを追加していたので、それよりも強くしておけば勝手に変わることもないでしょう。
上記のようにNotoSansCJK-Regular.ttc
が選択されていなければ、以下のコマンドでプライオリティが大きい方が選択されるようにします。
# alternatives --auto zabbix-web-font
修正後
日本語が無事表示されるようになりました。
まとめ
RHEL10のパッケージは存在するものの、公式に導入手順が無かったこともあり、微妙にRHEL10に対応できていなかったのかもしれません。
豆腐になる不具合以外に気づいた不具合はなかったので、このまま使っていきたいと思います。
最近のコメント