Zabbixの日本語文字化けを解消する方法
ザビザビしてますか?僕です。
ZabbixのデータベースにMySQLを使っているのですが、ホスト名やトリガー名、ログ監視メッセージに日本語を使っていたら????????になっておりました。 Zabbix画面上では、メディアスクリプトに渡すアクションに登録した"メッセージ"も????????だし、ログ監視で抽出したログ内のログメッセージも????????となります。
これdefault character setがUTF8じゃないことからよく起こりうるので注意が必要です。特にAWSのRDSではlatin1がdefault character setなのでパラメータグループにてUTF8に適切に設定しましょう。 また、zabbix データベースを作成する際にはcharacter set utf8しましょう。
mysql> create database zabbix character set utf8;
んで、もうすでにlatin1で作ってしまった場合、これをUTF8に直す方法をこれから書きます。
まず、
mysql> show variables like 'char%';
や
mysql> show create table テーブル名;
でCharacter系パラメータがutf8じゃないことを確認します。utf8じゃなかったらまず今回の現象である可能性が高いです。 データベースやテーブルは以下のようにUTF8に変更しておきます。
mysql> alter database zabbix default character set utf8;
mysql> alter table テーブル名 ENGINE=MyISAM DEFAULT CHARSET=utf8;
ここからがUTF8に直す手順です。
- zabbix serverの停止
# systemctl stop zabbix-server
- mysqldump実行
# mysqldump -uroot -p -h RDSエンドポイント zabbix > zabbix.dump
# perl -pi -e 's/latin1/utf8/' zabbix.db
- リストア実行
# mysql -uroot -p -h RDSエンドポイント zabbix < zabbix.dump
- zabbix server起動
# systemctl start zabbix-server
これでOK。ちなみにあらかじめalter文でdatabaseもtableもutf8にしておけばリストア時にdrop databaseしなくても直ります。