zabbix代理服务失败,PID无法读取

时间:2016-10-07 14:03:37

标签: centos7 zabbix selinux

我正在尝试在CentOS7上运行zabbix-agent 3.0.4,systemd无法启动zabbix代理,来自journalctl -xe

PID file /run/zabbix/zabbix_agentd.pid not readable (yes?) after start. node=localhost.localdomain type=SERVICE_START msg=audit(1475848200.601:17994): pid=1 uid=0 auid=4294967298 ses=... zabbix-agent.service never wrote its PID file. Failing. Failed to start Zabbix Agent.

没有权限错误,我尝试重新配置/tmpzabbix-agent.servicezabbix_agentd.conf文件夹的PID路径,但它不起作用。

非常奇怪,有人有想法吗?提前谢谢。

=====

调查一下,PID应该在/run/zabbix文件夹下,我手动创建zabbix_agentd.pid,并在1秒后消失。真的很奇怪。

5 个答案:

答案 0 :(得分:5)

我有同样的问题,它与selinux有关。所以我通过semanage允许zabbix_agent_t

 yum install policycoreutils-python 

 semanage permissive -a zabbix_agent_t

答案 1 :(得分:1)

为该pid文件提供完整权限7777将有助于解决此问题。

答案 2 :(得分:0)

我也有这个,它是Selinux,它被禁用但我必须这样做 运行命令

答案 3 :(得分:0)

这对我有用。

先决条件:Centos 7zabbix-server 3.4zabbix-agent 3.4在同一主机上运行。

解决方案步骤:

  1. 安装zabbix-serverzabbix-agent(无论如何 - 通过yum或从源代码构建)。

  2. 首先检查/etc/passwd中是否存在单独的用户。如果已存在zabbix用户,请转到第4页。

  3. zabbix-serverzabbix-agent创建单独的群组和用户。 示例(您可以根据需要指定用户名):

    groupadd zabbix-agent  
    useradd -g zabbix-agent zabbix-agent  
    groupadd zabbix  
    useradd -g zabbix zabbix  
    
  4. 在Zabbix配置文件中指定PID和LOG文件位置。例如:

    • zabbix-server/etc/zabbix/zabbix_server.conf
    PidFile=/run/zabbix/zabbix_server.pid  
    LogFile=/var/log/zabbix/zabbix_server.log  
    
    • zabbix-agent/etc/zabbix/zabbix_agentd.conf
    PidFile=/run/zabbix-agent/zabbix-agent.pid  
    LogFile=/var/log/zabbix-agent/zabbix-agent.log
    
  5. 创建适当的目录(如果它们之前没有创建),如配置文件中指定的那样,并更改此目录的所有者:

    mkdir /var/log/zabbix-agent  
    mkdir /run/zabbix-agent  
    chown zabbix-agent:zabbix-agent /var/log/zabbix-agent  
    chown zabbix-agent:zabbix-agent /run/zabbix-agent  
    
    mkdir /var/log/zabbix  
    mkdir /run/zabbix  
    chown zabbix:zabbix /var/log/zabbix-agent  
    chown zabbix:zabbix /run/zabbix-agent
    
  6. 检查zabbix服务的systemd配置,并在Username=部分中添加Group=[Service]以运行服务。例如:

    • zabbix-server/etc/systemd/system/multi-user.target.wants/zabbix-server.service
    [Unit]
    Description=Zabbix Server
    After=syslog.target
    After=network.target
    
    [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
    
    User=zabbix
    Group=zabbix
    
    [Install]
    WantedBy=multi-user.target
    
    • zabbix-agent/etc/systemd/system/multi-user.target.wants/zabbix-agent.service
    [Unit]
    Description=Zabbix Agent
    After=syslog.target
    After=network.target
    
    [Service]
    Environment="CONFFILE=/etc/zabbix/zabbix_agentd.conf"
    EnvironmentFile=-/etc/sysconfig/zabbix-agent
    Type=forking
    Restart=on-failure
    PIDFile=/run/zabbix-agent/zabbix-agent.pid
    KillMode=control-group
    ExecStart=/usr/sbin/zabbix_agentd -c $CONFFILE
    ExecStop=/bin/kill -SIGTERM $MAINPID
    RestartSec=10s
    
    User=zabbix-agent
    Group=zabbix-agent
    
    [Install]
    WantedBy=multi-user.target
    
    • 如果没有这样的配置 - 你可以在以下网址找到它们:

    /usr/lib/systemd/system/

  7. OR

    启用zabbix-agent.service服务,从而在/etc/systemd/system/multi-user.target.wants/目录中创建符号链接到/usr/lib/systemd/system/zabbix-agent.service

    1. 运行服务:

      systemctl start zabbix-server  
      systemctl start zabbix-agent  
      
    2. 检查已启动服务的用户(第一栏):

      ps -aux | grep zabbix  
      
    3. 或通过top命令。

答案 4 :(得分:0)

禁用SELinux和Firewalld,一切顺利