0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

zabbix-server建てるときに困ったときの対処法備忘録

Last updated at Posted at 2024-12-11

最近久しくzabbix-server建ててなかったので、最新の7系を建ててみたのですが、色々詰まった部分があったので備忘録として書いておこうと思いました。

少しでも参考になれば幸いです。

環境

OS:AlmaLinux 9.4
Apache:2.4.62
PHP:8.3.14
MySQL:8.0.40
zabbix_server/zabbix_agentd:7.0.6

困ったことその1

zabbix-serverと関連モジュールをインストールして

$ zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -u zabbix-user -p zabbix_db

したら、以下エラーが出てきて怒られた。

ERROR 1419 (HY000) at line 2494: You do not have the SUPER privilege and binary logging is enabled (you might want to use the less safe log_bin_trust_function_creators variable)

なにこれ。

問題を調べてみると書いてある通りSUPER権限を持っていないかつlog_bin_trust_function_creatorsが0(無効)の設定になっていて、SUPER権限を持ったユーザーしかストアド関数を作成できないみたい。

対策として2つあり、zabbix-userに権限を与えるか、log_bin_trust_function_creatorsを有効化するかだけど、log_bin_trust_function_creatorsを有効化するで良さそう。

ということで以下で解決しました。

mysql> SET GLOBAL log_bin_trust_function_creators=1;

※恒久的に設定しておきたい場合はmy.cnfで以下設定をいれておきましょう。

$ vi /etc/my.cnf
log_bin_trust_function_creators=1

困ったことその2

あとはzabbix-serverをsystemctlで起動しようとしたら以下エラーが。

systemd[1]: zabbix-server.service: Can't open PID file /run/zabbix/zabbix_server.pid (yet?) after start: Operation not permitted
systemd[1]: zabbix-server.service: Failed with result 'protocol'.

心当たりがあるとすれば/usr/lib/systemd/system/zabbix-server.service
で指定している、PIDと、/usr/local/etc/zabbix_server.confで指定している
PIDが食い違っていることがあるか、SELinuxのせいでPIDファイルが生成されていない。

原因はSELinuxっぽかったので無効化する。

$ vi /etc/selinux/config

SELINUX=Enabledをdisabledに変更する

SELINUX=disabled

あとはreboot(システムの再起動)をして入りなおせばOK

$ reboot
$ getenforce
Disabled

disabledになりました。
やったね。

困ったことその3

あとはzabbix_serverを起動したときに以下エラーがコンソールに表示されていた
image.png

テーブルacknowledges, actions, alerts, auditlog, autoreg_host, conditions, config, config_autoreg_tls, connector, connector_tag, corr_condition_tag, corr_condition_tagpair, corr_condition_tagvalue, correlation, dashboard, dashboard_page, dchecks, drules, dservices, event_tag, events, expressions, functions, globalmacro, globalvars, graph_theme, graphs, graphs_items, group_discovery, group_prototype, ha_node, hgset, history_log, history_str, history_text, host_discovery, host_inventory, host_proxy, host_tag, hostmacro, hosts, housekeeper, hstgrp, httpstep, httpstep_field, httptest, httptest_field, httptest_tag, icon_map, icon_mapping, ids, images, interface, interface_snmp, item_condition, item_discovery, item_parameter, item_preproc, item_rtdata, item_rtname, item_tag, items, lld_macro_path, lld_override, lld_override_condition, lld_override_operation, lld_override_ophistory, lld_override_opperiod, lld_override_optag, lld_override_optrends, maintenance_tag, maintenances, media, media_type, media_type_message, media_type_param, mfa, mfa_totp_secret, module, opconditions, operations, opmessage, optag, problem, problem_tag, profiles, proxy, proxy_autoreg_host, proxy_dhistory, proxy_group, proxy_history, regexps, report, report_param, role, role_rule, scim_group, script_param, scripts, service_problem_tag, service_tag, services, sessions, sla, sla_excluded_downtime, sla_service_tag, sysmap_element_url, sysmap_shape, sysmap_url, sysmaps, sysmaps_element_tag, sysmaps_elements, sysmaps_link_triggers, sysmaps_links, tag_filter, task_data, task_remote_command, task_remote_command_result, task_result, token, trigger_tag, triggers, ugset, userdirectory, userdirectory_idpgroup, userdirectory_ldap, userdirectory_media, userdirectory_saml, users, usrgrp, valuemap, valuemap_mapping, widget, widget_fieldがサポートしていない文字コードか照合順序です。

エラー内容に答えが書いてくれてる通りで、zabbix_dbの全テーブルで文字コードと照合順序がサポートされていないみたいです。
ログを見るとちゃんと書かれてますね。

$ less /var/log/zabbix/zabbix_server.log
Zabbix supports only "utf8_bin,utf8mb3_bin,utf8mb4_bin" collation(s). Database "zabbix_db" has default collation "utf8mb4_0900_ai_ci"

zabbixがサポートしてるのはutf8_bin utf8mb3_bin utf8mb4_binですが、
今回はutf8mb4_0900_ai_ciだったせいですね。
どうやら MySQL 8.0からcollationがutf8mb4_0900_ai_ciになってるからのようです。

DB内の全テーブルの設定変更していくのもいいですが、
設定段階であれば量も多く面倒なので、DBを作りなおしてしまうのがオススメです。

一旦DBをDROPしてから作り直します。

mysql> DROP DATABASE zabbix_db;
mysql> CREATE DATABASE `zabbix_db` character set utf8 collate utf8_bin;

あとは権限付与してmysqlから抜けます

mysql> GRANT ALL PRIVILEGES ON `zabbix_db`.* TO "zabbix-user"@"%";
mysql> exit

あとはもう一回流し込んであげます。

$ zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix-user -p zabbix_db

最後に各プロセスを再起動させておいて、コンソールを見てみるとエラーが無くなっている!
image.png
キタ――(゚∀゚)――!!

ということで、お疲れ様でした。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?