在zabbix使用过程中,zabbix agent通常部署在被监控目标上,用于主动监控本地资源和应用程序,并将目标的可用性、完整性及其他统计信息数据发送给zabbix server,以减轻zabbix server的压力。这一期乐维君将为大家介绍如何快速部署zabbix-agent客户端。
1.1 下载zabbix-agent部署包
选择好跟server对应的大版本,参考之前的zabbix监控系统部署使用的6.2版本(链接),这里的agent也使用6.2版本的agent进行部署。

这是一个二进制的agent安装包,可以直接解压后启动。但是为了快速进行部署,可以编写一个脚本进行快速部署。
下载6.2.2二进制agent部署包
然后修改安装包命名,格式为zabbix_agent-[version].tar.gz

1.2编写部署脚本
vim install_zabbix_agent.sh
- #!/bin/bash
- ## 变量定义
- # 脚本所在路径
- BASE_DIR=$(cd $(dirname $0);pwd)
- # Zabbix_server连接IP
- SERVER_IP=$1
- # agent部署路径,默认/usr/local/zabbix_agent
- INSTALL_DIR=$2
- if [[ ! ${INSTALL_DIR} ]];then
- INSTALL_DIR=/usr/local/zabbix_agent
- fi
- if [[ ! -d ${INSTALL_DIR} ]];then
- mkdir -p ${INSTALL_DIR}/logs
- fi
- # agent部署包
- INSTALL_PACK=$3
- if [[ ! ${INSTALL_PACK} ]];then
- INSTALL_PACK=$(find ${BASE_DIR} -name "zabbix*.tar.gz")
- fi
- # agent监听端口,默认10050
- AGENT_PORT=$4
- if [[ ! ${AGENT_PORT} ]];then
- AGENT_PORT=10050
- fi
- ## 环境监测
- # 判断zabbix用户是否存在,不存在则创建
- id zabbix &> /dev/null
- if [[ $? != 0 ]];then
- useradd zabbix
- fi
- # 判断端口是否被占用
- PORT_IF=$(ss -tanlu|grep -v 'Port'|grep "${AGENT_PORT}" | awk '{printf $5 "\n"}' | awk -F ':' '{printf $NF "\n"}' | sort | uniq)
- if [[ ${PORT_IF} ]];then
- echo "端口 ${AGENT_PORT} 已被占用,退出安装"
- exit 1
- fi
- ## 开始安装agent
- # 解压安装包
- tar -zxf ${INSTALL_PACK} -C ${INSTALL_DIR}
- # 授权部署路径
- chown -R zabbix:zabbix ${INSTALL_DIR}
- # 修改配置文件
- sed -i "s@Server=127.0.0.1@Server=${SERVER_IP}@g" ${INSTALL_DIR}/conf/zabbix_agentd.conf
- sed -i "s@ServerActive=127.0.0.1@ServerActive=${SERVER_IP}@g" ${INSTALL_DIR}/conf/zabbix_agentd.conf
- sed -i "s@Hostname=Zabbix server@Hostname=${SERVER_IP}@g" ${INSTALL_DIR}/conf/zabbix_agentd.conf
- sed -i "s@# ListenPort=10050@ListenPort=${AGENT_PORT}@g" ${INSTALL_DIR}/conf/zabbix_agentd.conf
- sed -i "s@# PidFile=/tmp/zabbix_agentd.pid@PidFile=${INSTALL_DIR}/logs/zabbix_agent.pid@g" ${INSTALL_DIR}/conf/zabbix_agentd.conf
- sed -i "s@LogFile=/tmp/zabbix_agentd.log@LogFile=${INSTALL_DIR}/logs/zabbix_agentd.log@g" ${INSTALL_DIR}/conf/zabbix_agentd.conf
- # 创建agent启动文件
- cat > /usr/lib/systemd/system/zabbix_agentd.service << EOF
- [Unit]
- Description=Zabbix_agent service
- After=syslog.target
- After=network.target
-
- [Service]
- Type=simple
- User=zabbix
- Restart=always
- KillMode=mixed
- PIDFile=${INSTALL_DIR}/logs/zabbix_agent.pid
- ExecStart=${INSTALL_DIR}/sbin/zabbix_agentd -c ${INSTALL_DIR}/conf/zabbix_agentd.conf
- ExecStop=/bin/kill -SIGTERM $MAINPID
- LimitNOFILE=infinity
- LimitNPROC=infinity
- TimeoutStartSec=0
- Delegate=yes
- Restart=on-failure
- StartLimitBurst=3
- StartLimitInterval=60s
-
- [Install]
- WantedBy=default.target
- EOF
- # 启动Zabbix_agent服务
- systemctl daemon-reload
- systemctl start zabbix_agentd.service
- systemctl status zabbix_agentd.service &> /dev/null
- if [[ $? = 0 ]];then
- echo "zabbix_agentd服务启动完成"
- else
- echo "zabbix_agentd服务启动失败,请使用命令:systemctl status zabbix_agentd.service 查看失败原因"
- fi
给予脚本执行权限
chmod +x install_zabbix_agent.sh
然后将脚本与agent部署包打包成一个新的压缩包
tar -zcf install_agent.tar.gz *

上传安装包install_agent.tar.gz到服务器
解压安装包
tar -zxf install_agent.tar.gz

执行脚本进行安装
./install_zabbix_agent.sh 192.168.75.31
注意:
执行该脚本进行部署需要最少需要输入1个参数
第一个参数:Zabbix_server的连接IP(必须)
第二个参数:部署路径(可选,默认为:/usr/local/zabbix_agent)
第三个参数:部署包(可选,默认为:解压后的agent包)
第四个参数:Zabbi_agent的监听端口(可选,默认为:10050)

查看agent运行状态
systemctl status zabbix_agentd.service

配置>主机>创建主机(右上角)>补充信息(主机名称,链接模板,主机群组,接口类型为agent)>添加

添加完agent后,到最新数据查看最新添加的主机监控,可见主机监控数据正常获取。

这一期的Zabbix的技术分享到这就结束了,更多Zabbix agent内容,还可以查看我的往期内容:
我是乐维君,专注运维技术分享,关注我,运维更无忧。