1、zabbix支持的主要監控方式:java
zabbix主要Agent,Trapper,SNMP,JMX,IPMI這幾種監控方式,本文章主要經過監控理論和實際操做測試等方式來簡單介紹這幾種方式的監控原理和優缺點等 。下面對幾種監控方式的監控原理進行介紹:linux
一、Agent監控方式web
在Agent監控方式下,zabbix-agent會主動收集本機的監控信息並經過TCP協議與zabbix-server傳遞信息。Agent監控方式分爲主動和被動模式。在被動模式下,zabbix-agent監聽10050端口,等待zabbix-server的監控信息收集信息請求;在主動模式下,zabbix-agent收集監控信息並經過10050端口主動將數據傳給zabbix-server所在服務器的10051端口。vim
優勢:windows
(1)是zabbix最經常使用的監控方式,監測指標深刻細緻有針對性。安全
(2)內置監控功能強大,內置監控項目豐富。服務器
(3)TCP方式實現通信,可靠性也有保證。網絡
缺點:架構
(1)須要在被監控機器上安裝zabbix-agent客戶端,部署相對麻煩,最初須要逐個機器安裝代理軟件app
(2)zabbix-agent客戶端運行在被監控機上,會收集本機信息
二、Trapper監控方式
Trapper監控方式使用zabbix-sender程序主動向zabbix-server發送數據。key的名稱和發送的數據內容均可以靈活定義。發送的信息採用JSON格式,遵循zabbix-sender協議。能夠自定義腳本利用zabbix-sender協議來zabbix-server發送信息。
優勢:
(1)不須要在被監控機器上安裝zabbix-agent
(2)不收集被監控機器的信息
(3)能夠自定義發送的信息內容
(4)可使用自定義腳本發送信息
缺點:
(1)須要自定義發送的信息內容
(2)無內置監控項目
三、SNMP監控方式
SNMP全稱Simple Network Management Protocol,即網絡管理協議,包括進程管理和被管理設備兩部分。做爲一種國際通用的網絡管理協議被普遍的應用於各類交換機,路由器等網絡設備的管理上,而如今也愈來愈多被用於對服務器的監控上。
優勢:
(1)服務器一旦部署SNMPAgent,任何能實現SNMP協議的軟件均可以對其進行監測。
(2)經過這種手段進行監測不需知道被監測服務器的用戶名和密碼,比較安全。
缺點:
(1)不少服務器並不是默認安裝SNMPAgent,若是經過這種方式監測則須要對全部服務器安裝部署。
(2)能監測的參數指標比較固定不夠深刻,沒法知足用戶的特殊需求。
(3)因爲SNMP協議是經過UDP方式實現的。在網絡情況不佳的狀況下其可靠性能以保證。
四、JMX監控方式
JMX,全稱Java Management Extensions,即Java管理拓展,是Java平臺爲應用程序,設備,系統等植入管理功能的框架。在zabbix中,JMX數據的獲取由zabbix-java-gateway代理程序來負責數據的採集。
優勢:
(1)能夠詳細的監控各種Java程序的運行狀態
缺點:
(1)被監控機上須要安裝zabbix-java-gateway
五、IPMI監控方式
IPMI,全稱Interlligent Platform Management Interface,即智能平臺管理接口,本來是Intel架構中企業系統的周邊設備所採用的一種工業標準,之後成爲業界通用的標準。用戶能夠利用IPMI監控服務器的物理特性,如溫度,電壓,電扇工做狀態,電源供應以及機箱***等指標。
根據以上對zabbix各主要監控方式的梳理,結論以下:
(1)根據被監控機器的環境和客戶要求選用適當的監控方式,可同時配合多種監控方式。
(2)有條件在監控機上部署zabbix-agent客戶端時,該方法爲第一選擇,由於其功能強大且配置相對簡便。
(3)須要自定義腳本或者監控信息時,可以使用Trapper方式,即便用zabbix-sender程序或者自定義腳本遵循zabbix-sender協議,已JSON形式,經過TCP發送自定義信息。
2、Agent監控方式
一、經過Agent方式監控Linux服務器
(1)須要在Linux服務器上安裝zabbix-agent客戶端安裝包,須要先導入軟件安裝源:
rpm -ivh http://repo.zabbix.com/zabbix/3.5/rhel/7/x86_64/zabbix-release-3.5-1.el7.noarch.rpm
(2)安裝zabbix-agent客戶端服務:
yum -y install zabbix-agent
(3)zabbix 客戶端配置:
配置zabbix_server配置文件:
vim /etc/zabbix/zabbix_agentd.conf
修改如下配置信息:
EnableRemoteCommands=1 #容許zabbix服務器端遠程操做
LogRemoteCommands=1 #開啓遠程執行命令日誌
Server=192.168.181.136 #zabbix服務器端IP地址
ServerActive=192.168.181.136 #zabbix服務器端IP地址
Hostname=zabbix_agent #該值跟zabbix web上配置的主機名稱要一致 :(配置-》主機-》主機名稱)
ListenPort=10050 #監控服務端口
systemctl start zabbix-agent 啓動zabbix-agent服務
(4)zabbix服務器端添加被監控主機
選擇「配置」-「主機」,而後選擇「建立主機」;選擇添加的模板
二、經過Agent方式監控windows服務器 :
(1)下載Windows的zabbix客戶端
下載地址:https://www.zabbix.com/download_agents
(2)windows上安裝agent:
準備好安裝文件zabbix_agents-4.0.5-win-amd64-openssl.zip,能夠從官網上下載,在此須要注意和server端一致。而後解壓,解壓後的文檔結構(bin conf)
(3)進入conf目錄,對配置文件進行配置:
找到conf下的配置文件zabbix——agent.win.conf,須要修改的內容爲:LogFile、Server、Hostname、ServerActive這幾個參數。具體配置以下:
EnableRemoteCommands=1
LogRemoteCommands=1
Server=192.168.181.136
ServerActive=192.168.181.136
Hostname=windows-host
ListenPort=10050
(4)肯定被監控主機的系統是32位仍是64位
右鍵「此電腦」,查看操做系統版本,若是是32位,用bin\win32下的應用程序,不然用bin\win64下的應用程序。
(5)安裝zabbix-agent客戶端程序
用管理員權限打開CMD,進入到zabbix的應用程序目錄,執行安裝命令:
zabbix_agentd.exe -c D:\zabbix-agent\conf\zabbix_agentd.win.conf -i
安裝成功後,執行運行命令:
zabbix_agentd.exe -c D:\zabbix-agent\conf\zabbix_agentd.win.conf -s
(6)在zabbix server端配置agent
在server端,選擇 配置-主機 界面,而後點擊「建立主機」,在添加主機的界面,輸入被監控主機客戶端的信息。
(7)設定防火牆容許,zabbix默認要用到的端口是10050,因此設定容許10050端口的訪問
查看:netstat -ano
在Zabbix服務器端查看:
3、zabbix Trapper監控方式:
一、zabbix Trapper 工做原理
zabbix獲取數據時有時會出現超時,若是一些數據須要執行較長的時間才能獲取的話,那麼zabbix會出現異常,考慮到這種狀況,zabbix增長了Trapper功能,客戶端本身提交數據給zabbix。
Trapper是被監控主機主動發送數據給zabbix server,與主動模式的區別是不須要安裝客戶端;Trapper方式發送數據是以主機名處理,不是IP地址,因此主機名要惟一。
在配置監控項時候Type of information項要選擇text,不然會報not support錯誤。
Trapper工做模式中,使用zabbix監控類型zabbix Trapper(能夠稱爲zabbix捕捉器),在zabbix服務器上必須有一個捕捉項目,而後須要配合zabbix_sender把數據推送給zabbix服務器,該程序由zabbix發行版本自帶,源碼包解壓後在bin目錄下,配合crontab按期發送數據給zabbix server。
zabbix_sender是一個命令行工具,能夠用來發送zabbix服務器處理性能數據。該工具一般用於長時間運行的用戶 腳本,用於按期發送可用性和性能數據。
二、zabbix_sender命令:
rpm導入zabbix_sender安裝源:
rpm -ivh http://repo.zabbix.com/zabbix/3.5/rhel/7/x86_64/zabbix-sender-4.0.0-1.alpha1.el7.x86_64.rpm
使用rpm安裝,默認在/bin目錄下:
cd /bin
[root@localhost bin]# ./zabbix_sender
zabbix_sender [2844]: either '-c' or '-z' option must be specified
usage:
zabbix_sender [-v] -z server [-p port] [-I IP-address] -s host -k key
-o value
zabbix_sender [-v] -z server [-p port] [-I IP-address] [-s host] [-T] [-r]
-i input-file
zabbix_sender [-v] -c config-file [-z server] [-p port] [-I IP-address]
[-s host] -k key -o value
zabbix_sender [-v] -c config-file [-z server] [-p port] [-I IP-address]
[-s host] [-T] [-r] -i input-file
zabbix_sender [-v] -z server [-p port] [-I IP-address] -s host
--tls-connect cert --tls-ca-file CA-file
[--tls-crl-file CRL-file]
[--tls-server-cert-issuer cert-issuer]
[--tls-server-cert-subject cert-subject]
--tls-cert-file cert-file --tls-key-file key-file -k key
-o value
zabbix_sender [-v] -z server [-p port] [-I IP-address] [-s host]
--tls-connect cert --tls-ca-file CA-file
[--tls-crl-file CRL-file]
[--tls-server-cert-issuer cert-issuer]
[--tls-server-cert-subject cert-subject]
--tls-cert-file cert-file --tls-key-file key-file [-T] [-r]
-i input-file
zabbix_sender [-v] -c config-file [-z server] [-p port] [-I IP-address]
[-s host] --tls-connect cert --tls-ca-file CA-file
[--tls-crl-file CRL-file]
[--tls-server-cert-issuer cert-issuer]
[--tls-server-cert-subject cert-subject]
--tls-cert-file cert-file --tls-key-file key-file -k key
-o value
zabbix_sender [-v] -c config-file [-z server] [-p port] [-I IP-address]
[-s host] --tls-connect cert --tls-ca-file CA-file
[--tls-crl-file CRL-file]
[--tls-server-cert-issuer cert-issuer]
[--tls-server-cert-subject cert-subject]
--tls-cert-file cert-file --tls-key-file key-file [-T] [-r]
-i input-file
zabbix_sender [-v] -z server [-p port] [-I IP-address] -s host
--tls-connect psk --tls-psk-identity PSK-identity
--tls-psk-file PSK-file -k key -o value
zabbix_sender [-v] -z server [-p port] [-I IP-address] [-s host]
--tls-connect psk --tls-psk-identity PSK-identity
--tls-psk-file PSK-file [-T] [-r] -i input-file
zabbix_sender [-v] -c config-file [-z server] [-p port] [-I IP-address]
[-s host] --tls-connect psk --tls-psk-identity PSK-identity
--tls-psk-file PSK-file -k key -o value
zabbix_sender [-v] -c config-file [-z server] [-p port] [-I IP-address]
[-s host] --tls-connect psk --tls-psk-identity PSK-identity
--tls-psk-file PSK-file [-T] [-r] -i input-file
zabbix_sender -h
zabbix_sender -V
Try 'zabbix_sender --help' for more information.
usage:zabbix_sender [-Vhv] {[-zpsl] -ko | [-zpl] -T -i <file> -r} [-c<file>]
參數說明:
-c --config<file> 配置文件絕對路徑
-z --zabbix-server<server> zabbix server的IP地址
-p --port<server port> zabbix server 端口默認10051
-s --host <hostname> 主機名,zabbix客戶端zabbix.agentd.conf配置文件中定義的Hostname(不是服務器的hostname),不是客戶端主機的IP地址
-l -- source-address <IP address> 源IP
-k --key <key> 監控項的key值
-o --value<key value> key值
-i --input-file<input file> 從文件裏面讀取hostname、key、value一行爲一條數據,使用空格做爲分隔符,若是主機名帶空格,那麼請使用雙引號包起來
-T --with-timestamps 一行一條數據,空格做爲分隔符:<hostname> <key> <timestamp> <value>,配合 --input-file option,timestamp爲unix時間戳
-r --real-time 將數據實時提交給服務器
-v --verbose 詳細模式, -vv 更詳細
三、監控項配置
(1)選擇「配置」-「主機」-「新建主機」,添加zabbix-Trapper 客戶端的用戶名:
(2) 添加完主機後,添加監控項,選擇剛添加的主機,點擊「監控項」,而後點擊「建立監控項」:
添加監控信息,而後點擊更新:
(3)客戶端使用zabbix_sender發送數據:
客戶端設備操做:
cd /bin
-z --zabbix-server<server> zabbix server的IP地址
-s --host <hostname> 主機名,zabbix客戶端zabbix.agentd.conf配置文件中定義的Hostname(不是服務器的hostname),不是客戶端主機的IP地址
-k --key <key> 監控項的key值
-o --value<key value> key值
-vv 能夠顯示具體信息,這裏提示沒法鏈接到zabbix server的10051端口
4、Zabbix SNMP監控方式
一、SNMP監控介紹
若是要監控打印機、路由器、交換機、UPS等設備,確定不能使用zabbix agentd,由於他們不能安裝軟件,可是通常都支持SNMP協議,可使用SNMP來監控。SNMP檢查基於UDP協議。
注意事項:若是監控基於SNMPv3協議的設備,確保msgAuthoritativeEngineID(一般叫作snmpEngineID或「Engine ID」)是惟一的。
之前SNMPv3協議只支持MD5和DES加密,從zabbix2.2開始支持SHA與AES加密協議。
二、Zabbix SNMP監控Linux操做系統
(1)zabbix服務器端須要先安裝SNMP服務
使用yum源在線安裝SNMP服務配置
yum -y install net-snmp*
配置SNMP配置文件
vim /etc/snmp/snmpd.conf
proc mountd
proc ntalkd 4
proc sendmail 10 1
disk / 10000
load 12 14 14
view systemview included .1.3.6.1.2.1.1
view systemview included .1.3.6.1.2.1.25.1.1
設置開機啓動SNMP:
systemctl enable snmpd.service
systemctl start snmpd.service
(2)zabbix服務器使用snmpwalk命令測試被監控計算機名
2c是指採用SNMP V2版本,192.168.181.146是指監控設備開啓了SNMP服務,不然會獲取失敗,sysName是指被監控設備的計算機名。
[root@localhost ~]# snmpwalk -v 2c -c public 192.168.181.136 sysName
SNMPv2-MIB::sysName.0 = STRING: localhost.localdomain
(3)被監控設備安裝SNMP服務
yum -y install net-snmp*
配置SNMP配置文件:
vim /etc/snmp/snmpd.conf
view systemview included .1.3.6.1.2.1.1
view systemview included .1.3.6.1.2.1.25.1.1
view systemview included .1
com2sec notConfigUser default zabbix
#zabbix是被監控的團體名 public團體名稱能夠修改爲本身設置的字符串也可使用默認public,default字符串默認是全部IP地址均可以訪問,若是把default修改爲192.168.181.136(zabbix服務器IP地址),表示只容許zabbix服務器訪問這臺被監控電腦的SNMP服務。
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# systemctl enable snmpd.service
[root@localhost ~]# systemctl start snmpd.service
(4)zabbix服務端web界面添加主機
選擇「配置」-「主機」-「建立主機」,添加要被監控設備的主機信息:
添加模塊:
添加宏:
三、zabbix SNMP監控windows系統
https://blog.51cto.com/5001660/2149599
四、zabbix SNMP 監控網設備
5、zabbix JMX監控方式
一、zabbix JMX 簡介
在企業中,不少程序是基於Java來編寫的,java程序運行在JVM之上,而JVM本身就能夠監聽在某個套接字上,將本身內部的狀態信息輸出出去,因此監控服務器只須要直接鏈接JVM的套接字就能夠獲取到Java進程的相關信息,不須要經過Agent、SNMP;但是zabbix是沒辦法本身鏈接JVM套接字的,也就是說,zabbix自身是不可以做爲客戶端來連接該套接字的。因此,就須要額外安裝一個服務來鏈接JVM套接字的。這個服務就是zabbix-java-gateway.x86_64(Java網關);能夠經過該網關來監聽多個JVM;zabbix-agent-gateway能夠是一個單獨的主機,能夠和zabbix server安裝到一臺主機上;
二、zabbix server 安裝java gateway
zabbix提供了一個java gateway的應用去監控jmx(Java Management Extensions,即Java管理擴展)是一個爲應用程序、設備、系統等植入管理功能的框架。JMX能夠跨越一系列異構操做平臺、系統體系結構和網絡傳輸協議,靈活的開發無縫集成的系統、網絡和服務管理應用。
yum install -y java java-devel zabbix-java-gateway
6、zabbix IPMI監控方式
IPMI(Intelligent PlatformManagement Interface)既智能平臺管理接口是使硬件管理具有「智能化」的新一代通用接口標準。用戶能夠利用IPMI監視服務器的物理特性,如溫度、電壓、電扇工做狀態、電源供應以及機箱入侵等。Ipmi最大的優點在於它是獨立於 CPU BIOS 和OS的,因此用戶不管在開機仍是關機的狀態下,只要接通電源就能夠實現對服務器的監控。Ipmi是一種規範的標準,其中最重要的物理部件就是BMC(Baseboard Management Controller),一種嵌入式管理微控制器,它至關於整個平臺管理的「大腦」,經過它 ipmi 能夠監控各個傳感器的數據並記錄各類事件的日誌。
使用 ipmi 的先決條件,想要實現對服務器的 ipmi 管理,必須在硬件、OS、管理工具等幾個方面都知足:
a.服務器硬件自己提供對 ipmi 的支持目前惠普、戴爾和 NEC 等大多數廠商的服務器都支持IPMI 1.5,但並非全部服務器都支持,因此應該先經過產品手冊或在 BIOS 中肯定服務器是否支持 ipmi,也就是說服務器在主板上要具備 BMC 等嵌入式的管理微控制器。
b.操做系統提供相應的 ipmi 驅動經過操做系統監控服務器自身的 ipmi 信息時須要系統內核提供相應的支持,linux 系統經過內核對OpenIPMI(ipmi 驅動)的支持來提供對 ipmi 的系統接口。
平常監控中使用IPMI的方式很少,在此不舉例說明了。