zabbix的強大之處也在於它是分佈式監控系統,對於多機房大集羣狀況下,確定不是一臺zabbix-server服務器來進行信息的收集等工做,就要用到代理了。在記錄zabbix-proxy以前,要系統的記錄一下zabbix的監控方式。前端
zabbix自帶多種類型的監控方式,大體分兩類:公共的協議和zabbix專業的協議。支持多種協議的監控方式,相應地也支持多種設備的監控,從而能夠對複雜的網絡環境進行監控。java
1.1支持的監控方式mysql
官方連接:https://www.zabbix.com/documentation/3.2/manual/config/items/itemtypeslinux
項類型覆蓋各類方法獲取數據從您的系統。 每一個項目類型都有其本身的一組支持項鍵和必需的參數。目前由zabbix提供下列事項類型的支持c++
Zabbix agent checks #這些客戶端來進行數據採集,又分爲Zabbix agent(被動模式:客戶端等着服務器端來要數據),Zabbix agent (active)(主動模式:客戶端主動發送數據到服務器端) SNMP agent checks #SNMP方式,若是要監控打印機網絡設備等支持SNMP設備的話,可是又不能安裝agent的設備。 SNMP traps IPMI checks #IPMI即智能平臺管理接口,如今是業界經過的標準。用戶能夠利用IPMI監視服務器的物理特性,如溫度、電壓、電扇工做狀態、電源供應以及機箱入侵等。 Simple checks #簡單檢查,選擇此方式後icmping主機判斷主機是否存活 VMware monitoring #VMware監控 Log file monitoring #監控日誌文件 Calculated items #監控項的計算 Zabbix internal checks #內部檢查容許監控Zabbix的內部流程。 換句話說,您能夠監視與Zabbix服務器或Zabbix代理到底發生了什麼。 SSH checks #SSH檢查。Zabbix服務器必須執行SSH檢查最初的配置SSH2的支持。 Telnet checks #Telnet檢查。Telnet檢查表現爲缺乏代理的監控。 Zabbix代理不須要遠程登陸檢查。 External checks #Zabbix服務器執行的外部檢查是檢查經過運行shell腳本或二進制。外部檢查不須要任何代理被監控主機上運行。 Aggregate checks #整體檢查Zabbix服務器經過直接從項目收集彙總信息數據庫查詢。 Trapper items #陷阱項目接受傳入的數據,而不是查詢它。對於您可能要「推」到Zabbix的任何數據都是有用的。 JMX monitoring #java管理擴展,是java平臺上爲應用程序、設備、系統等植入管理功能的框架。JMX能夠跨越一系列異構操做系統平臺、系統體系架構和網絡傳輸協議,靈活地開發無縫集成的系統、網絡和服務管理應用。 ODBC checks #ODBC監控對應數據庫監控Zabbix前端項目類型。ODBC是一個C編程語言中間件API用於訪問數據庫管理系統(DBMS)。 ODBC的概念是由微軟,後來移植到其餘平臺。 #Zabbix能夠查詢任何數據庫,支持ODBC。 爲此,Zabbix不直接鏈接到數據庫,可是使用ODBC接口和ODBC驅動程序設置。 這個函數能夠更有效地監控不一樣數據庫的多種用途——例如,檢查特定數據庫隊列,使用統計等等。 Zabbix支持unixODBC,這是一種最經常使用的開源ODBCAPI
1.2Agent監控方式sql
Agent分爲主動和被動兩種方式.shell
Trapper監控方式數據庫
Trapper是發送任意的數據給Zabbix-server,採用主動推送的方式,Trapper不須要安裝客戶端,Key的名稱是能夠靈活定義,在此工做模式下,Zabbix數據發送的程序是zabbix-sender,能夠發送任何zabbix-server想要獲取的數據。編程
前面http://www.51niux.com/?id=147關於zabbix-sender命令介紹那裏已經演示了trapper方式的使用。vim
#主要是主機添加Host name那裏必定要是一個惟一的名稱,客戶端配置文件裏面Host name那裏定義的必定要和zabbix server端定義的Host name相一致。否則沒法獲取trapper方式發送的數據。Type of information(信息類型)這裏也必定要跟key所上傳數據類型一致,否則也是會失敗的。
在這種形式下,zabbix-server不會主動鏈接客戶端的IP,而是Trapper主動鏈接zabbix-server。
被動方式
Passive(被動模式),zabbix-server和zabbix-agent之間的通訊是zabbix的專用協議,數據格式爲JSON。默認狀況下,zabbix-agent工做在被動模式下,工做的模式是由Key和zabbix_agentd.conf參數配置決定的。
被動模式的流程以下:
Server打開一個TCP鏈接。
Server發送一個key爲agent.ping\n。
Agent接收到這個請求,而後響應數據<HEADER><DATALEN>1.
Server對接收到的數據進行處理。
TCP鏈接關閉。
主動方式
Active(主動模式),主動模式因爲是Agent將採集到的數據主動發送給Server,而不須要Server每次鏈接Agent等待採集,因此採用主動模式會使Zabbix-Server具備最好的性能。在大型環境下,必定要將工做模式設置爲主動模式,並儘量採用更多的proxy以下降Server的負擔,通常多機房,每一個機房確定都要設置proxy的。
主動方式設置
客戶端的配置:/etc/zabbix/zabbix_agentd.conf配置文件中設置ServerActive=192.168.1.103(這個IP能夠是server也能夠是proxy的IP地址),而後重啓zabbix_agentd服務。
服務端的配置:服務器端items的檢測方式(Type)修改成Zabbix agent(active)
主動方式的請求週期
Agent向Server創建一個TCP的鏈接。
Agent請求須要檢測的數據列表。
Server響應Agent,發送一個Items列表(item key、delay)。
Agent響應請求。
TCP鏈接完成本次會話後關閉。
Agent開始週期性的收集數據。
#下面是Agent要向Server發送數據了:
Agent向Server創建一個TCP鏈接。
Agent發送在採集週期內,須要採集數據給Server.
Server處理Agent發送的數據。
TCP鏈接關閉。
2.1概述
官網連接:https://www.zabbix.com/documentation/3.2/manual/distributed_monitoring/proxies
zabbix proxy能夠代替zabbix server檢索客戶端的數據,而後把數據彙報給zabbix server,而且在必定程度上分擔了zabbix server的壓力.zabbix proxy能夠很是簡便的實現了集中式、分佈式監控.
zabbix proxy使用場景:
監控遠程區域設備 監控本地網絡不穩定區域 當zabbix監控上千設備時,使用它來減輕server的壓力 簡化zabbix的維護
#代理須要Zabbix服務器只有一個TCP鏈接。 這種方式更容易繞過防火牆,你只須要配置一個防火牆規則。Zabbix代理必須使用一個單獨的數據庫。 代理服務器收集的全部數據都會在本地存儲,而後再發送到服務器。 這樣就不會由於服務器的任何臨時通訊問題而丟失數據。 代理配置文件中的ProxyLocalBuffer和ProxyOfflineBuffer參數控制數據在本地保存多長時間。
proxy的配置文件參數:https://www.zabbix.com/documentation/3.2/manual/appendix/config/zabbix_proxy
Zabbix代理是一個數據收集器。 它不計算觸發,處理事件或發送警報。
zabbix-proxy環境準備
systemctl stop firewalld systemctl disable firewalld setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
zabbix-server準備環境:
一、server搭建完成,並可正常監控
二、保證telnet server的10050和10051端口正常(默認zabbix-server的ListenIP=127.0.0.1,這種狀況下telnet 10051是失敗的,須要在後面加上服務器的IP地址)
zabbix-proxy操做
安裝必要的插件
yum install -y lrzsz wget gcc gcc-c++ vim
yum install mysql-connector-odbc mysql-devel libdbi-dbd-mysql net-snmp-devel curl-devel unixODBC-devel OpenIPMI-devel java-devel libssh2-devel -y
建立用戶和組
groupadd zabbix -g 201 useradd -g zabbix -u 201 -m zabbix
下載安裝包
wget https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.2.6/zabbix-3.2.6.tar.gz
安裝
#tar zxf zabbix-3.2.6.tar.gz #./configure --prefix=/usr/local/zabbix-3.2.6 --sysconfdir=/etc/zabbix --enable-proxy --enable-agent --enable-ipv6 --with-mysql=/usr/bin/mysql_config --with-net-snmp --with-libcurl --with-openipmi --with-unixodbc --with-ssh2 --enable-java #make #make install
#ln -s /usr/local/zabbix-3.2.6 /usr/local/zabbix_proxy
安裝mariadb或者msyql數據庫
yum install -y mariadb mariadb-server mariadb-devel
啓動數據庫,並設置爲開機自啓動。
# systemctl start mariadb # systemctl enable mariadb
配置數據庫
mysqladmin -uroot password '123456' mysql -uroot -p123456 -e 'create database zabbix_proxy character set utf8;' mysql -uroot -p123456 -e "grant all privileges on zabbix_proxy.* to zabbix@localhost identified by 'zabbix';" mysql -uroot -p123456 -e "flush privileges;" mysql -uzabbix -pzabbix zabbix_proxy </root/zabbix-3.2.6/database/mysql/schema.sql
zabbix-proxy配置文件
#cd /etc/zabbix/ #cp zabbix_proxy.conf zabbix_proxy.conf.bak vim /etc/zabbix/zabbix_proxy.conf
配置文件內容(配置文件中不能有漢字)
erver=172.16.5.238 Hostname=zabbix_proxy_172.16.5.239 LogFile=/tmp/zabbix_proxy.log DBHost=localhost DBName=zabbix_proxy DBUser=zabbix DBPassword=zabbix ConfigFrequency=120 #主動去server端去拉去配置更新的頻率120秒一次 DataSenderFrequency=60 #發送採集的監控數據到服務器端,默認是1秒,咱們一分鐘發送一次
啓動服務
/usr/local/zabbix_proxy/sbin/zabbix_proxy
zabbix-server端配置
下面是上圖中參數的介紹:
Proxy name : 輸入代理名稱。 它必須與代理配置文件中的Hostname參數中的名稱相同。 Proxy mode : 選擇代理模式。Active(主動模式) - 代理將鏈接到Zabbix服務器並請求配置數據.Passive(被動模式) - Zabbix服務器鏈接到代理。請注意,在使用活動代理時,沒有加密通訊(敏感)代理配置數據可能可用於訪問Zabbix服務器陷阱端口的各方。 這是可能的,由於任何人均可以假裝成活動代理,而且若是不發生身份驗證,則請求配置數據。 Hosts : 添加要由代理監視的主機。已經由另外一個代理監視的主機在其餘主機選項中顯示爲灰色。 Description: 輸入代理描述。
下面是上圖中參數的介紹:
Connections to proxy:服務器如何鏈接到被動代理:無加密(默認),使用PSK(預共享密鑰)或證書。 Connections from proxy:從活動代理中選擇容許的鏈接類型。 能夠同時選擇幾種鏈接類型(用於測試和切換到其餘鏈接類型)。 默認爲「無加密」。 #點擊Certificate以後又兩個參數: Issuer:容許頒發證書。 證書首先經過CA(認證機構)驗證。 若是CA有效,則由CA簽名,則可使用Issuer字段來進一步限制容許的CA。 該字段是可選的,若是您的Zabbix安裝使用多個CA的證書,則使用該字段。 Subject:容許的證書。 證書首先經過CA驗證。 若是它有效,由CA簽名,則主題字段可用於僅容許Subject字符串的一個值。 若是此字段爲空,則接受由配置的CA簽名的任何有效證書。 #點擊PSK以後又兩個參數: PSK identity:預共享密鑰身份字符串。 PSK : 預共享密鑰(hex-string)。 若是Zabbix使用mbed TLS(PolarSSL)庫,Zabbix將使用GnuTLS或OpenSSL庫,64位十六進制(32字節PSK),最大長度爲512位十六進制數(256字節PSK)。 示例:1f87b595725ac58dd977beef14b97461a7c1045b9a1c963065002c5473194952
客戶端配置
# vim /etc/zabbix/zabbix_agentd.conf #下面是要修改的地方
Server=172.16.5.239 #agentd被動模式下的server或者proxy的IP地址 ServerActive=172.16.5.239 #若是agentd端是被動模式的話,此條和下面那條並不非用配置,可是若是agentd端是主動模式的話,此條必定要配置上。 Hostname=172.16.5.240
# /etc/init.d/zabbix_agentd restart #重啓zabbix_agentd服務
proxy端測試一下:
/usr/local/zabbix-3.2.6/bin/zabbix_get -s 172.16.5.240 -k agent.ping
參考地址:http://www.51niux.com/?id=156