1.背景
在使用源代码编译安装zabbix-server监控服务端时,指定安装目录为/etc/zabbix/
使用 ./configure --sysconfdir=/etc/zabbix/ --enable-server --with-mysql --with-net-snmp --with-libxml2 --with-ssh2 --with-openipmi --with-zlib --with-libpthread --with-libevent --with-openssl --with-ldap --with-libcurl --with-libpcre
安装在加入systemd服务中时无法正常启动服务
2.问题现象
使用systemctl start zabbix-server.service 命令启动服务显示服务未正常启动 ps -ef |grep 'zabbix'检查无zabbix进程
-
Active(活跃):
-
指安装的服务当前处于运行状态,能够正常提供其设计的功能和服务。
-
例如,持续集成服务(如 GitLab CI/CD Runner)正在运行,能够执行项目的构建、测试和部署操作。
-
-
Inactive(非活跃):
-
指安装的服务当前处于停止状态,可能由于配置问题、维护、或者其他原因而无法提供服务。
-
例如,持续集成服务未启动或者由于故障而停止运行,导致项目的自动化流水线无法执行。
-
3.排查步骤
1.检查
/var/log/message
系统日志2.检查使用
journalctl
工具检查日志3.检查
/tmp/zabbix/zabbix_server.log
zabbix应用日志4.检查
/lib/systemd/system/zabbix-server.service
配置文件参数
journalctl
工具查看发现有[Warning] Aborted connection 241 to db: 'zabbix' user: 'zabbix' host: 'localhost' (Got an error reading communication)提示:
这条日志消息表明 MySQL 或 MariaDB 数据库连接因为通信错误而被中止。这种情况通常是由多种因素引起的,包括网络问题、数据库服务器负载过重、数据库配置问题或者客户端应用程序的错误。
zabbix配置文件
/usr/local/zabbix/etc/zabbix_server.conf
参数如下图,无其他问题,DBpassword密码正确
/lib/systemd/system/zabbix-server.service
配置文件初始配置为下列参数,使用的./configure --sysconfdir=/etc/zabbix/ --enable-server --with-mysql --with-net-snmp --with-libxml2 --with-ssh2 --with-openipmi --with-zlib --with-libpthread --with-libevent --with-openssl --with-ldap --with-libcurl --with-libpcre #原指定安装目录#
由于频繁报错,怀疑执行文件路径/usr/local/sbin/zabbix_server -f
存在问题
备注:博主以上流程配置都是跟学习视频保持一致的,但是zabbix-server的systemctl配置文件部署下列配置服务无法正常启动,所以具体情况根据自身环境部署[Unit] Description=Zabbix Server with MySQL DB After=syslog.target network.target mysqld.service [Service] Type=simple ExecStart=/usr/local/sbin/zabbix_server -f User=zabbix [Install] WantedBy=multi-user.target
其中
-f
参数通常用于以前台(foreground)模式运行服务器,而不是以后台(background)模式。这意味着在运行此命令后,服务器将在终端窗口中显示输出,并会持续运行直到你手动终止它。
尝试修改启动ExecStart:” 指定了服务启动时要执行的命令“为zabbix安装路径指向配置文件目录。
/usr/local/zabbix/sbin/zabbix_server -c /usr/local/zabbix/etc/zabbix_server.conf
服务还是起不来
根据以上的信息和日志记录,大概率能锁定故障范围了
1、启动服务时未报错,但是提示
Got signal [signal:15(SIGTERM),sender_pid:1,sender_uid:0,reason:0]. Exiting
,所以跟pid有关2、根据查到的资料提示:如果在
/etc/zabbix/zabbix_server.conf
配置文件中PidFile=
项被注释掉,并且在 systemd 服务配置文件中也没有显式添加PidFile=
,Zabbix Server 应该仍然能够正常启动和运行。没有指定PidFile=
可能会导致 systemd 在管理 Zabbix Server 时稍显不精确。例如,在某些情况下,systemd 可能会出现更难以预测的行为,如无法精确地确定服务是否已启动或无法准确地停止服务。所以有可能导致无法启动服务。
4.解决办法
-
1、更换安装方式为
./configure --prefix=/usr/local/
,指定安装目录为/usr/local/ -
vim /lib/systemd/system/zabbix-server.service Execstart=/usr/local/zabbix/sbin/zabbix_server -c /usr/local/zabbix/etc/zabbix_server.conf #未改变, #zabbix.conf配置文件中pidfile也没有进行配置,保留状态,可以正常启动。 #此办法为在原基础的情况下其他步骤保持不变只修改了编译安装目录的解决办法
-
2、--sysconfdir=/etc/zabbix/安装目录保持不变
-
修改配置文件 vim /etc/zabbix/zabbix_server.conf PidFile=/run/zabbix/zabbix_server.pid #指定目录 vim /lib/systemd/system/zabbix-server.service #sytemd服务中也添加pid文件目录 PIDFile=/run/zabbix/zabbix_server.pid systemctl daemon-reload systemctl start zabbix-server