天天看點

企業級開源監控解決方案——Zabbix 介紹前言Zabbix簡介功能特性監控對象功能元件監控流程常見程序總結

Lib

  • 前言
  • Zabbix簡介
  • 功能特性
  • 監控對象
  • 功能元件
  • 監控流程
  • 常見程序
  • 總結

前言

随着網際網路、雲計算的飛速發展,企業線上業務系統越來越複雜,越來越多的的伺服器、網絡裝置等硬體資源以及資料庫、中間件等軟體資源被增加到系統架構中,龐大的業務系統架構,給運作維護增加一定的難度,企業對運維人員的需求随之增加,且業務系統運作狀态周報、月報難以統計、導出,企業管理者難以掌握系統整體運作狀态,不僅提高了企業的人力成本,同時也給企業管理帶來了管控難題,一個行之有效的集中監控體系迫在眉睫。

對于運維人員來說,借助于集中監控解決方案,能夠正确和及時地了解系統的運作狀态,發現影響整體系統運作的瓶頸,進行必要的系統優化和配置變更,甚至為系統的更新和擴容提供依據。強有力的監控、診斷和告警工具還可以幫助運作維護人員快速地分析出應用故障原因,把他們從繁雜重複的勞動中解放出來。

如果能夠建立起一套堅實的監控系統來管理業務系統,能夠實時地了解系統的運作狀态,并針對可能發生的災難加以警示,運維技術人員就有機會迅速啟動災難響應方案或者着手排除複雜的性能故障,提高工作效率,這對于任何規模的企業而言都極具巨大的實際價值。

一個成熟的監控系統,能夠在日常IT管理中給運維人員提供運維對象的實時資訊,在被監控對象狀态異常時通過一些靈活的告警機制及時的告知到運維人員,讓運維人員在第一時間發現問題并快速響應,能夠在日常運維中可視化的展示被監控對象的資訊,生成可視化的報表給運維人員及管理人員檢視、分析及決策。是以,一個監控工具就應該具備采集資訊、存儲資訊、展示資訊、報警通知等功能,而本文介紹的Zabbix就可以做到這些,當然監控系統作為一個成熟的運維産品,除了Zabbix之外,市面上有很多其他選擇,包括Nagios、Cacti、Ganglia 、Open-falcon(小米開源産品)等等。

Zabbix簡介

企業級開源監控解決方案——Zabbix 介紹前言Zabbix簡介功能特性監控對象功能元件監控流程常見程式總結
  • Zabbix是一個基于WEB界面的提供分布式系統監視以及網絡監視功能的企業級的開源解決方案,支援實時監控數千台伺服器,虛拟機和網絡裝置,采集百萬級監控名額。
  • Zabbix能監視各種網絡參數,保證伺服器系統的安全營運;并提供靈活的通知機制以讓系統管理者快速定位/解決存在的各種問題。
  • Zabbix完全開源免費,是目前國内網際網路使用者中使用最廣的監控軟體。
  • Zabbix 官方最新軟體版本: Zabbix 4.4 (2019-11)
  • Zabbix中文官網: https://www.zabbix.com/cn/
  • Zabbix中文手冊(4.0版本): https://www.zabbix.com/documentation/4.0/zh/manual/concepts

功能特性

  • 名額收集 —— 從任何裝置、系統、應用程式上進行名額采集
  • 問題檢測 —— 定義智能門檻值
  • 可視化 —— 單一界面管理平台
  • 告警和修複 —— 確定及時、有效的告警
  • 安全和認證 —— 保護所有層級的資料
  • 輕松搭建部署 —— 大批模闆,開箱即用,節省寶貴的時間
  • 自動發現 —— 自動監控大型動态環境
  • 分布式監控 —— 無限制擴充
  • Zabbix API —— 将Zabbix內建到IT環境的其他任何部分

監控對象

上面我們通過官方的介紹對Zabbix有了一個簡單的了解,那我們能夠通過Zabbix監控哪些裝置或服務呢?

企業級開源監控解決方案——Zabbix 介紹前言Zabbix簡介功能特性監控對象功能元件監控流程常見程式總結

在實際應用中,我們肯定希望隻要與我們業務有關的硬體、軟體資源都被監控,如伺服器、交換機、路由器、UPS、VMware虛拟機、Java應用等等,我們需要監控它們就需要與他們進行通訊,而由于硬體的不同軟體的差異導緻我們無法用統一的方法去監控它們,比方說:我們可以使用ssh遠端與linux系統的伺服器建立通訊,我們想連接配接安裝了Windows伺服器建立通訊就得用rdp工具,可是如果被監控對象是一台安裝了其他作業系統的伺服器呢,如果被監控對象是一台列印機或交換機呢,是以,監控程式需要能夠與多種軟硬體通訊才能滿足我們的監控需求。Zabbix想要全面的監控這些對象,亦需要能夠通過各種方法與它們進行通訊。

那麼Zabbix能夠支援哪些通訊方式呢?(監控項類型)

Zabbix目前主要支援Agents 、SNMP(包括主動輪詢和被動捕獲)、IPMI、JMX、VMware 監控;

  • Agent: 通過專用的代理程式進行監控,與常見的master/agent模型類似,被監控對象需要安裝Agent端,推薦首選監控方式。
  • SNMP: 通過SNMP協定與進行監控,SNMP是"Simple Network Management Protocol"的縮寫,中文含義是"簡單網絡管理協定"。通常來說,我們無法在交換機、路由器、列印機這種硬體裝置上安裝agent,但是這些硬體往往都支援SNMP協定, Zabbix就可以通過該協定與交換機、路由器等硬體進行通訊。
  • IPMI: 通過IPMI接口進行監控,Zabbix可以通過标準的IPMI硬體接口,監控對象的實體特征,如電壓、溫度、風扇狀态、電源狀态等。
  • JMX: 通過JMX進行監控,JMX(Java Management Extensions,即Java管理擴充)是一個為應用程式、裝置、系統等植入管理功能的架構。監控JVM虛拟機時,使用這種方法進行通訊。
  • VMware(Zabbix2.2.0開始支援): Zabbix 可以使用 low-level discovery 自動發現 VMware hypervisors 和 虛拟機,并根據事先定義的主機原型,為這些虛拟機建立 Host,添加監控。虛拟機監控分兩個步驟完成:首先,Zabbix 是通過 vmware collector 程序來監控虛拟機。這些程序通過 SOAP 協定從 VMware Web 服務擷取必要的資訊,對其進行預處理并存儲到 Zabbix server 共享記憶體中。然後,zabbix pollers 通過 zabbix 簡單檢查 VMware keys 來檢索這些資料。
    企業級開源監控解決方案——Zabbix 介紹前言Zabbix簡介功能特性監控對象功能元件監控流程常見程式總結
    通常Zabbix使用以上幾種方法與被監控對象建立通訊并擷取監控資料,除此之外,Zabbix還支援ODBC監控及SSH、Telnet、ICMP Ping檢測等,ODBC主要Zabbix是針對資料庫的監控,SSH、Telnet檢測不需要Zabbix代理。

功能元件

Zabbix由幾個主要的軟體元件構成,這些元件的功能如下。

  1. Zabbix Server: Zabbix server 是Agent程式報告系統可用性、系統完整性和統計資料的核心元件,是所有配置資訊、統計資訊和操作資料的核心存儲器。
  2. Zabbix Database: 所有配置資訊和Zabbix收集到的資料都被存儲在資料庫中。
  3. Zabbix Web: 為了從任何地方和任何平台都可以輕松的通路Zabbix, Zabbix提供基于Web的管理界面。該界面是Zabbix Server的一部分,通常(但不一定)跟Zabbix Server運作在同一台實體機器上。

    *如果使用SQLite,Zabbix Web界面必須要跟Zabbix Server運作在同一台實體機器上。

  4. Zabbix Proxy: Zabbix proxy 可以替Zabbix Server收集性能和可用性資料。Proxy代理伺服器是Zabbix軟體可選擇部署的一部分;當然,Proxy代理伺服器可以幫助單台Zabbix Server分擔負載壓力。
  5. Zabbix Agent: Zabbix agents監控代理 部署在監控目标上,能夠主動監控本地資源和應用程式,并将收集到的資料報告給Zabbix Server,Zabbix agents可以執行被動和主動兩種檢查方式。在被動模式中agent應答資料請求,Zabbix server(或者proxy)詢問agent資料,如CPU 的負載情況,然後Zabbix agent回送結果。主動模式處理過程将相對複雜。 Agent必須首先從Zabbix sever索取監控項清單以進行獨立處理,然後周期性地發送新的值給Server,兩種模式不沖突。
  6. 資料流: 除了上述基礎元件之外,了解Zabbix内部的資料流同樣很重要。監控方面,為了建立一個監控項(item)用于采集資料,必須先建立一個主機(host)。告警方面,在監控項裡建立觸發器(trigger),通過觸發器(trigger)來觸發告警動作(action)。 是以,如果你想收到Server X CPU負載過高的告警,你必須: 1.為Server X建立一個host并關聯一個用于對CPU進行監控的監控項(Item)。 2. 建立一個Trigger,設定成當CPU負載過高時會觸發 3. Trigger被觸發,發送告警郵件 雖然看起來有很多步驟,但是使用模闆的話操作起來其實很簡單,Zabbix這樣的設計使得配置機制非常靈活易用。

監控流程

一般情況下,我們将Zabbix agent 部署到被監控的主機上,由Agent采集資料并報告給Zabbix Server,Zabbix Server将從Agent端接收到的資訊存儲于Zabbix的資料庫中,我們稱之為Zabbix Database,如果管理者需要檢視各種監控的資訊,則需要Zabbix的Web GUI,我們稱之為Zabbix Web,Zabbix Web是用PHP寫的,是以,如果想要使用Zabbix展示監控資訊,則需要依賴LAMP/LNMP環境,結構圖示如下:

企業級開源監控解決方案——Zabbix 介紹前言Zabbix簡介功能特性監控對象功能元件監控流程常見程式總結

當監控規模變得龐大時,我們可能有成千上萬台裝置需要監控,這時我們可能會想部署多套Zabbix系統進行監控,如果部署多套Zabbix監控系統,那麼監控壓力将會被分擔,但是,這些監控的對象将會被盡量平均的配置設定到不同的監控系統中,這個時候,我們就無法通過統一的監控入口去監控這些對象了,雖然分擔了壓力,但是也增加了監控工作的複雜度。Zabbix的分布式監控功能則有效的解決了這個問題,Zabbix通過Zabbix Proxy為IT基礎設施提供有效和可用的分布式監控,代理(Proxy)可用于代替Zabbix server本地收集資料,然後将資料報告給伺服器,在一定程度上分擔了Zabbix Server 的壓力, 在某些情境下,也用Proxy來監控遠端區域裝置,架構圖示如下。

企業級開源監控解決方案——Zabbix 介紹前言Zabbix簡介功能特性監控對象功能元件監控流程常見程式總結

常見程序

預設情況下zabbix包含5個程式:zabbix_agentd、zabbix_get、zabbix_proxy、zabbix_sender、zabbix_server,另外一個zabbix_java_gateway是可選,這個需要另外安裝。下面分别介紹下他們各自的作用:

  • zabbix_agentd:

    用戶端守護程序,此程序收集用戶端資料,例如cpu負載、記憶體、硬碟使用情況等。

  • zabbix_get:

    Zabbix get 是一種指令行應用,它可以用于與Zabbix Agent進行通信,并從Agent那裡擷取所需的資訊,該應用通常被用于Zabbix Agent故障排除。例如在Server端擷取不到用戶端的記憶體資料,我們可以使用zabbix_get擷取用戶端的内容的方式來做故障排查。

  • zabbix_sender:

    Zabbix sender 是一種指令行應用,它可以将性能資料發送到Zabbix Server進行處理。 該應用通常用在長時間運作的使用者腳本,用于定期發送可用性和性能資料。

  • zabbix_server:

    Zabbix server是整個Zabbix軟體的核心程式。zabbix_agentd、zabbix_get、zabbix_sender、zabbix_proxy、zabbix_java_gateway的資料最終都是送出到server

    *當然不是資料都是主動送出給zabbix_server,也有的是server主動去取資料。

  • zabbix_proxy:

    zabbix代理守護程序。功能類似server,唯一不同的是它隻是一個中轉站,它需要把收集到的資料送出/被送出到server裡。

  • zabbix_java_gateway:

    zabbix2.0之後引入的一個功能。顧名思義:Java網關,類似Agent,但是隻用于Java方面。需要特别注意的是,它隻能主動去擷取資料,而不能被動擷取資料。它的資料最終會給到server或者proxy。

總結

本文主要對Zabbix的元件及工作原理進行了詳細介紹,主要是友善了解Zabbix一些基本概念,文中沒有對Zabbix功能進行過多詳細的介紹,因為沒有實際應用時很難了解,能在後續實際的使用場景中再做說明。

繼續閱讀