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端進行配置。
下面介紹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