MIRACLE CLUSTERPRO X および MIRACLE FailSafe の WebManager/Cluster WebUI には、次の複数の脆弱性が存在します。
・認証の欠如の脆弱性(CVE-2023-39544)
・外部からアクセス可能なファイルまたはディレクトリに関する脆弱性(CVE-2023-39545)
・認証バイパスの脆弱性(CVE-2023-39546)
・Capture-replay による認証回避の脆弱性(CVE-2023-39547)
・危険なタイプのファイルの無制限アップロードに関する脆弱性(CVE-2023-39548)
本影響と対策の詳細についてはこちらを御確認ください。
https://www.miraclelinux.com/support/mcpx4/mcpx4-support/clusterpro20231129
MIRACLE ZBXアプライアンスでは、OS全体のパッケージのアップデート方法として、 dnfの--downloadonlyオプションを使用し事前にRPMをダウンロードした後、 dnf updateを行う手順を提供しています。
構築したMIRACLE ZBXアプライアンスにインストールされているdnfのバージョンによっては、 不具合により上記の手順でのパッケージのアップデートに失敗します。
https://bugzilla.redhat.com/show_bug.cgi?id=2070966本記事では、問題を回避し、OS全体のパッケージをアップデートする手順を記載します。
以下のバージョンのdnfがインストールされているMIRACLE ZBXアプライアンスが影響を受けます。
問題を回避するには以下の手順でOS全体のパッケージをアップデートする前に、 dnfのバージョンを4.7.0-9以上にアップデートする必要があります。 rootユーザでログインし、以下の手順に従ってコマンドを実行してください。
# dnf update dnf
# dnf update --downloadonly
MIRACLE FailSafeを使用している場合は、ダウンロード時に依存性の解決に失敗する場合があります。
これはMIRACLE FailSafeとカーネルのバージョンに依存関係があるため、
カーネルのバージョンアップを要求するパッケージがインストールできないためです。
例として、kmod-kvdo パッケージが競合を起こした場合、
以下 のようにアップデート対象から除外してください。
後述のアップデート時も同様にしてください。
# dnf update --downloadonly --exclude=kmod-kvdo
# clpcl -t
# dnf update
# reboot
# clpstat --long
MIRACLE ZBX Virtual Appliance V6.0 Suiteには、 ログのハンドリングに使用可能なMIRACLE Message Handler(以下、MIRACLE MH)が インストールされています。 MIRACLE MHのパッケージに含まれるMIRACLE ZBXエージェントの設定ファイルの権限に不備があり、 MIRACLE ZBXのバージョンを6.0.10-5以上にアップデートしたさいに MIRACLE ZBXエージェントの起動に失敗します。
本記事では、MIRACLE MHのパッケージに含まれるMIRACLE ZBXエージェントの 設定ファイルの権限を変更し、MIRACLE ZBXエージェントを起動する手順を説明します。
以下のMIRACLE ZBXアプライアンス製品が影響を受けます。
対象のMIRACLE ZBXアプライアンス製品のMIRACLE ZBXを 6.0.10-5以上のバージョンにアップデートすると問題が発生します。
問題を回避するには以下の手順でMIRACLE MHのパッケージに含まれる MIRACLE ZBXエージェントの設定ファイルの権限を変更する必要があります。 rootユーザでログインし、以下の手順に従ってコマンドを実行してください。
# chown root:zabbix /etc/zabbix/zabbix_agentd.d/mlmh_agent.conf
# clprsc -t exec-ZabbixAgent
# clprsc -s exec-ZabbixAgent
# clpstat --long
======================== CLUSTER STATUS ===========================
...省略...
failover-ZabbixAgent .............: Online
current : zbx-server
exec-ZabbixAgent : Online
...省略...
MIRACLE ZBX Virtual Appliance V6.0(以下ZBX VA60)には初期状態でウェブサーバーのSSL証明書が含まれています。このSSL証明書は、OSのmod_sslパッケージで提供されるhttpd-initサービスによって作成される自己署名の証明書となっており、ブラウザでアクセスすると証明書が信頼できないという警告メッセージが表示されます。また、ZBX VA60に初期状態で含まれている証明書は2023年5月現在で有効期限が切れています。
本記事では、ZBX VA60でのSSL証明書の問題への対応について説明します。
本記事では、ZBX VA60の初期状態のSSL証明書についての問題への対応として3つ紹介します。
以下の節でそれぞれの手順を説明します。
初期状態で使われている自己署名の証明書を正式なSSL証明書に入れ替える方法について説明します。前提条件として、ユーザー自身が証明書と秘密鍵を用意しておく必要があります。ZBX VA60として証明書の発行はしていません。
SSL証明書を入れ替えるには以下の手順を実施します。
# cp zabbix.crt /etc/pki/tls/certs
# cp zabbix.key /etc/pki/tls/private
/etc/httpd/conf.d/ssl.conf
を編集します。以下2つのパラメーターを設定してください。
SSLCertificateFile /etc/pki/tls/certs/zabbix.crt
SSLCertificateKeyFile /etc/pki/tls/private/zabbix.key
# clprsc -t exec-Apache; clprsc -s exec-Apache
変更が完了したら、ブラウザでMIRACLE ZBXフロントエンドにアクセスして証明書が更新されていることを確認してください。
ZBX VA60に初期状態で含まれている自己署名の証明書を更新する方法について説明します。注意点として、この方法は期限切れになった自己署名証明書を再作成するだけで、ブラウザでアクセスしたときの証明書の検証エラーが解消するわけではありません。
自己署名の証明書を再作成するには以下の手順を実施します。
# rm /etc/pki/tls/certs/localhost.crt
# rm /etc/pki/tls/private/localhost.key
# /usr/libexec/httpd-ssl-gencerts
# openssl x509 -noout -text -in /etc/pki/tls/certs/localhost.crt
有効期限の項目を確認してください。
Validity
Not Before: May 31 05:46:12 2023 GMT
Not After : Jun 4 07:26:12 2024 GMT
# clprsc -t exec-Apache; clprsc -s exec-Apache
変更が完了したら、ブラウザでMIRACLE ZBXフロントエンドにアクセスして証明書が更新されていることを確認してください。
SSL証明書を使用せず、HTTPSの代わりにHTTPでMIRACLE ZBXフロントエンドを使用する方法について説明します。注意点として、この方法では通信内容が暗号化されなくなるため、ログインパスワード等を含む通信内容が平文のままネットワークを流れることになります。
SSL証明書の使用をやめるには以下の手順を実施します。
/etc/httpd/conf.d/ssl.conf
を変更してHTTPSで待ち受けないように修正します。以下の行をコメントアウトしてください。
変更前:
Listen 443 https
変更後:
#Listen 443 https
/etc/httpd/conf/httpd.conf
を変更してHTTPで待ち受けるように修正します。以下の行のコメントアウトを外してください。
変更前:
#Listen 80
変更後:
Listen 80
# firewall-cmd --permanent --zone=public --remove-port=443/tcp
# firewall-cmd --permanent --zone=public --add-port=80/tcp
# firewall-cmd --reload
# clprsc -t exec-Apache; clprsc -s exec-Apache
変更が完了したら、ブラウザでHTTPでMIRACLE ZBXフロントエンドにアクセスできることを確認してください。変更後、ログインに失敗する場合は、Cookieを削除してから再度アクセスしてください。
MIRACLE ZBX 6.0を使ったアプライアンスでは、OSのストールを監視するためにMIRACLE FailSafeやMIRACLE CLUSTERPRO Xのユーザ空間モニタのkeepalive機能を使用しています。このkeepalive機能は専用のカーネルモジュールを使用するため、対応可能なカーネルのバージョンに制限があります。そのため、MIRACLE ZBX 6.0のアプライアンス環境ではカーネルを自由にアップデートできません。本記事では、keepalive機能の代わりにsoftdogを使用することで任意にカーネルをアップデートできるようにするための手順を説明します。
MIRACLE ZBX 6.0を使用したアプライアンスでは、MIRACLE FailSafeやMIRACLE CLUSTERPRO Xのユーザ空間モニタのkeepalive機能を使用してOSのストールを監視しています。keepalive機能では専用のカーネルモジュールが必要であるため、対応可能なカーネルバージョンが制限されており、自由にカーネルをアップデートできません。
この対策の1つとして、keepaliveの代わりにsoftdogを使用することが考えられます。それぞれ利点と欠点があるため、どちらを採用するべきかは運用状況などに応じて判断してください。
ただし、ミラーディスクを使用してクラスタを構築している環境では、ミラーディスクのカーネルモジュールにより対応可能なカ ーネルバージョンが制限されてしまうため、softdogに変更してもカーネルバージョンを任意にアップデートすることはできません。共有ディスクを使用してクラスタを構築している環境やクラスタを構築せずにアプライアンスを使用している環境での対策となります。
keepaliveとsoftdogの特徴について簡単にまとめると以下のようになります。
デフォルトのままkeepaliveを使用する場合は変更は必要ありません。対応可能なカーネルバージョンについてはお問い合わせください。softdogに変更する場合は以下の手順に従って設定してください。
ユーザ空間モニタをkeepaliveからsoftdogに変更する手順を説明します。
# firewall-cmd --zone=public --add-port=29003/tcp
http://<サーバのIPアドレス>:29003
アプライアンスの設定によっては、httpではなくhttpsでのアクセスの場合があります。環境に合わせて読み替えてください。
# firewall-cmd --zone=public --remove-port=29003/tcp
変更後の動作確認について説明します。
# clpstat
出力例は以下のようになります。
======================== CLUSTER STATUS ===========================
Cluster : zbx-server-cluster
<server>
*zbx-server-1 ....: Online
lanhb1 : Normal LAN Heartbeat
lanhb2 : Normal LAN Heartbeat
lanhb3 : Normal LAN Heartbeat
diskhb1 : Normal DISK Heartbeat
pingnp1 : Normal ping resolution
zbx-server-2 ....: Online
lanhb1 : Normal LAN Heartbeat
lanhb2 : Normal LAN Heartbeat
lanhb3 : Normal LAN Heartbeat
diskhb1 : Normal DISK Heartbeat
pingnp1 : Normal ping resolution
<group>
failover-ZabbixA : Online
current : zbx-server-1
exec-ZabbixAge : Online
failover-ZabbixA : Online
current : zbx-server-2
exec-ZabbixAge : Online
failover-ZabbixS : Online
current : zbx-server-1
disk-MySQL : Online
exec-Apache : Online
exec-MySQL : Online
exec-PhpFpm : Online
exec-SnmpTrapd : Online
exec-Snmptt : Online
exec-ZabbixJav : Online
exec-ZabbixSer : Online
fip-ZabbixServ : Online
<monitor>
diskw-MySQL : Normal
fipw-ZabbixServe : Normal
miiw-ens192 : Normal
miiw-ens224 : Normal
miiw-ens256 : Normal
psw-Apache : Normal
psw-MySQL : Normal
psw-PhpFpm : Normal
psw-SnmpTrapd : Normal
psw-Snmptt : Normal
psw-ZabbixAgent1 : Normal
psw-ZabbixAgent2 : Normal
psw-ZabbixJavaGa : Normal
psw-ZabbixServer : Normal
userw : Normal
=====================================================================
serverセクションのハートビートの行がKernel Mode LAN HeartbeatではなくLAN Heartbeatになっていることを確かめてください。また、userwの行がNormalになっていることを確認してください。
# lsmod | grep clp
clpkaやclpkhbが表示された場合はkeepaliveが有効になっていると考えられるため、設定変更の手順を見直してください。
MIRACLE ZBX 6.0のアプライアンスでカーネルをアップデートできるように設定を変更します。デフォルトでは、パッケージマネージャの設定ファイル/etc/dnf/dnf.conf
で以下のように設定されています。
exclude=kernel*,kmod-kvdo
この行からkernel*
とkmod-kvdo
を削除してください。exclude
設定そのものが不要の場合はこの1行を削除しても構いません。
MIRACLE ZBXアプライアンスではMIRACLE FailSafeを使用して必要なサービスを管理しています。このサービス管理の設定において、php-fpmのプロセス監視設定に不備がありました。これにより、サーバメンテナンス等の理由で意図的にphp-fpmサービスを停止したさいに、本来は障害として検知するべきでないphp-fpmプロセス停止についての障害を発報してしまう可能性があります。
なお、本記事の設定不備は通常の監視システム運用に影響を及ぼすものではありません。
以下のMIRACLE ZBXアプライアンス製品が影響を受けます。
上記のアプライアンス製品をもとにカスタマイズを加えて導入している場合も影響を受ける可能性があります。
php-fpmプロセスの監視タイミング設定を変更する必要があります。以下の手順にしたがって設定を修正してください。
MIRACLE FailSafeの設定画面であるCluster WebUIにアクセスするためファイアウォールを設定します。rootユーザでログインして以下のコマンドを実行してください。
# firewall-cmd --zone=public --list-all
以下の例のようにports:
で始まる行に29003/tcp
が含まれていることを確認します。
ports: 443/tcp 10050/tcp 10051/tcp 10052/tcp 162/udp 29003/tcp
含まれていない場合は以下のコマンドを実行してください。
# firewall-cmd --zone=public --add-port=29003/tcp
Cluster WebUIにアクセスしてphp-fpmのプロセス監視タイミングの設定を変更します。ブラウザで以下にアクセスしてください。
http://<サーバのIPアドレス>:29003
パスワードを入力してCluster WebUIにログインします。製品出荷時の初期パスワードは「zabbix」に設定されています。
画面上部にあるモード選択メニューで「設定モード」に変更します。
モニタにある「psw-PhpFpm」のプロパティアイコン(歯車と鉛筆のアイコン)をクリックします。
psw-PhpFpmの設定ダイアログが表示されたら「監視(共通)」タブを開いて「監視タイミング」の項目を変更します。「活性時」を選択して「対象リソース」には「exec-PhpFpm」を選択してください。
変更が完了したら「OK」をクリックしてダイアログを終了します。
最後に、変更を適用するため画面上部の「設定の反映」をクリックします。設定を反映するさいに一時的にクラスタのサスペンドが発生することに注意してください。
設定を反映できたら変更は完了となります。
必要に応じて、最初に設定したファイアウォールの設定を元に戻します。以下のコマンドを実行してください。
# firewall-cmd --zone=public --remove-port=29003/tcp
以上でphp-fpmプロセスの監視タイミングの設定の修正が完了となります。
MIRACLE ZBX Webフロントエンドが動作するPHP環境としてphp-fpmを使用している環境では、使用しているPHPのバージョンやphp-fpmの設定内容によってphp-fpmプロセスのメモリ使用量が増加し、システムに支障をきたす場合があります。php-fpmのメモリ使用量が増加する問題について原因と対策を解説します。
MIRACLE ZBXアプライアンス製品では、以下のバージョンが影響を受けます。
MIRACLE ZBXパッケージを使用して構築している場合、以下のバージョンが影響を受ける可能性があります。
php-fpmのメモリ使用量が増える原因として以下の2つがあります。
使用しているPHPのバージョンによってはメモリリークの不具合の影響を受ける可能性があります。例えば、MySQLiやMySQLndモジュールについて以下のようなメモリリークの不具合が報告されています。
PHPのメモリ管理の仕組み上、処理が完了してもオブジェクトに割り当てられたメモリが解放されず、ガベージコレクション機構によって後からメモリが解放されることがあります。そのため、ガベージコレクションが動作するまでの間、php-fpmプロセスのメモリ使用量が増加します。
PHPのガベージコレクションについては、公式ドキュメントのガベージコレクションを参照してください。
php-fpmプロセスのメモリ使用量が増加する問題への対策として、次の2点を実施してください。
メモリリークなどの不具合が修正されているバージョンを使用するため、PHPパッケージをアップデートする必要があります。OSがサポートしている最新バージョンを使用することを推奨します。MIRACLE LINUX8系OSではPHP 7.4、MIRACLE LINUX 7系OSではSoftware CollectionsのPHP 7.3が最新バージョンとなっています。詳細についてはパッケージ提供元に確認してください。
パッケージのアップデート手順について、MIRACLE ZBX Virtual Appliance V5.0を使用している場合はMIRACLE ZBX Virtual Appliance V5.0でのPHPのアップデートについてを参照してください。その他の環境を使用している場合はパッケージ提供元に確認してください。
PHPの仕様を考慮すると、問題の2つ目の原因として挙げている解放されずに残るオブジェクトによってメモリ使用量が増加する事象については根本的に解決することができません。php-fpmプロセスの設定を変更してシステム全体への影響を低減することが問題への対策となります。
設定変更の内容として次の2点が挙げられます。
php-fpmは多数のリクエストを処理するために複数プロセスで動作するようになっています。このプロセス数を少なくすることにより、プロセス1つあたりのメモリ使用量が増加してもphp-fpm全体としてのメモリ使用量を抑えることができます。
設定ファイル/etc/php-fpm.d/zabbix.conf
を編集しpm.max_children
の値を変更してください。使用環境によって適正な値は変わるため、環境に合わせて設定値を調整してください。例として、プロセス数の上限を5に設定する場合は以下のようになります。
pm.max_children = 5
解放されずに残ったオブジェクトに割り当てられたメモリはガベージコレクションによって解放されますが、ガベージコレクションが動作するのを待たずにphp-fpmのプロセスを再起動することを推奨します。
ガベージコレクションは頻繁に動作するものではないため定常的にメモリ使用量を小さくできるわけではなく、動作する際に負荷が高くなる可能性があるためです。また、MIRACLE ZBX Webフロントエンドに割り当てられるメモリはそれほど多くないという事情を考慮すると、ガベージコレクションが動作するよりも先にメモリ不足による実行時エラーが発生する可能性もあります。
php-fpmプロセスを定期的に再起動するには、設定ファイル/etc/php-fpm.d/zabbix.conf
を編集してpm.max_requests
を設定してください。このパラメーターを設定すると、指定された回数だけリクエストを処理した後にプロセスを再起動するようになります。使用環境によって適正な値は変わるため、環境に合わせて設定値を調整してください。例として、リクエストを500回処理した後にプロセスを再起動する場合は以下のようになります。
pm.max_requests = 500
MIRACLE ZBX Virtual Appliance V5.0(以下、VA50)では、OSとしてMIRACLE LINUX 8 Asianux Inside(以下Asianux 8)を使用しています。VA50の初期状態では、MIRACLE ZBX WebフロントエンドはPHP 7.2を使っていますが、このバージョンは2021年5月でOSのサポートが終了しています。そのため、OSのサポートを受けるにはPHPをアップデートする必要があります。Asianux 8のPHPのサポート期限については、MIRACLE LINUX 8 Asianux Inside - AppStream のサポート期限をご確認ください。
本記事では、VA50においてPHPのバージョンを7.2から7.4にアップデートする手順を説明します。
PHPアップデートの前提条件として、システム全体が最新になっている必要があります。以下のコマンドを実行してシステム全体を更新してください。事前にMIRACLE failsafeのクラスタを停止する必要があります。
# clpcl -t # dnf distro-sync
dnf distro-sync
のコマンドの出力を確認し、内容に従って操作をしてください。必要に応じてdnf distro-sync
コマンドをくり返し実行して、「Nothing to do.Complete!(行うべきことはありません。完了しました!)」というメッセージで終了することを確認してください。
VA50ではMIRACLE failsafeのカーネル互換性を保つため、kernel関連パッケージの更新をしないように設定しています。これに起因して、パッケージを更新する際に依存関係が競合することがあります。この場合は、必要に応じて当該パッケージの更新を除外してください。例えば、kmod-kvdoパッケージが競合を起こした場合は/etc/dnf/dnf.conf
のexclude
にkmod-kvdoを追加します。
exclude=kernel*,kmod-kvdo
php-ext-mariadbパッケージがインストールされている場合は、このパッケージをアンインストールします。インストールされているかどうかを確認するには以下のコマンドを実行します。
# rpm -q php-ext-mariadb
パッケージをアンインストールするには、以下のコマンドを実行します。
# dnf remove php-ext-mariadb
PHPのバージョンを切り替えて、PHP 7.4を利用するように設定します。その後、システム全体を更新すると更新後のバージョンのPHPがインストールされます。以下のコマンドを実行してください。
# dnf module reset php # dnf module enable php:7.4 # dnf distro-sync
先の手順でphp-ext-mariadbを削除した場合、更新後のphp-ext-mariadbパッケージをインストールします。元々インストールされていなかった場合は、この手順は必要ありません。
こちらのページより最新のphp-ext-mariadbパッケージをダウンロードして、以下のコマンドを実行してください。バージョン番号は適宜読み替えてください。
# dnf install php-ext-mariadb-7.4.6-1.el8.x86_64.rpm
先の手順でphp-ext-mariadbをインストールした場合、設定ファイルを修正してmariadb拡張を有効化する必要があります。元々php-ext-mariadbがインストールされていなかった場合は、この手順は必要ありません。
php-ext-mariadbパッケージで提供されるmariadb拡張は、PHP標準のmysqli拡張と競合するため、インストール直後は機能が有効になっていません。設定ファイルを修正してmysqli拡張の無効化とmariadb拡張の有効化を実施する必要があります。
mysqli拡張を無効化するため、/etc/php.d/30-mysqli.ini
を編集します。extension=mysqli
の行をコメントアウトしてください。使用しているVA50のバージョンによっては、既にコメントアウトされている場合があります。その場合は、コメントアウトされたままにしておいてください。
変更前
; Enable mysqli extension module extension=mysqli
変更後
; Enable mysqli extension module ;extension=mysqli
続いて、mariadb拡張を有効化するため、/etc/php.d/30-mariadb.ini
を編集します。extension=mariadb
の行のコメントを外してください。
変更前
; Enable mariadb extension module ;extension=mariadb
変更後
; Enable mariadb extension module extension=mariadb
最後に、停止していたMIRACLE failsafeのクラスタを再開します。以下のコマンドを実行してください。
# clpcl -s
以上でPHPのアップデートが完了となります。システムが正常に動作していることを確認してください。
MIRACLE ZBX Virtual Appliance V5.0では、OSとしてMIRACLE LINUX 8 Asianux Inside(以下、Asianux 8)を使用しています。
Asianuxにおいては、サポートを契約されたお客様向けにyum/dnfリポジトリを提供していますが、このリポジトリを利用するためのdnfプラグインの処理に問題があり、キャッシュが削除されません。そのため、このバージョンのdnfプラグインを使って長期間運用を続けると、キャッシュが蓄積されディスクを圧迫する可能性があります。
MIRACLE ZBX 自体に本件に関係する問題はありません。
以下のMIRACLE ZBXアプライアンスが影響を受ける可能性があります。
以下のdnfプラグインのバージョンが影響を受けます。
以下のコマンドでdnfプラグインのバージョンが確認できます。
# rpm -q dnf-axtu-plugin
dnf-axtu-plugin-3.0.1-0.0.2.el8.AXS8.noarch
また、MIRACLE ZBXアプライアンスを利用せず、MIRACLE ZBXパッケージをインストールして運用している環境でもAsianux 8を使用している場合は影響を受ける可能性があります。
以下のいずれかの方法で対象パッケージをアップデートし、キャッシュをクリアしてください。
ユーザーズガイドを参考にパッケージをアップデートしてください。
こちらからパッケージをダウンロードした後、以下のコマンドでパッケージをアップデートしてください。
# rpm -Uvh dnf-axtu-plugin-3.0.1-0.0.3.el8.AXS8.noarch.rpm
アップデート後は以下のコマンドでキャッシュをクリアしてください。
# dnf clean metadata
MIRACLE ZBXアプライアンスでは、監視データの保存や削除のパフォーマンス劣化を防ぐため、DBの一部のテーブルをパーティショニングしています。MIRACLE ZBX Virtual Appliance V5.0では、MIRACLE ZBXサーバのhousekeeperプロセスでDBパーティションの作成と削除を実行するように実装しています。
MIRACLE ZBX 5.0.10において、このhousekeeperプロセスによるDBパーティショニングの処理に問題があり、パーティションが削除されません。そのため、このバージョンのMIRACLE ZBXを使って長期間運用を続けると、古い監視データが削除されずにディスクを圧迫する可能性があります。
なお、パーティションの作成については動作に問題はありません。この不具合が原因で監視が失敗したり、監視データが破損したりすることはありません。
以下のMIRACLE ZBXアプライアンスが影響を受けます。
以下のMIRACLE ZBXのバージョンが影響を受けます。
V5.0以外のMIRACLE ZBXアプライアンスには影響はありません。また、MIRACLE ZBXアプライアンスを利用せず、MIRACLE ZBXパッケージをインストールして運用している環境にも影響はありません。
以下のMIRACLE ZBXのバージョンで修正しています。
MIRACLE ZBX 5.0.11以降のバージョンにアップデートしてください。パッケージ更新後の最初のhousekeeperプロセスのDBパーティショニング処理が実行される時に古いパーティションが削除されます。パッケージの更新以外には特に必要な手順はありません。
MIRACLE ZBX Virtual Appliance V4.0
MIRACLE ZBX 8400
※MIRACLE ZBXパッケージについてはこちらを参照してください。
DBの文字コード(utf8)と照合順序(utf8_bin)が正しく設定されていない場合、[レポート]->[システム情報]に下記メッセージが表示されます。解決するにはDBのスキーマーを正しく変更する必要があります。
バージョン4.0.18-6においてこのチェックが追加されました。4.0.18-6以降へのバージョンアップによってこの事象が発生します。
[レポート]->[システム情報]
※クラスタ構成の場合は稼動系で実行してください。
スクリプトファイル(alter_collate.sh)をダウンロードし、オプションcheckを付与して実行し結果を確認してください。
$ sh alter_collate.sh check <ユーザ> <DB名> <パスワード>
実行結果(例):
show default_character_set_name, utf8 is correct:
utf8
show number of wrong character_set_name/collation_name columns, 0 is correct:
384
実行結果が下記の全てを満たしていない場合はこの問題に該当しています。[対処方法]記載の対処を行ってください。
1. default_character_set_nameが「utf8」
2. character_set_name/collation_name columnsが「0」
※ クラスタ構成の場合は稼動系で実行してください。
※ DBのスキーマ変更を行います。実施する前に必ずバックアップを取得してください。
※ MariaDBのALTER TABLEを使用します。ALTER TABLE実行の際テーブルの一時的なコピーが作成されるためその分の空きスペースが必要になります。
1.バックアップを取得
mysqldumpコマンド等を用いてバックアップを取得してください。
※詳細は各製品のユーザーズガイド記載の「監視設定と監視データのバックアップ・リストア手順」を参照してください。
# mysqldump -uroot -p --opt --flush-logs --single-transaction zabbix > バックアップファイル名
2.Zabbixサーバを停止
# clprsc -t exec-ZabbixServer
3.スクリプトを実行
スクリプトファイル(alter_collate.sh)にオプションrunを付与して実行してください。
$ sh alter_collate.sh run <ユーザ> <DB名> <パスワード>
4.変更の確認
[確認方法]記載の方法によって、問題がないことを確認してください。
$ sh alter_collate.sh check <ユーザ> <DB名> <パスワード>
実行結果(例):
show default_character_set_name, utf8 is correct:
utf8
show number of wrong character_set_name/collation_name columns, 0 is correct:
0
default_character_set_nameが「utf8」である、かつcharacter_set_name/collation_name columnsが「0」であれば正常です。
5.Zabbixサーバを起動
# clprsc -s exec-ZabbixServer
https://www.zabbix.com/documentation/4.0/manual/introduction/whatsnew4018
DB CHARACTER SET AND COLLATION CHECK
https://support.zabbix.com/browse/ZBX-17357
"Unsupported charset or collation for tables" warning displayed on System information
システム情報に「サポートしていない文字コードか照合順序です。」が表示される問題の対処
本ドキュメントの内容は、予告なしに変更される場合があります。本ドキュメントは、限られた評価環境における検証結果をもとに作成しており、全ての環境での動作を保証するものではありません。本ドキュメントの内容に基づき、導入、設定、運用を行なったことにより損害が生じた場合でも、当社はその損害についての責任を負いません。あくまでお客さまのご判断にてご使用ください。