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


zabbix的強大之處也在於它是分布式監控系統,對於多機房大集群情況下,肯定不是一台zabbix-server服務器來進行信息的收集等工作,就要用到代理了。在記錄zabbix-proxy之前,要系統的記錄一下zabbix的監控方式。

一、Zabbix監控方式

zabbix自帶多種類型的監控方式,大致分兩類:公共的協議和zabbix專業的協議。支持多種協議的監控方式,相應地也支持多種設備的監控,從而可以對復雜的網絡環境進行監控。

1.1支持的監控方式

官方鏈接:https://www.zabbix.com/documentation/3.2/manual/config/items/itemtypes

項類型覆蓋各種方法獲取數據從您的系統。 每個項目類型都有其自己的一組支持項鍵和必需的參數。目前由zabbix提供下列事項類型的支持

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監控方式

  Agent分為主動和被動兩種方式.

Trapper監控方式

Trapper是發送任意的數據給Zabbix-server,采用主動推送的方式,Trapper不需要安裝客戶端,Key的名稱是可以靈活定義,在此工作模式下,Zabbix數據發送的程序是zabbix-sender,可以發送任何zabbix-server想要獲取的數據。

前面http://www.51niux.com/?id=147關於zabbix-sender命令介紹那里已經演示了trapper方式的使用。

#主要是主機添加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連接關閉。

 二、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准備環境:

  1、server搭建完成,並可正常監控

  2、保證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

 

主動模式的使用

1、前面我們說了被動模式適合小型的監控模式,如果成百上千的話,我們盡量使用主動模式。但是怎么用呢?手動模式下只需要配置zabbix-agentd配置文件里面的Server=192.168.1.58參數即可,ServerActive=和Hostname=對zabbix來說不是很重要。但如果服務器要使用zabbix主動模式的話,必須這里要啟用ServerActive和Hostname,並且Hostname必須要和

 

 

 2、就算是這樣也並沒有完全啟用主動模式,我們還需要修改windows和linux以及zabbix-agent模板的監控模式。這里我們之說linux,把監控項和自動發現里面的模板全都改成Zabbix客戶端(主動式)

  

  

 ping檢測

   1、我們知道zabbix-server已經有了fping的功能,不會的同學可以看https://www.cnblogs.com/lei0213/p/8859326.html這邊帖子。那只限於zabbix-server有了。這里zabbix-proxy並沒有這個功能。所以我們要單獨給proxy安裝fping,方法看也是這個帖子。

   2、但是會報兩個錯誤。

  錯誤一

At least one of '/usr/sbin/fping', '/usr/sbin/fping6' must exist. Both are missing in the system

  他的意思你說你沒有安裝fping,我們安裝即可。但是proxy上沒有zabbix-server配置文件,所以這里我們只需要做軟連接到/usr/sbin/fping下就行。

  錯誤二

fping failed: (null): can't create socket (must run as root?) : Permission denied

  他的意思是說你的fping文件沒有權限,所以需要給他權限。

chmod 4755 /usr/sbin/fping或者chmod u+s /usr/sbin/fping

  如下狀態都是已啟用就行。錯誤一和錯誤二都是在這里提醒的。

  

參考地址:http://www.51niux.com/?id=156


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM