问题背景
手动添加Zabbix客户端非常耗时间,增加人力、时间成本。为了满足监控企业成千上万台服务器,zabbix提供了自动发现与自动注册的功能,自动批量发现局域网中的服务器,并自动添加到zabbix监控平台。
自动发现(被动模式):由服务端主动发起,Zabbix Server开启发现进程,定时扫描局域网中IP服务器、设备。实现自动将发现主机、自动将主机添加到主机组、自动加载模板、自动创建项目(item)、自动创建图像等功能。
缺点:当 Agent服务器过多的时候采用自动发现,zabbix-server压力会比较大,自动添加主机进度就会非常慢。
自动注册(主动模式):Zabbix Server 等待 Zabbix Agent主动上报。由客户端主动发起,客户端必须安装并启动Agentd,否则无法被自动注册添加至主机列表。对于使用SNMP的要采用自动发现。
缺点:agent有可能找不到Server。
PS:主动还是被动是基于agent而言,不管是主动还是被动模式都是在agent端进行配置。
下面介绍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
# 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