- [root@zhouzihui zabbix]# systemctl status zabbix-server.service
- ● zabbix-server.service – Zabbix Server
- Loaded: loaded (/usr/lib/systemd/system/zabbix-server.service; enabled; vendor preset: disabled)
- Active: activating (auto-restart) (Result: exit-code) since Sun 2025-05-18 00:01:31 PDT; 9s ago
- Process: 24037 ExecStop=/bin/kill -SIGTERM $MAINPID (code=exited, status=1/FAILURE)
- Process: 24017 ExecStart=/usr/sbin/zabbix_server -c $CONFFILE (code=exited, status=0/SUCCESS)
- Main PID: 24019 (code=exited, status=0/SUCCESS)
- May 18 00:01:31 zhouzihui kill[24037]: For more details see kil…
- May 18 00:01:31 zhouzihui systemd[1]: zabbix-server.service: co…
- May 18 00:01:31 zhouzihui systemd[1]: Unit zabbix-server.servic…
- May 18 00:01:31 zhouzihui systemd[1]: zabbix-server.service fai…
- Hint: Some lines were ellipsized, use -l to show in full.
- 出现报错的原因
Zabbix 服务启动失败分析
根据提供的 systemctl 状态输出,Zabbix Server 服务出现问题的原因是:
主要问题
服务启动后立即正常退出,这对于应该持续运行的守护进程来说是异常行为。
具体解释
- 启动过程的矛盾状态:
ExecStart
命令执行成功(status=0/SUCCESS)- 主进程(Main PID: 24019)以成功状态退出(status=0/SUCCESS)
- 对于守护进程,即使退出码为0也是异常的,因为它应该持续运行
- 服务生命周期问题:
- Zabbix 服务器启动
- 完成某些初始化或检查操作
- 随后正常退出(而不是保持运行状态)
- 系统认为服务异常退出并尝试重启
- 循环继续
可能的原因
- 配置问题:
/etc/zabbix/zabbix_server.conf
中可能有错误配置- 数据库连接参数不正确
- 监听端口配置错误或冲突
- 数据库问题:
- 无法连接到数据库
- 数据库权限不足
- 数据库架构不完整
- 技术限制问题:
- 内存不足
- 目录权限问题
解决方向
检查 Zabbix 服务器日志,这是找出具体原因的最佳方式:
cat /var/log/zabbix/zabbix_server.log
日志会显示启动过程中发生的详细事件和具体报错,这对确定问题根源至关重要。
日志会显示启动过程中发生的详细事件和具体报错,这对确定问题根源至关重要。
24800:20250518:000537.041 using configuration file: /etc/zabbix/zabbix_server.conf
24800:20250518:000537.046 current database version (mandatory/optional): 04000000/04000006
24800:20250518:000537.047 required mandatory version: 04000000
24800:20250518:000537.057 server #0 started [main process]
24805:20250518:000537.058 server #1 started [configuration syncer #1]
24808:20250518:000537.161 server #2 started
24808:20250518:000537.161 cannot start alert manager service: Cannot bind socket to “/var/run/zabbix/zabbix_server_alerter.sock”: [13] Permission denied.
24800:20250518:000537.164 One child process died (PID:24808,exitcode/signal:1). Exiting …
24800:20250518:000537.172 syncing trend data…
24800:20250518:000537.172 syncing trend data done
24800:20250518:000537.172 Zabbix Server stopped. Zabbix 4.0.50 (revision c40ad3289ad).
这是报错日志
Zabbix 服务启动失败:权限问题
根据日志,问题明确找到了:
cannot start alert manager service: Cannot bind socket to “/var/run/zabbix/zabbix_server_alerter.sock”: [13] Permission denied.
问题原因
警报管理器进程无法创建必要的套接字文件,因为没有 /var/run/zabbix/
目录的写入权限。这导致子进程退出,主进程也随之停止。
解决方案
1. 创建目录并设置正确权限
# 创建目录(如果不存在)
sudo mkdir -p /var/run/zabbix
# 设置正确的所有权
sudo chown -R zabbix:zabbix /var/run/zabbix
# 设置适当的权限
sudo chmod 755 /var/run/zabbix
2. 在重启前检查SELinux
如果系统启用了SELinux,还需要设置正确的上下文:
# 检查SELinux状态
getenforce
# 如果是Enforcing,设置正确的上下文
sudo semanage fcontext -a -t zabbix_var_run_t “/var/run/zabbix(/.*)?”
sudo restorecon -Rv /var/run/zabbix
3. 重启服务
sudo systemctl restart zabbix-server.service
4. 永久解决(防止重启后问题再现)
创建systemd临时文件目录配置:
sudo mkdir -p /etc/tmpfiles.d/
echo “d /var/run/zabbix 0755 zabbix zabbix -” | sudo tee /etc/tmpfiles.d/zabbix.conf
这样在系统重启后,目录将被自动创建并设置正确的权限。
重启服务后,使用 systemctl status zabbix-server.service
确认服务是否正常运行。