文章出处:乐维社区
背景:
公司之前一直是用的预编译好的zabbix agent包在redhat、centos等进行安装部署。最近内部部署了一套新的操作系统(TencentOS Server),用之前的agent包发现并不能正常启动agent,具体报错是关于bash变量的: /bin/bash: 没有那个文件或目录
最开始以为是bash没有安装,经查,实际上文件是存在的且其他预编译好agent包也一样存在该问题,最终判断是预编译的好的环境与TencentOS Server的系统并不适用。
解决:
尝试使用编译安装的方式去处理。
首先到官网下载相应的zabbix源包(我这里使用的版本是5.0.46)
1. 安装c编译器等环境依赖
#yum install gcc pcre pcre-devel make -y
2. 创建用户组、用户
#groupadd zabbix
#useradd -g zabbix zabbix
3. 解压zabbix-5.0.46.tar.gz 源包
#tar -zxvf zabbix-5.0.46.tar.gz
4. 编译安装agent
#cd zabbix-5.0.46
#./configure --prefix=/usr/local/zabbix --sysconfdir=/usr/local/zabbix/etc --enable-agent --disable-dependency-tracking
#make install
5. 创建日志、配置文件等目录
#mkdir /usr/local/zabbix/logs
#mkdir /usr/local/etc/zabbix_agentd.conf.d/
6. 修改agent配置文件
#vim /usr/local/zabbix/etc/zabbix_agentd.conf
PidFile=/usr/local/zabbix/logs/zabbix_agentd.pid #指定进程文件位置
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log #指定日志文件位置
Server=192.168.7.15 #指定数据采集代理/server 服务ip地址
ServerActive=192.168.7.15 #指定数据推送代理/server 服务ip地址
ListenPort=10050 #agent进程指定端口
Hostname=host725 #指定注册对象名(可填写主机名)
Include=/usr/local/etc/zabbix_agentd.conf.d/*.conf #指定自定义监控键值位置(没有,可不用配置)
7. 修改目录所属权限
#chown zabbix:zabbix /usr/local/zabbix -R
8. 启动agent服务
#/usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/etc/zabbix_agentd.conf
9. 查看服务进程
#netstat -tnpl | grep zabbix_agent
10. 增加自启服务配置
#vim /lib/systemd/system/zabbix_agentd.service
[Unit]
Description=Zabbix Agent
After=syslog.target
After=network.target
[Service]
Type=forking
Restart=always
PIDFile=/usr/local/zabbix/logs/zabbix_agentd.pid
KillMode=mixed
ExecStart=/usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/etc/zabbix_agentd.conf
[Install]
WantedBy=multi-user.target
11. 修改权限
#chmod u+x /lib/systemd/system/zabbix_agentd.service
12. 加载服务启动文件
#systemctl daemon-reload
13. 加载服务启动文件
#systemctl daemon-reload
14. 加载服务启动文件
#systemctl daemon-reload
15. 加载服务启动文件
#systemctl daemon-reload
16. 尝试重新启动Zabbix Agent
#systemctl stop zabbix_agentd
#systemctl start zabbix_agentd
17. 设置服务开机自启动
systemctl enable zabbix_agentd
18. 观察主机是否上线,且监控数据是否已经正常获取