您現在的位置是:首頁 > 運動

成熟的企業級開源監控解決方案的關鍵功能實踐

由 紅顏日常生活 發表于 運動2023-01-09
簡介中介軟體監控Nginx:活動連線數、等待連線數、斷開連線數、請求數、時間消耗、5XX錯誤率Tomcat:最大執行緒、當前執行緒、請求、時間消耗、錯誤、堆記憶體使用、GC時間和時間消耗快取(Redis):成功連線數、阻塞連線數、已用記憶體、記

火絨可以修復檔案嗎

概述

Zabbix誕生於1998年。核心元件用C語言開發,Web端用PHP開發。它是舊監控系統的優秀代表,具有全面的監控功能和廣泛的使用。它具有多種監控網路引數,可以監控網路、物理伺服器、虛擬機器、應用程式、服務、資料庫、網站、雲等。

監控作用

實時採集監控資料:包括硬體、作業系統、中介軟體、應用程式等維度的資料。

監控狀態實時反饋:透過對採集資料的多維統計和視覺化顯示,實時反映監控物件的狀態是正常還是異常。

預測故障和報警:提前預測故障風險,及時傳送報警資訊。

輔助故障定位:故障發生時提供各種指標資料,協助故障分析和定位。

輔助效能調優:為效能調優提供資料支援,如慢SQL、介面響應時間等。

輔助容量規劃:為伺服器、中介軟體和應用叢集的容量規劃提供資料支援。

輔助自動運維:根據配置的SLA,為智慧運維(如自動擴容或服務降級)提供資料支援。

使用理解

瞭解監控物件的工作原理:您應該對監控物件有基本的瞭解,並瞭解其工作原理。例如,如果要監視JVM,必須瞭解JVM的堆記憶體結構和垃圾收集機制。

確定監測物件的指標:哪些指標明確用於描述監測物件的狀態?例如,如果要監視介面,可以使用諸如請求數、時間消耗、超時和異常等指標。

定義合理的報警閾值和級別:需要報警的閾值是多少?相應的故障級別是多少?不需要處理的警報不是好警報。由此可見,確定一個合理的閾值是多麼重要。否則,只會降低執行和維護效率,或使監控系統失去作用。

建立完善的故障處理流程:接到故障報警後,必須有相應的處理流程和一次呼叫機制,使故障得到及時跟進。

監控物件和指標

運維側重於硬體和基礎監控,研發側重於各種中介軟體和應用層的監控,產品側重於核心業務指標的監控。

硬體監控:電源狀態、CPU狀態、機器溫度、風扇狀態、物理磁碟、raid狀態、記憶體狀態和網絡卡狀態。

伺服器基本監控

CPU:單CPU和總體使用率

記憶體:已用記憶體、可用記憶體

磁碟:磁碟利用率、磁碟讀/寫吞吐量

網路:出口流量、入口流量、TCP連線狀態

資料庫監控:資料庫連線、QPS、TPS、並行處理的會話、快取命中率、主從延遲、鎖定狀態和慢速查詢。

中介軟體監控

Nginx:活動連線數、等待連線數、斷開連線數、請求數、時間消耗、5XX錯誤率

Tomcat:最大執行緒、當前執行緒、請求、時間消耗、錯誤、堆記憶體使用、GC時間和時間消耗

快取(Redis):成功連線數、阻塞連線數、已用記憶體、記憶體碎片率、請求數、時間消耗、快取命中率

訊息佇列(Kafka):連線數、佇列數、生產速率、消耗速率和訊息累積

應用程式監控

HTTP介面:URL生存、請求量、時間消耗和異常量

RPC介面:請求數量、時間消耗、超時數量、拒絕數量

JVM:GC時間、GC消耗、每個記憶體區域的大小、當前執行緒數、死鎖執行緒數

執行緒池:活動執行緒數、任務佇列大小、任務執行時間、被拒絕任務數

連線池:總連線數,活動連線數

日誌監視:訪問日誌、錯誤日誌

業務指標:取決於業務,如PV、訂單數量等

架構組成

成熟的企業級開源監控解決方案的關鍵功能實踐

Zabbix伺服器:核心元件,Zabbis軟體的中心程序,執行監控,與Zabbi代理和代理互動,從代理和代理接收監控資料,還支援JMX、SNMP等協議直接收集資料;負責資料和報警觸發的彙總和儲存。

資料庫:Zabbix收集的所有配置資訊和資料都儲存在資料庫中,支援MySQL、Oracle等關係資料庫,並逐步支援時態資料庫。

前端:Zabbix的Web介面,提供基於Web的可視監控配置、演示和報警。

Zabbix代理:它可以取代Zabbis伺服器來收集效能監視項資料。它是可選的。如果有許多受監控的機器,您可以使用代理進行分散式監控,以減輕伺服器上的壓力。

Zabbix代理:部署在被監視的目標上,以主動監視本地資源和應用程式程序(硬碟、記憶體、處理器統計資訊等),收集本地資料並將其傳送到代理或伺服器。資料收集模式支援主動推送和被動拉取模式。自Zabbix4。4以來,有兩種型別的代理可用:Zabbix代理(輕量級,在許多平臺上受支援,用C編寫)和Zabbix-agent 2(非常靈活,易於使用的外掛擴充套件,用Go編寫)。

被動模式:代理響應資料請求。Zabbix伺服器(或代理)請求資料,如CPU負載,然後Zabbixagent返回結果。

主動模式:處理過程將相對複雜。代理必須首先從Zabbix伺服器獲取監控專案列表以進行獨立處理,然後定期將收集到的新值傳送到Zabbis伺服器。

Zabbix API:使用JSON RPC協議建立、更新和獲取Zabbis物件(如主機、監視項、圖表等)或執行任何其他自定義任務。

Zabbix Java閘道器:獲取主機的JMX計數器的值。Zabbix伺服器向ZabbixJava閘道器傳送請求,並使用JMX管理API遠端查詢相關應用程式。

Zabbix傳送器:一個命令列應用程式,用於將效能資料推送到ZabbixServer進行處理;它通常用於在耗時的使用者指令碼中定期推送可用性和效能資料。

Zabbix get:命令列應用程式,可用於與Zabbix-agent通訊並從Zabbixagent獲取所需資訊;它通常用於排除Zabbix代理的故障。

常用監控軟體分析

我們以前學過普羅米修斯。在這裡,我們將結合Zabbix和Open falcon簡單分析利弊

Zabbix公司

效能瓶頸:當機器量或業務量很大時,關係資料庫的寫入一定是瓶頸。

有限的應用層監控支援:如果您想進行侵入式的應用程式掩埋和收集(例如監控路徑池或介面效能),Zabbix沒有提供相應的sdk,編寫外掛指令碼很麻煩。

資料模型並不強大:它不支援標籤,並且根據多個維度聚合統計資料和配置警報也不靈活。

方便的二次開發很困難:Zabbix使用C語言,二次開發成本很高。

成熟的產品:它有豐富的文件(包括中文文件)和各種開源資料收集外掛,可以覆蓋大多數監控場景。

豐富的採集方式:支援Agent、SNMP、JMX、SSH等多種採集方式,支援主動和被動資料傳輸方式。

擴充套件性強:支援代理分散式監控,具有代理自動發現功能,外掛架構支援使用者定義的資料採集指令碼。

方便的配置管理:可以透過Web介面進行監控和報警配置,操作簡單,使用方便。

有利條件

低等

Open falcon:是小米於2015年推出的企業級監控工具,由Go和Python開發。它是一個靈活、高效能和可擴充套件的新一代監控解決方案。目前,包括小米、美團和滴滴在內的200多家公司正在使用它。核心優勢在於資料分片功能,可以支援更多的機器和監控專案。

總體開發平均:社群活動不高,版本更新緩慢,支援粒度弱。

安裝很複雜:有許多元件。如果您不熟悉整個體系結構,很難一蹴而就。

自動採集能力:無需任何Falcon代理配置,即可自動採集伺服器的200多個基本指標(如CPU、記憶體等)。

強大的儲存容量:底層使用RRDTool,透過一致性雜湊對資料進行分割槽,構建具有強大可擴充套件性的分散式時間序列資料儲存系統。

靈活的資料模型:參考OpenTSDB,在資料模型中引入標籤,可以支援多維聚合統計和報警規則設定,大大提高了使用效率。

外掛的統一管理:Open Falcon的外掛機制實現了使用者自定義指令碼的統一管理,可以透過HeartBeat Server分發給代理,降低了使用者獨立維護指令碼的成本。

個性化監控支援:基於代理閘道器,很容易透過獨立的埋設點實現應用層監控(如監控介面的訪問和時間消耗)和其他個性化監控要求,易於整合。

普羅米修斯:由谷歌和k8s支援,是集裝箱監控的標準配置和主流解決方案。

不完善的功能:普羅米修斯的架構設計從一開始就是簡單的,而不是提供叢集解決方案、長期持久儲存和使用者管理。這些都是企業成長是必須具備的特徵。目前,它們只能在普羅米修斯身上展開。

網路規劃變得複雜:由於普羅米修斯使用Pull模型來拉取資料,這意味著所有受監控的端點都必須是可訪問的,並且需要合理規劃網路安全配置。

輕量級管理:簡單的架構,獨立於外部儲存,單個伺服器節點可以直接工作,並且可以啟動二進位制檔案。它是一個輕量級伺服器,易於遷移和維護。

強大的處理能力:監控資料直接儲存在Prometheus Server的本地定時資料庫中,單個例項可以處理數百萬個度量。

靈活的資料模型:與Open Falcon一樣,引入了標籤,它屬於多維資料模型,更便於聚合統計。

強大的查詢語句:PromQL允許您在同一個查詢語句中新增、連線和獲取多個度量的分位數值。

雲環境得到了很好的支援:可以自動找到容器。同時,k8s和etcd等專案為普羅米修斯提供了本地支援,普羅米修s是目前最流行的容器監控解決方案。

推薦文章