CentOS7一键安装Zabbix Agent 6.0并实现自动注册
问题背景
手动添加Zabbix客户端非常耗时间,增加人力、时间成本。为了满足监控企业成千上万台服务器,zabbix提供了自动发现与自动注册的功能,自动批量发现局域网中的服务器,并自动添加到zabbix监控平台
- 自动发现(被动模式):由服务端主动发起,Zabbix Server开启发现进程,定时扫描局域网中IP服务器、设备。实现自动将发现主机、自动将主机添加到主机组、自动加载模板、自动创建项目(item)、自动创建图像等功能。
缺点:当 Agent服务器过多的时候采用自动发现,zabbix-server压力会比较大,自动添加主机进度就会非常慢。
- 自动注册(主动模式):Zabbix Server 等待 Zabbix Agent主动上报。由客户端主动发起,客户端必须安装并启动Agentd,否则无法被自动注册添加至主机列表。对于使用SNMP的要采用自动发现。
缺点:agent有可能找不到Server。
PS:主动还是被动是基于agent而言,不管是主动还是被动模式都是在agent端进行配置
以上概念来自本文为CSDN博主「途径日暮不赏丶」的原创文章 原文链接:https://blog.csdn.net/weixin_45880055/article/details/115361860
下面介绍Zabbix 6.0 Agent自动注册的实践过程
1、Zabbix Server上Web配置自动注册
1、 配置-->动作-->Autoregistration actions
2、定义自动注册主机的条件
3、定义注册上来的主机所要关联模板
2、CentOS7主机端一键自动化脚本安装并配置Zabbix Agent
cd /opt rz 上传zabbix-agent-6.0.4-1.el7.x86_64.rpm zabbix_install.sh 执行安装脚本 sh zabbix_install.sh
脚本部分内容如下
cat zabbix_install.sh #!/usr/bin/env bash # Only RHEL7 system is supported # Version: 2.0 #Set Monitor ADDRESS SERVER_ADDRESS='192.168.31.47' function GET_OS_Version() { OS_Version=$(cat /etc/redhat-release|sed -r 's/.* ([0-9]+)\..*/\1/') } function INIT_OS() { # disabled SELinux sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config setenforce 0 } function GET_OS_STATUS() { Processes=$(ps -ef|grep -v grep|grep zabbix_agent|wc -l) if [[ $Processes != '0' ]];then echo $(hostname -I ) 'Agent process already exists in the system!!!';exit 1;fi } function Install_7() { yum -y localinstall /opt/zabbix-agent-6.0.4-1.el7.x86_64.rpm &>/dev/null if [[ $? != '0' ]];then echo $(hostname -I ) 'Install failed!!!';fi systemctl start zabbix-agent systemctl enable zabbix-agent systemctl restart zabbix-agent } function Restart_AGENT7() { systemctl restart zabbix-agent } function Configure() { cat << EOF > /etc/zabbix/zabbix_agentd.conf PidFile=/var/run/zabbix/zabbix_agentd.pid LogFile=/var/log/zabbix/zabbix_agentd.log LogFileSize=0 Server=$SERVER_ADDRESS ServerActive=$SERVER_ADDRESS HostnameItem=system.hostname HostMetadataItem=system.uname Include=/etc/zabbix/zabbix_agentd.d/*.conf UnsafeUserParameters=1 EOF } function AGENT_RUN() { STATUS=$(ss -ntl|grep 10050|head -1|awk '{print $1}'|wc -l) if [[ $STATUS -eq 1 ]];then echo $(hostname -I ) 'Install OK!!!';else echo $(hostname -I ) 'Install failed!!!';fi }
3、确认Agent是否正常注册上线
可以看到已经正常上线
Tips
如果出现如下报错时,检查firewalld防火墙是否开放10050端口
firewall-cmd --permanent --zone=public --add-port=10050/tcp firewall-cmd --reload