在整個(gè)監(jiān)控方案需求中整理了基礎(chǔ)組件、大數(shù)據(jù)組件共12個(gè),每種組件又包含多個(gè)監(jiān)控指標(biāo)項(xiàng),約519項(xiàng)。為便于查看過(guò)去90天的監(jiān)控歷史數(shù)據(jù),全部采集的監(jiān)控?cái)?shù)據(jù)周期保存90天,90天的數(shù)據(jù)量在800G左右,每項(xiàng)指標(biāo)根據(jù)其特性采集頻率分為15s、30s?;诒O(jiān)控需求的分析結(jié)果,百分點(diǎn)大數(shù)據(jù)團(tuán)隊(duì)從源數(shù)據(jù)采集,存儲(chǔ)并針對(duì)性的做了數(shù)據(jù)清洗、分析等開發(fā)工作,最后匯總展示到監(jiān)控平臺(tái)中提供告警和預(yù)警的功能,監(jiān)控平臺(tái)提供非常炫酷的頁(yè)面展示還可投放到大屏上。

二、技術(shù)方案

1.技術(shù)架構(gòu)

監(jiān)控技術(shù)方案通過(guò)實(shí)時(shí)數(shù)據(jù)采集、實(shí)時(shí)數(shù)據(jù)處理可視化和高可用技術(shù)等,實(shí)現(xiàn)了多種大數(shù)據(jù)平臺(tái)組件的性能指標(biāo)的監(jiān)控。監(jiān)控系統(tǒng)由Zabbix、Prometheus + Grafana這兩部分構(gòu)成。Zabbix 負(fù)責(zé)服務(wù)器的硬件監(jiān)控,Prometheus+Grafana負(fù)責(zé)集群狀態(tài)的監(jiān)控。

Zabbix通過(guò)分布式主動(dòng)監(jiān)控方式,對(duì)服務(wù)器進(jìn)行硬件監(jiān)控,Zabbix Agent通過(guò)向Zabbix Proxy請(qǐng)求獲取監(jiān)控項(xiàng)列表來(lái)定期發(fā)送采集到的新值給Zabbix Proxy,Proxy將多個(gè)監(jiān)控設(shè)備的信息先緩存到本地,然后傳輸?shù)剿鶎俚腪abbix Server。

Prometheus通過(guò)集成各類Exporter來(lái)采集組件指標(biāo),如上圖所示,通過(guò)Node Exporter、Clickhouse Exporter等第三方Exporter來(lái)實(shí)現(xiàn)對(duì)應(yīng)組件的數(shù)據(jù)采集,同時(shí)通過(guò)Jmx Exporter來(lái)實(shí)現(xiàn)對(duì)Oss Tomcat、HBase、業(yè)務(wù)系統(tǒng)、數(shù)據(jù)流的數(shù)據(jù)采集工作,并將其數(shù)據(jù)存儲(chǔ)在本地時(shí)間序列數(shù)據(jù)庫(kù)中。

Grafana通過(guò)接口調(diào)用和指標(biāo)編輯來(lái)讀取Prometheus所采集的數(shù)據(jù)進(jìn)行可視化展示。

2.技術(shù)選型

(1)Zabbix

Zabbix是一個(gè)基于Web界面提供分布式系統(tǒng)監(jiān)視以及網(wǎng)絡(luò)監(jiān)視功能的企業(yè)級(jí)開源解決方案,它能監(jiān)視各種網(wǎng)絡(luò)參數(shù),保證服務(wù)器系統(tǒng)的安全運(yùn)營(yíng),并提供柔軟的通知機(jī)制以讓系統(tǒng)管理員快速定位/解決存在的各種問(wèn)題,是企業(yè)自動(dòng)化運(yùn)維監(jiān)控的利器。Zabbix靈活的設(shè)計(jì)為用戶提供了易用的二次開發(fā)接口,讓用戶既可以使用Zabbix本身提供的功能,又可以自定義更多的監(jiān)控項(xiàng)功能,如硬件監(jiān)控、操作系統(tǒng)、服務(wù)進(jìn)程,以及網(wǎng)絡(luò)設(shè)備等。值得一提的是,它所提供的Proxy分布式架構(gòu)能夠在監(jiān)控多個(gè)遠(yuǎn)程區(qū)域設(shè)備的同時(shí),分擔(dān)server的監(jiān)控壓力且不增加系統(tǒng)的維護(hù)復(fù)雜度,為項(xiàng)目實(shí)施提供便利。

高可用設(shè)計(jì)圖中提到,Zabbix通過(guò)Proxy收集項(xiàng)目中所有服務(wù)器的硬件監(jiān)控指標(biāo)數(shù)據(jù)并進(jìn)行預(yù)警和展示,通過(guò)Ansible批量在服務(wù)器端安裝Zabbix Agent 并啟動(dòng),由客戶端主動(dòng)發(fā)起請(qǐng)求向Zabbix Server進(jìn)行注冊(cè),自動(dòng)完成服務(wù)器在Zabbix Web的配置工作。

(2)Prometheus

Prometheus是由前Google員工2015年正式發(fā)布的開源監(jiān)控系統(tǒng),采用Go語(yǔ)言開發(fā),它不僅有一個(gè)很酷的名字,同時(shí)還有Google與K8s的強(qiáng)力支持,開源社區(qū)異常火爆,在2016年加入云原生基金會(huì),是繼K8s后托管的第二個(gè)項(xiàng)目,未來(lái)前景被相當(dāng)看好。數(shù)據(jù)采集基于Pull模式,架構(gòu)簡(jiǎn)單,不依賴外部存儲(chǔ),單個(gè)服務(wù)器節(jié)點(diǎn)可直接工作,二進(jìn)制文件啟動(dòng)即可,屬于輕量級(jí)的Server,便于遷移和維護(hù)。同時(shí)其監(jiān)控?cái)?shù)據(jù)直接存儲(chǔ)在Prometheus Server本地的時(shí)序數(shù)據(jù)庫(kù)中,單個(gè)實(shí)例可以處理數(shù)百萬(wàn)的Metrics。Prometheus靈活的數(shù)據(jù)模型和強(qiáng)大的數(shù)據(jù)查詢語(yǔ)句能夠在對(duì)服務(wù)內(nèi)部進(jìn)行詳細(xì)狀態(tài)監(jiān)控的同時(shí)還支持?jǐn)?shù)據(jù)的內(nèi)部查詢,幫助快速定位和診斷問(wèn)題,非常適用于面向服務(wù)架構(gòu)的監(jiān)控。

在技術(shù)架構(gòu)中,每個(gè)Prometheus負(fù)責(zé)拉取該區(qū)域所有組件的指標(biāo)數(shù)據(jù)并存儲(chǔ)在本地,通過(guò)Prometheus UI界面可以查詢?cè)搮^(qū)域所需指標(biāo)是否收集到數(shù)據(jù)、數(shù)據(jù)是否正常,從而判斷數(shù)據(jù)采集端數(shù)據(jù)收集狀態(tài)。

(3)Grafana

Grafana是一個(gè)可視化儀表盤,通過(guò)整合每個(gè)區(qū)域Prometheus所采集的數(shù)據(jù)實(shí)現(xiàn)對(duì)該區(qū)域的集群監(jiān)控目的,并將其美觀、直接地展示給使用者。通過(guò)Grafana的Datasource鏈接Prometheus url,并對(duì)接入的數(shù)據(jù)進(jìn)行分組、過(guò)濾、聚合等邏輯運(yùn)算來(lái)達(dá)到在面板中直觀展示指標(biāo)含義的目的。

3.非功能技術(shù)實(shí)現(xiàn)

在大型的IT架構(gòu)環(huán)境中,系統(tǒng)的組成部分跨區(qū)域分布在18個(gè)不同城市,跨節(jié)點(diǎn)、多IDC、業(yè)務(wù)類型復(fù)雜、業(yè)務(wù)需求多樣,因此監(jiān)控系統(tǒng)要能滿足業(yè)務(wù)中不斷變化的需求。在這種環(huán)境中構(gòu)建監(jiān)控系統(tǒng),首先要做的事情是掌握全局信息,同時(shí)需要考慮業(yè)務(wù)未來(lái)的發(fā)展趨勢(shì)。而這個(gè)環(huán)境的監(jiān)控技術(shù)方案既要能滿足當(dāng)前業(yè)務(wù)需求,又能滿足不斷增長(zhǎng)的業(yè)務(wù)需求,因此技術(shù)方案需要考慮以下三個(gè)因素:高可用性、高吞吐性、可擴(kuò)展性。

4.核心組件監(jiān)控指標(biāo)

三、最佳實(shí)踐

在面臨著巨大Zabbix的使用過(guò)程中,隨著監(jiān)控對(duì)象的增多,Zabbix Server面臨非常大的壓力,出現(xiàn)一系列性能瓶頸問(wèn)題:

Zabbix隊(duì)列中有太多達(dá)到30w+,被延遲的Item會(huì)長(zhǎng)達(dá)10分鐘左右;

帶有nodata()函數(shù)的觸發(fā)器出現(xiàn)告警;

由于數(shù)據(jù)展示量大,前端界面無(wú)響應(yīng)或響應(yīng)很慢。

為解決以上三個(gè)問(wèn)題,主要從zabbix配置參數(shù)和數(shù)據(jù)庫(kù)參數(shù)兩方面進(jìn)行性能調(diào)優(yōu),并給出一般建議供其他技術(shù)人員做參考。

1.最佳參數(shù)優(yōu)化說(shuō)明

(1)Zabbix配置參數(shù)調(diào)優(yōu)

HistoryStorageDateIndex=1

# 初始化時(shí)啟動(dòng)的pollers進(jìn)程數(shù)量。由于本次采用主動(dòng)式,因此該參數(shù)可以調(diào)制最小

StartPollers=1

# 預(yù)處理進(jìn)程

StartPreprocessors=40

StartPollersUnreachable=1

StartTrappers=15

# 啟用ICMP協(xié)議Ping主機(jī)方式啟動(dòng)線程數(shù)量

StartPingers=1

# 用于設(shè)置自動(dòng)發(fā)現(xiàn)的主機(jī)線程數(shù)量

StartDiscoverers=1

# 禁用zabbix自帶的housekeeping策略

HousekeepingFrequency=0

# zabbix初始化時(shí)占用多少系統(tǒng)共享內(nèi)存用于存儲(chǔ)配置信息

CacheSize=2G

# 將采集數(shù)據(jù)從緩存同步到數(shù)據(jù)庫(kù)的線程數(shù)量

StartDBSyncers=25

# 劃分2G內(nèi)存用于存儲(chǔ)采集的歷史數(shù)據(jù)

HistoryCacheSize=2G

# 存儲(chǔ)歷史數(shù)據(jù)索引所占用的大小

HistoryIndexCacheSize=256M

# 分配緩存趨勢(shì)數(shù)據(jù)的內(nèi)存

TrendCacheSize=256M

ValueCacheSize=2G

Timeout=10

AlertScriptsPath=/usr/lib/zabbix/alertscripts

ExternalScripts=/usr/lib/zabbix/externalscripts

FpingLocation=/usr/sbin/fping

LogSlowQueries=1000

2.硬件監(jiān)控實(shí)踐

通過(guò)Zabbix Agent向zabbix_agentd.conf 配置文件中的ServerActive 請(qǐng)求獲取檢查清單,Server 讀取Zabbix Web中的硬件監(jiān)控列表進(jìn)行響應(yīng),Agent解析響應(yīng)中Item Name,調(diào)用相應(yīng)的參數(shù)開始定期收集數(shù)據(jù)。

注:$IPMI_IP 為IPMI的IP地址,1.3.6.1.4.1.674.10892.5.5.1.20.130.1.1.37.1為dell 服務(wù)器raid卡的snmpoid。

UserParameter=RAIDControllerStatus,/etc/zabbix/scripts/zabbix_agent_snmp.shRAIDControllerStatus

cat/etc/zabbix/scripts/zabbix_agent_snmp.sh

function get_RAIDControllerStatus(){

RAIDControllerStatusvalue=`snmpwalk -v 2c -c public $IPMI_IP1.3.6.1.4.1.674.10892.5.5.1.20.130.1.1.37.1 |awk -F ‘INTEGER: ‘ ‘{print $2}’`

}

3.平臺(tái)組件集群監(jiān)控實(shí)踐

如下圖所示是所有運(yùn)行在系統(tǒng)上的程序的總體監(jiān)控列表,其中不乏業(yè)務(wù)系統(tǒng)、數(shù)據(jù)流,也不乏ClickHouse、Ceph、ElasticSearch等集群。

結(jié)語(yǔ)與展望

百分點(diǎn)科技希望通過(guò)本篇文章的分享,幫助大家快速了解大規(guī)模機(jī)器集群下的監(jiān)控設(shè)計(jì)架構(gòu)思路,以及每個(gè)核心組件重要的監(jiān)控指標(biāo)項(xiàng)含義和閾值范圍,提供最佳實(shí)踐的優(yōu)化參數(shù),為大家在實(shí)施過(guò)程中提供一些參考。

關(guān)于配置文件、Json面板文件和更詳細(xì)的過(guò)程信息等問(wèn)題,歡迎您來(lái)咨詢,大家一起探討、共同進(jìn)步。

分享到

songjy

相關(guān)推薦