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

こんにちは、tukapiyoです。

RHEL10の導入に合わせて、Zabbix 7.0 LTSの導入を行いました。
素直に導入はできなかったのでその方法を簡単に紹介しつつ、グラフの文字化けを直す方法を紹介します。

Zabbix 7.0 LTSの導入

導入できないの?

Zabbixの導入は公式ページに従うと簡単に実施できます…が、Zabbix 7.0 LTSをRHEL10に入れる方法が書かれていない…?のです。

このように、OSバージョンに10が出てきません。

そこで、リポジトリを直接覗いてみます。

10、ありますね…
ということで何かイケそうです。

公式の手順を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の設定内容

alternativeszabbix-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-fontsgoogle-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に対応できていなかったのかもしれません。
豆腐になる不具合以外に気づいた不具合はなかったので、このまま使っていきたいと思います。

おすすめ

コメントを残す

Amazon プライム対象