zabbix的启动和关闭脚本

本文详细介绍如何在CentOS系统中使用Zabbix源码提供的系统服务脚本,包括客户端和服务端的启动脚本复制、开机自启动设置及脚本内容解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. zabbix客户端的系统服务脚本

1.1 拷贝启动脚本

zabbix的源码提供了系统服务脚本,在/usr/local/src/zabbix-3.2.6/misc/init.d目录下,我的系统是CentOS的,所以选择fedora下的脚本复制到/etc/init.d下

[root@lanmp core5]# pwd
/usr/local/src/zabbix-3.2.6/misc/init.d/fedora/core5
 
[root@lanmp core5]# cp -a zabbix_agentd /etc/init.d/

1.2 添加到开机自启动

[root@lanmp init.d]# chkconfig --add zabbix_agentd
[root@lanmp init.d]# chkconfig zabbix_agentd on
[root@lanmp init.d]# chkconfig --list|grep zabbix_agentd
zabbix_agentd   0:off   1:off   2:on    3:on    4:on    5:on    6:off

脚本内容

#!/bin/bash
#
#       /etc/rc.d/init.d/zabbix_agentd
#
# Starts the zabbix_agentd daemon
#
# chkconfig: - 95 5
# description: Zabbix Monitoring Agent
# processname: zabbix_agentd
# pidfile: /tmp/zabbix_agentd.pid
 
# Modified for Zabbix 2.0.0
# May 2012, Zabbix SIA
 
# Source function library.
 
. /etc/init.d/functions
 
RETVAL=0
prog="Zabbix Agent"
ZABBIX_BIN="/usr/local/sbin/zabbix_agentd"
 
if [ ! -x ${ZABBIX_BIN} ] ; then
        echo -n "${ZABBIX_BIN} not installed! "
        # Tell the user this has skipped
        exit 5
fi
 
start() {
        echo -n $"Starting $prog: "
        daemon $ZABBIX_BIN
        RETVAL=$?
        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/zabbix_agentd
        echo
}
 
stop() {
        echo -n $"Stopping $prog: "
        killproc $ZABBIX_BIN
        RETVAL=$?
        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/zabbix_agentd
        echo
}
 
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  reload|restart)
        stop
        sleep 10
        start
        RETVAL=$?
        ;;
  condrestart)
        if [ -f /var/lock/subsys/zabbix_agentd ]; then
            stop
            start
        fi
        ;;
  status)
        status $ZABBIX_BIN
        RETVAL=$?
        ;;
  *)
        echo $"Usage: $0 {condrestart|start|stop|restart|reload|status}"
        exit 1
esac
 
exit $RETVAL

2.2 服务端的系统服务脚本

同样的方法,这里就不演示了

#!/bin/bash
#
#       /etc/rc.d/init.d/zabbix_server
#
# Starts the zabbix_server daemon
#
# chkconfig: - 95 5
# description: Zabbix Monitoring Server
# processname: zabbix_server
# pidfile: /tmp/zabbix_server.pid
 
# Modified for Zabbix 2.0.0
# May 2012, Zabbix SIA
 
# Source function library.
 
. /etc/init.d/functions
 
RETVAL=0
prog="Zabbix Server"
ZABBIX_BIN="/usr/local/sbin/zabbix_server"
 
if [ ! -x ${ZABBIX_BIN} ] ; then
        echo -n "${ZABBIX_BIN} not installed! "
        # Tell the user this has skipped
        exit 5
fi
 
start() {
        echo -n $"Starting $prog: "
        daemon $ZABBIX_BIN
        RETVAL=$?
        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/zabbix_server
        echo
}
 
stop() {
        echo -n $"Stopping $prog: "
        killproc $ZABBIX_BIN
        RETVAL=$?
        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/zabbix_server
        echo
}
 
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  reload|restart)
        stop
        sleep 10
        start
        RETVAL=$?
        ;;
  condrestart)
        if [ -f /var/lock/subsys/zabbix_server ]; then
            stop
            start
        fi
        ;;
  status)
        status $ZABBIX_BIN
        RETVAL=$?
        ;;
  *)
        echo $"Usage: $0 {condrestart|start|stop|restart|reload|status}"
        exit 1
esac
 
exit $RETVAL

内容转自https://www.cnblogs.com/zydev/p/6888805.html

<think>我们正在处理关于Zabbix 10051端口无法启动的问题。根据引用内容,10051端口是Zabbix Server的默认端口,所以问题可能出在Zabbix Server服务上。 我们需要按照步骤排查: 1. 检查Zabbix Server服务状态 2. 检查配置文件 3. 检查端口占用 4. 检查日志文件 5. 其他可能的问题(如数据库连接等) 根据引用[2][5]中的信息,我们可以得到一些线索: 引用[2]提到:编辑`/etc/zabbix/zabbix_server.conf`,修改DBHost为127.0.0.1,端口改为3306,然后重启服务。这提示我们数据库配置错误可能导致服务无法启动。 引用[5]提到:在服务端使用`zabbix_get`命令测试端口,以及如果获取不到数据可能是因为权限问题(需要给netstat加s权限或配置sudo)。但这里我们遇到的是端口无法启动,所以可能不是权限问题,而是服务本身启动失败。 具体步骤: 步骤1:检查Zabbix Server服务状态 使用命令:`systemctl status zabbix-server` 如果服务处于failed状态,我们可以查看具体错误信息。 步骤2:检查配置文件 配置文件路径:`/etc/zabbix/zabbix_server.conf` 需要确认的关键配置项: - DBHost:数据库主机地址(如果是本地,通常为localhost或127.0.0.1) - DBName:数据库名称 - DBUser:数据库用户 - DBPassword:数据库密码 - DBPort:数据库端口(默认3306) 特别要注意,如果数据库不在本地,需要确保网络可达,并且数据库用户有远程访问权限。 步骤3:检查端口占用 使用命令:`netstat -tulnp | grep 10051` 如果10051端口已经被其他进程占用,那么Zabbix Server将无法启动。如果被占用,需要停止占用该端口的进程,或者修改Zabbix Server的监听端口(通过配置文件中的ListenPort参数)。 步骤4:检查日志文件 Zabbix Server的日志通常位于:`/var/log/zabbix/zabbix_server.log`(具体路径可能因安装方式不同而略有差异)。查看日志文件中的错误信息,可以快速定位问题。 步骤5:其他可能的问题 - 数据库服务是否正常运行?尝试连接数据库:`mysql -u<用户名> -p<密码> -h<主机>` - 防火墙是否开放了10051端口?如果是在本机测试,至少需要确保本地回环可以访问。如果是分布式环境,需要确保网络策略允许。 - Selinux是否关闭?或者需要设置Selinux策略允许Zabbix Server运行。 解决方案: 根据上述步骤,我们可能会发现以下常见问题及解决方案: 问题1:数据库配置错误(如引用[2]所述) 解决方案:修改`zabbix_server.conf`中的数据库配置,确保正确无误,然后重启服务:`systemctl restart zabbix-server` 问题2:端口被占用 解决方案:停止占用10051端口的进程,或者修改Zabbix Server的监听端口(修改ListenPort参数,并重启服务)。 问题3:数据库服务未启动或无法连接 解决方案:启动数据库服务,并确保Zabbix Server能够连接到数据库。 问题4:权限问题(如日志文件或临时目录的权限) 解决方案:确保Zabbix Server的运行用户(通常是zabbix)对相关目录有读写权限。 问题5:防火墙阻止 解决方案:开放10051端口(如果是生产环境,还需要考虑agent连接的端口10050): firewall-cmd --permanent --add-port=10051/tcp firewall-cmd --reload 问题6:Selinux未关闭或未配置 解决方案:临时关闭Selinux:`setenforce 0`,或者永久关闭:修改`/etc/selinux/config`文件,设置`SELINUX=disabled`(需要重启)。或者配置Selinux策略允许Zabbix。 问题7:配置文件语法错误 解决方案:使用`zabbix_server -c /etc/zabbix/zabbix_server.conf`测试配置文件,根据错误提示修正。 问题8:数据库未初始化 解决方案:如果这是第一次安装,需要导入初始数据库结构。参考官方文档的数据库初始化步骤。 根据引用[5]中提到的权限问题,我们还需要注意:如果Zabbix Server在启动过程中需要执行某些命令(比如通过脚本获取数据),那么可能需要给相应的命令设置权限(如setuid或sudo),但通常启动服务本身不需要这些权限。 最后,我们按照上述步骤进行排查,一般能够解决10051端口无法启动的问题。 生成相关问题: 1. 如何修改Zabbix Server的监听端口? 2. 如何检查Zabbix Server的日志? 3. 如何导入Zabbix的初始数据库? 4. Zabbix Server启动时提示数据库连接失败怎么办? 5. 如何为Zabbix Server配置Selinux?</think>### Zabbix 10051端口无法启动排查指南 #### 1. **检查服务状态与日志** - **查看服务状态**: ```bash systemctl status zabbix-server ``` 若显示 `failed` 或 `inactive`,需进一步检查日志。 - **查看日志定位错误**: ```bash journalctl -u zabbix-server | tail -n 50 # 查看最近50条日志 grep -i error /var/log/zabbix/zabbix_server.log # 过滤错误信息 ``` 常见错误: - 数据库连接失败(如 `Can't connect to MySQL server`)[^2] - 配置文件语法错误(如 `Invalid configuration parameter`) --- #### 2. **验证配置文件** - **关键配置项检查**(`/etc/zabbix/zabbix_server.conf`): ```ini DBHost=127.0.0.1 # 数据库地址(必须正确) DBPort=3306 # 数据库端口(默认3306) DBName=zabbix # 数据库名(需与实际一致) DBUser=zabbix # 数据库用户(需有权限) DBPassword=YourPassword # 密码(需正确) ListenPort=10051 # 确保未被修改 ``` **修复后重启服务**: ```bash systemctl restart zabbix-server ``` --- #### 3. **检查端口占用** - **确认端口是否被占用**: ```bash netstat -tulnp | grep 10051 ``` 若被其他进程占用: - 停止占用进程:`kill -9 <PID>` - 或修改 Zabbix 监听端口(需同步调整 agent 配置)[^5] --- #### 4. **数据库连接测试** - **手动测试数据库连通性**: ```bash mysql -h<DBHost> -P<DBPort> -u<DBUser> -p<DBPassword> -e "SHOW DATABASES;" ``` 若连接失败: - 检查数据库服务状态:`systemctl status mariadb`(或 MySQL) - 验证用户权限:`GRANT ALL ON zabbix.* TO 'zabbix'@'localhost' IDENTIFIED BY 'password';` - 防火墙放行数据库端口(默认 3306)[^2] --- #### 5. **文件权限与 SELinux** - **修复文件权限**: ```bash chown -R zabbix:zabbix /var/run/zabbix/ # PID 目录 chown -R zabbix:zabbix /var/log/zabbix/ # 日志目录 ``` - **临时禁用 SELinux 测试**: ```bash setenforce 0 # 临时关闭 systemctl restart zabbix-server ``` 若服务恢复,需配置 SELinux 策略: ```bash semanage port -a -t zabbix_port_t -p tcp 10051 ``` --- #### 6. **验证服务监听** - **检查服务是否监听端口**: ```bash ss -lntp | grep 10051 zabbix_get -s 127.0.0.1 -p 10051 -k "agent.ping" # 应返回 1 [^1] ``` 若返回失败,检查: - 防火墙是否放行 10051: ```bash firewall-cmd --add-port=10051/tcp --permanent firewall-cmd --reload ``` --- #### 典型解决方案总结 | **问题原因** | **解决方案** | |----------------------|------------------------------------------| | 数据库配置错误 | 修正 `DBHost`, `DBPort` 等参数 [^2] | | 端口被占用 | 停止占用进程或修改 `ListenPort` [^5] | | 文件权限不足 | `chown -R zabbix:zabbix` 相关目录 | | SELinux 限制 | 放行端口或临时禁用 SELinux | | 防火墙拦截 | 开放 10051/TCP 端口 |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值