centos7之zabbix3.2代理(zabbix-proxy)搭建

zabbix的強大之處也在於它是分佈式監控系統,對於多機房大集羣狀況下,確定不是一臺zabbix-server服務器來進行信息的收集等工做,就要用到代理了。在記錄zabbix-proxy以前,要系統的記錄一下zabbix的監控方式。前端

1、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、zabbix-proxy搭建

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代理是一個數據收集器。 它不計算觸發,處理事件或發送警報。

2.2zabbix-proxy的安裝配置

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

相關文章
相關標籤/搜索