Bootstrap

zabbix-server服务启动失败排查

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进程

  1. Active(活跃):

    • 指安装的服务当前处于运行状态,能够正常提供其设计的功能和服务。

    • 例如,持续集成服务(如 GitLab CI/CD Runner)正在运行,能够执行项目的构建、测试和部署操作。

  2. 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

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;