如果在Zabbix6中使用PostgreSQL15,则操作系统将不会自动关闭
发生了一个问题
安装了Zabbix的RockyLinux服务器出现了一个问题,无法正常完成关机。当执行重启或者关机命令时,屏幕上出现了一个旋转的圆圈图标,但是无法继续进行下去…
尝试过的事情·确认过的事情
-
- カーネルアップデート
特に変化なし。
ミドルウェアのバージョン確認
https://www.zabbix.com/documentation/6.0/jp/manual/installation/requirements を参照 不備は見当たらない。
追加したサービスを一つ一つ停止しながらシャットダウンテスト
zabbix-server.serviceを止めていれば問題が再発しないことに気づく。
OS及びZabbixバージョンが同一で、本事象が発生していない環境と見比べる。
問題ない環境はDBとしてMariaDBを使っている。
通过这件事情,我判断是由于Zabbix服务器的服务和数据库类型的组合所造成的。
解决方案-问题的解决方法
查看了zabbix-server.service的Unit文件,发现如下内容。
[Unit]
Description=Zabbix Server
After=syslog.target
After=network.target
After=mysql.service
After=mysqld.service
After=mariadb.service
After=postgresql.service
After=pgbouncer.service
After=postgresql-9.4.service
After=postgresql-9.5.service
After=postgresql-9.6.service
After=postgresql-10.service
After=postgresql-11.service
After=postgresql-12.service
After=postgresql-13.service
After=postgresql-14.service
[Service]
Environment="CONFFILE=/etc/zabbix/zabbix_server.conf"
EnvironmentFile=-/etc/sysconfig/zabbix-server
Type=forking
Restart=on-failure
PIDFile=/run/zabbix/zabbix_server.pid
KillMode=control-group
ExecStart=/usr/sbin/zabbix_server -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
TimeoutSec=0
[Install]
WantedBy=multi-user.target
在[Unit]节下定义了应该在zabbix-server.service之前启动/停止的服务的After=服务名称。※如果zabbix的数据库在zabbix-server.service之前停止,它将陷入永久等待状态。
哎?我们正在使用的数据库是PostgreSQL 15,但是找不到After=postgresql-15.service的服务…
因此,我进行了以下修改并重新加载。
# cp -p /etc/systemd/system/multi-user.target.wants/zabbix-server.service ~/
# vim /etc/systemd/system/multi-user.target.wants/zabbix-server.service
--------------------------------------------zabbix-server.service
[Unit]
Description=Zabbix Server
After=syslog.target
After=network.target
After=mysql.service
After=mysqld.service
After=mariadb.service
After=postgresql.service
After=pgbouncer.service
After=postgresql-9.4.service
After=postgresql-9.5.service
After=postgresql-9.6.service
After=postgresql-10.service
After=postgresql-11.service
After=postgresql-12.service
After=postgresql-13.service
After=postgresql-14.service
After=postgresql-15.service ← 追記
[Service]
Environment="CONFFILE=/etc/zabbix/zabbix_server.conf"
EnvironmentFile=-/etc/sysconfig/zabbix-server
Type=forking
Restart=on-failure
PIDFile=/run/zabbix/zabbix_server.pid
KillMode=control-group
ExecStart=/usr/sbin/zabbix_server -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
TimeoutSec=0
[Install]
WantedBy=multi-user.target
--------------------------------------------
# systemctl daemon-reload
# systemctl restart zabbix-server
问题轻松解决。太好了!
一开始我非常怀疑RockyLinux,对不起。
我认为在不久的将来的Zabbix更新中将会支持这一点,但如果不支持的话就需要手动进行处理。