zabbix的分散式監控Linux(zabbix-proxy)
一、概述:
zabbix 是一個分散式的監控系統,支援通過代理伺服器zabbix proxy收集zabbix agent的資料,然後把收集儲存在本地資料庫併發送給zabbix server進行統一儲存和展示。架構如下:
說明:zabbix的分散式系統主機解決zabbix-server在監控裝置過多分散時的壓力;可以在各IDC部署zabbix-proxy服務代理監控本IDC機房中的所有裝置再通過主動模式 把收集的監控資料主動提交到zabbix-server;上圖即zabbix-server部署在IDC C,其他IDC部署zabbix-proxy 各IDC裝置的agent指向所在zabbix-proxy;
本次測試說明: 本次測試基於前面本文是繼LNMP環境部署zabbix實戰等相關zabbix系列的補充;因此zabbix server不在部署;主要測試 zabbix proxy 及agent通過zabbix proxy分散式監控; zabbix-server:CentOS7.4_x64 LNMP環境 zabbix-server 172.16.3.152(zabbix.san.com) (之前已經部署過) zabbix-proxy:CentOS7.4_x64 mariadb-server zabbix-agent 172.16.3.167(zabbix-proxy) zabbix-agent:CnetOS7.4_x64 zabbix-agent 172.16.3.175(node3.san.com) 為了減少不必要的故障排錯,關閉selinux與iptables firewalld服務(注意:生產線上務必做好相應配置!)
二、zabbix-proxy安裝配置
1、安裝mariadb 由於zabbix-proxy是代理收集資料,因此需要獨立的資料系統;
[[email protected] ~]# yum -y install mariadb-server mariadb-devel
啟動資料庫
[[email protected] ~]# systemctl start mariadb
配置zabbix proxy服務資料庫 安裝好mariadb 預設root為空;登入資料
mysql -uroot -p
設定root密碼
set password for [email protected] = password("redhat");
建立資料庫為proxy
create database proxy character set utf8 collate utf8_bin;
授權
grant all privileges on proxy.* to 'proxy'@'172.16.3.%' identified by '123456';
2、配置zabbix安裝源並安裝
[[email protected] ~]# rpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
[[email protected] ~]# yum install zabbix-proxy -y
初始化資料庫
[[email protected] ~]# cd /usr/share/doc/zabbix-proxy-mysql-3.2.11/
[[email protected] ~]# gzip -d schema.sql.gz
[[email protected] ~]# mysql -uzabbix -p123456 proxy < schema.sql
3、配置zabbix_proxy服務
[[email protected] ~]# egrep -v '(^$|^#)' /etc/zabbix/zabbix_proxy.conf
ProxyMode=0 #主動上報資料到zabbix server
Server=172.16.3.152 #zabbix server地址
ServerPort=10051 #zabbix server埠
Hostname=SH_Proxy_172.16.3.167 #zabbix proxy主機名,此處和在zabbix server web GUI上新增時的名稱必須保持一至
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_proxy.pid
SocketDir=/var/run/zabbix
DBHost=localhost
DBName=proxy
DBUser=proxy
DBPassword=123456
DBPort=3306
ProxyLocalBuffer=3
ProxyOfflineBuffer=24
HeartbeatFrequency=60
ConfigFrequency=5
DataSenderFrequency=5
StartPollers=10
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
4、zabbix proxy上的zabbix-agentd服務
[[email protected] ~]# egrep -v "(^$|^#)" /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=172.16.3.167
ServerActive=172.16.3.167
Hostname=SH_Proxy_172.16.3.167 #此處名稱需要和zabbix-proxy.conf中保持一致
Include=/etc/zabbix/zabbix_agentd.d/*.conf
啟動zabbix-proxy 與zabbix-agent服務
[[email protected] ~]# systemctl start zabbix-proxy
[[email protected] ~]# systemctl start zabbix-agent
5、zabbix server web GUI上新增zabbix proxy agent代理 管理-->agent代理程式設計師 -->agent代理程式名稱 "SH_Proxy_172.16.3.167" -->系統代理程式模式 "主動" -->新增 如圖:
三、測試zabbix-proxy
1、zabbix-agent安裝配置
同樣新增zabbix安裝源並yum安裝
rpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
[[email protected] ~]# yum install zabbix-agnet -y
檢視zabbix agent.conf配置
[[email protected] ~]# cat /etc/zabbix/zabbix_agent.conf
[[email protected] ~]# egrep -v '(^$|^#)' /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=172.16.3.167 #指向zabbix-proxy
ServerActive=172.16.3.167 #指向zabbix-proxy
Hostname=SH_172.16.3.175 #此agent識別hostname
Timeout=15
Include=/etc/zabbix/zabbix_agentd.d/*.conf
2、新增主動監控模板 zabbix-server web GUI中克隆複製建立基於Template OS Linux的Template OS Linux-Active 主動監控模板;原因就是zabbix-proxy所在的IDC裝置通過agent主動傳送資料到zabbix-proxy中;步聚如下: 配置-->模板-->Template OS Linux -->全克隆-->模板名稱 "Template OS Linux-Active" -->新增 開啟Template OS Linux-Active模板-->監控項-->全選後 指更新-->型別 修改為 "zabbix客戶端(主動模式)" -->更新 如圖: 最終會看到該模板下的監控項 型別為類似下圖: zabbix-server web GUI 新增基於proxy的agent 配置-->主機-->建立主機-->主機名稱"SH_172.16.3.175" -->可見名稱"web_server_01" -->群組"web services" -->agent代理程式的介面 "172.16.3.175" -->由agent代理程式監測 "SH_Proxy_172.16.3.167" --> 同時給監控主機新增一個主動監控模板(Template OS Linux-Active); --> 新增 如圖:
3、檢視基於zabbix-proxy監控的資料 可以看到通過zabbix-proxy監控了node3.san.com這臺主機並獲取了監控資訊! 最終zabbix server上除了zabbix-server 自動發現並監控了node2.san.com外還有通過zabbix-proxy監控的node3.san.com(172.16.3.175)如圖:
四、總結
基於zabbix server -> zabbix proxy(代理)<-zabbix agent 分散式監控搭建完成;需要注意的是zabbix-proxy服務需要單獨資料庫系統用於收集所在區域的其他agent監控資料;各agent上的server指定到zabbix-proxy域名或ip; agent主動提交資料到zabbix server 或提交到zabbix-proxy會減輕zabbix server的壓力,這就是所所謂的主動監控;主動監控需要基於主動監控的模板;zabbix預設是被監控,即定時去從agent上獲取監控資料!zabbix proxy上除了安裝zabbix-proxy服務還安裝agent服務!