“如果你是一個(gè)經(jīng)驗(yàn)豐富的運(yùn)維開發(fā)人員,那么你一定知道ganglia、nagios、zabbix、elasticsearch、grafana等組件。這些開源組件都有著深厚的發(fā)展背景及功能價(jià)值,但需要合理搭配選擇,如何配比資源從而達(dá)到性能的最優(yōu),這里就體現(xiàn)了運(yùn)維人的深厚功力。”
下文中,聯(lián)通大數(shù)據(jù)平臺維護(hù)團(tuán)隊(duì)將對幾種常見監(jiān)控組合進(jìn)行介紹,并基于豐富的實(shí)戰(zhàn)經(jīng)驗(yàn),對集群主機(jī)及其接口機(jī)監(jiān)控進(jìn)行系統(tǒng)性總結(jié)。
科普篇幾種常見的監(jiān)控工具選擇
目前常見的監(jiān)控組合如下:
Nagios+Ganglia
Zabbix
Telegraf or collect + influxdb or Prometheus or elasticsearch + Grafana +alertmanager
Nagios、Ganglia、Zabbix屬于較早期的開源監(jiān)控工具,而grafana、prometheus則屬于后起之秀。下面,將分別介紹三種監(jiān)控告警方式的背景及其優(yōu)缺點(diǎn):
Nagios+Ganglia
Nagios最早是在1999年以“NetSaint”發(fā)布,主要應(yīng)用在Linux和Unix平臺環(huán)境下的監(jiān)控告警,能夠監(jiān)控網(wǎng)絡(luò)服務(wù)、主機(jī)資源,具備并行服務(wù)檢查機(jī)制。
其可自定義shell腳本進(jìn)行告警,但隨著大數(shù)據(jù)平臺承載的服務(wù)、數(shù)據(jù)越來越多之后,nagios便逐漸不能滿足使用場景。例如:其沒有自動(dòng)發(fā)現(xiàn)的功能,需要修改配置文件;只能在終端進(jìn)行配置,不方便擴(kuò)展,可讀性比較差;時(shí)間控制臺功能弱,插件易用性差;沒有歷史數(shù)據(jù),只能實(shí)時(shí)報(bào)警,出錯(cuò)后難以追查故障原因。
Ganglia是由UC Berkeley發(fā)起的一個(gè)開源監(jiān)控項(xiàng)目,設(shè)計(jì)用于測量數(shù)以千計(jì)的節(jié)點(diǎn)。Ganglia的核心包含gmond、gmetad以及一個(gè)Web前端。主要用來監(jiān)控系統(tǒng)性能,如:cpu 、mem、硬盤利用率,I/O負(fù)載、網(wǎng)絡(luò)流量情況等,通過曲線很容易見到每個(gè)節(jié)點(diǎn)的工作狀態(tài),對合理調(diào)整、分配系統(tǒng)資源,提高系統(tǒng)整體性能起到重要作用。但隨著服務(wù)、業(yè)務(wù)的多樣化,ganglia覆蓋的監(jiān)控面有限,且自定義配置監(jiān)控比較麻煩,展示頁面查找主機(jī)繁瑣、展示圖像粗糙不精確是其主要缺點(diǎn)。
Zabbix
Zabbix是近年來興起的監(jiān)控系統(tǒng),易于入門,能實(shí)現(xiàn)基礎(chǔ)的監(jiān)控,但是深層次需求需要非常熟悉Zabbix并進(jìn)行大量的二次定制開發(fā),難度較大;此外,系統(tǒng)級別報(bào)警設(shè)置相對比較多,如果不篩選的話報(bào)警郵件會(huì)很多;并且自定義的項(xiàng)目報(bào)警需要自己設(shè)置,過程比較繁瑣。
jmxtrans or Telegraf or collect + influxdb or Prometheus or elasticsearch + Grafana +alertmanager
這套監(jiān)控系統(tǒng)的優(yōu)勢在于數(shù)據(jù)采集、存儲、監(jiān)控、展示、告警各取所長。性能、功能可擴(kuò)展性強(qiáng),且都有活躍的社區(qū)支持。缺點(diǎn)在于其功能是松耦合的,較為考驗(yàn)使用者對于使用場景的判斷與運(yùn)維功力。畢竟,對于運(yùn)維體系來說,沒有“最好”,只有“最適合”。
早期,聯(lián)通大數(shù)據(jù)平臺通過ganglia與nagios有效結(jié)合,發(fā)揮ganglia的監(jiān)控優(yōu)勢和nagios的告警優(yōu)勢,做到平臺的各項(xiàng)指標(biāo)監(jiān)控。但隨著大數(shù)據(jù)業(yè)務(wù)的突增、平臺復(fù)雜程度的增加,nagios與ganglia對平臺的監(jiān)控力度開始稍顯不足,并且開發(fā)成本過高。主要體現(xiàn)在配置繁瑣,不易上手;開發(fā)監(jiān)控采集腳本過于零散,不好統(tǒng)一配置管理,并且nagios沒有歷史數(shù)據(jù),只能實(shí)時(shí)報(bào)警,出錯(cuò)后難以追查故障原因。
中期,我們在部分集群使用了zabbix,發(fā)現(xiàn)其對于集群層、服務(wù)層、角色層及角色實(shí)例監(jiān)控項(xiàng)的多維度監(jiān)控開發(fā)管理相對繁瑣,并且如果想要把平臺所有機(jī)器及業(yè)務(wù)的監(jiān)控和告警集成到zabbix上,對于zabbix的性能將是很大的挑戰(zhàn)。
于是我們采用以Prometheus+ Grafana+ alertmanager為核心組件的監(jiān)控告警方式,搭建開發(fā)以完成對現(xiàn)有大規(guī)模集群、強(qiáng)復(fù)雜業(yè)務(wù)的有效監(jiān)控。采用PGA(Prometheus+ Grafana+ alertmanager)監(jiān)控告警平臺的原因是其在數(shù)據(jù)采集選型、存儲工具選型、監(jiān)控頁面配置、告警方式選擇及配置方面更加靈活,使用場景更加廣泛,且功能性能更加全面優(yōu)秀。
實(shí)戰(zhàn)篇平臺搭建、組件選型、監(jiān)控配置的技巧
1采集丶存儲工具的選型
采集器選擇
常見的采集器有collect、telegraf、jmxtrans(對于暴露jmx端口的服務(wù)進(jìn)行監(jiān)控)。筆者在經(jīng)過對比之后選擇了telegraf,主要原因是其比較穩(wěn)定,并且背后有InfluxData公司支持,社區(qū)活躍度不錯(cuò),插件版本更新周期也不會(huì)太長。Telegraf是一個(gè)用Go語言編寫的代理程序,可采集系統(tǒng)和服務(wù)的統(tǒng)計(jì)數(shù)據(jù),并寫入InfluxDB、prometheus、es等數(shù)據(jù)庫。Telegraf具有內(nèi)存占用小的特點(diǎn),通過插件系統(tǒng),開發(fā)人員可輕松添加支持其他服務(wù)的擴(kuò)展。
數(shù)據(jù)庫選型
對于數(shù)據(jù)庫選擇,筆者最先使用influxdb,過程中需要注意調(diào)整增加influxdb的并發(fā)能力,并且控制數(shù)據(jù)的存放周期。對于上千臺服務(wù)器的集群監(jiān)控,如果存儲到influxdb里,通過grafana界面查詢時(shí),會(huì)產(chǎn)生大量的線程去讀取influxdb數(shù)據(jù),很可能會(huì)遇到influxdb讀寫數(shù)據(jù)大量超時(shí)。
遇到這種情況,可以先查看副本存儲策略:SHOW RETENTION POLICIES ON telegraf
再修改副本存儲的周期:
ALTER RETENTION POLICY "autogen" ON "telegraf" DURATION 72h REPLICATION 1 SHARD DURATION 24h DEFAULT
需理解以下參數(shù):
duration:持續(xù)時(shí)間,0代表無限制
shardGroupDuration:shardGroup的存儲時(shí)間,shardGroup是InfluxDB的一個(gè)基本儲存結(jié)構(gòu),大于這個(gè)時(shí)間的數(shù)據(jù)在查詢效率上有所降低。
replicaN:全稱是REPLICATION,副本個(gè)數(shù)
default:是否是默認(rèn)策略
但是,由于influxdb開源版對于分布式支持不穩(wěn)定,單機(jī)版的influxdb服務(wù)器對于上千臺的服務(wù)器監(jiān)控存在性能瓶頸(數(shù)據(jù)存儲使用的普通sata盤,非ssd)。筆者后來選擇使用es 或 promethaus聯(lián)邦來解決(關(guān)于es的相關(guān)權(quán)限控制、搭建、調(diào)優(yōu)、監(jiān)控維護(hù),以及promethaus的相關(guān)講解將在后續(xù)文章具體闡述)。
2 Grafana展示技巧
Grafana是近年來比較受歡迎的一款監(jiān)控配置展示工具,其優(yōu)點(diǎn)在于能對接各種主流數(shù)據(jù)庫,并且能在官網(wǎng)及社區(qū)上下載精致的模板,通過導(dǎo)入json模板做到快速的展示數(shù)據(jù)。
主機(jī)監(jiān)控項(xiàng)
主機(jī)監(jiān)控項(xiàng)概覽:內(nèi)核、內(nèi)存、負(fù)載、磁盤io、網(wǎng)絡(luò)、磁盤存儲、inode占用、進(jìn)程數(shù)、線程數(shù)。
主機(jī)監(jiān)控大屏:以一臺主機(jī)監(jiān)控展示為樣例,大家先看下效果圖。
主機(jī)用途分類
聯(lián)通大數(shù)據(jù)公司作為專業(yè)的大數(shù)據(jù)服務(wù)運(yùn)營商,后臺支持的主機(jī)數(shù)量規(guī)模龐大,各主機(jī)用途大不相同,那么就需要做好主機(jī)分類。用盒子的概念來說,機(jī)房是父類盒子,里面放置集群計(jì)算節(jié)點(diǎn)子盒子和接口機(jī)子盒子。集群主機(jī)、接口機(jī)分離,這樣當(dāng)一臺主機(jī)故障時(shí),方便更快的查找定位。
主機(jī)資源占用top10
主要從cpu占用、內(nèi)存占用、負(fù)載、線程數(shù)多個(gè)維度統(tǒng)計(jì)同一主機(jī)群體(如:A機(jī)房接口機(jī)是一個(gè)主機(jī)群體,B機(jī)房計(jì)算節(jié)點(diǎn)是一個(gè)主機(jī)群體)占用資源最多的前十臺機(jī)器。
進(jìn)程資源占用top10
通過主機(jī)監(jiān)控大屏和主機(jī)資源占用top10定位故障主機(jī)的故障時(shí)間段和異常指標(biāo),只能初步的幫助運(yùn)維人員排查機(jī)器故障的原因。例如,當(dāng)機(jī)器負(fù)載過高時(shí),在主機(jī)監(jiān)控大屏中往往能看出主機(jī)的cpu使用,讀寫io、網(wǎng)絡(luò)io會(huì)發(fā)生急速增長,卻不能定位是哪個(gè)進(jìn)程導(dǎo)致。當(dāng)重啟故障主機(jī)之后,又無法排查歷史故障原因。因此對于主機(jī)層面監(jiān)控,增加了進(jìn)程資源占用top10,能獲取占用cpu,內(nèi)存最高的進(jìn)程信息(進(jìn)程開始運(yùn)行時(shí)間、已運(yùn)行時(shí)長、進(jìn)程pid、cpu使用率、內(nèi)存使用率等有用信息)。這樣,當(dāng)主機(jī)因?yàn)榕芰宋唇?jīng)測試的程序,或者因運(yùn)行程序過多,或程序線程并發(fā)數(shù)過多時(shí),就能有效的通過歷史數(shù)據(jù)定位機(jī)器故障原因。
總結(jié):主機(jī)層面可監(jiān)控項(xiàng)還有很多,關(guān)鍵點(diǎn)在于對癥下藥,把排查故障的運(yùn)維經(jīng)驗(yàn)轉(zhuǎn)化為采集數(shù)據(jù)的合理流程,再通過數(shù)據(jù)關(guān)聯(lián)來分析排查故障。
平臺監(jiān)控項(xiàng)
平臺監(jiān)控項(xiàng)種類繁多,有hdfs、yarn、zookeeper、kafka、storm、spark、hbase等平臺服務(wù)。每個(gè)服務(wù)下有多種角色類別,如hdfs服務(wù)中包括Namenode、Datenode、Failover Controller、JournalNode 。每個(gè)角色類別下又有多個(gè)實(shí)例。如此產(chǎn)生的監(jiān)控指標(biāo)實(shí)例達(dá)幾十萬個(gè)。目前聯(lián)通大數(shù)據(jù)使用的CDH版本大數(shù)據(jù)平臺,基礎(chǔ)監(jiān)控指標(biāo)全面多樣。根據(jù)現(xiàn)狀,平臺層面我們主要配置比較關(guān)鍵的一些監(jiān)控項(xiàng)。
集群yarn隊(duì)列資源占用多維畫像
幫助平臺管理人員合理評估個(gè)隊(duì)列資源使用情況,快速做出適當(dāng)調(diào)整。
zeeplin操作日志
zeepline并沒有相關(guān)的可視化審計(jì)日志,通過實(shí)時(shí)的獲取zeeplin操作日志來展現(xiàn)zeeplin操作,方便運(yùn)維人員審計(jì)。
hdfs各目錄文件數(shù)及存儲多維畫像
實(shí)時(shí)統(tǒng)計(jì)各業(yè)務(wù)用戶的數(shù)據(jù)目錄存儲,便于分析hdfs存儲增量過大的目錄。
集群namenode RPC 實(shí)時(shí)多維畫像
當(dāng)hadoop集群節(jié)點(diǎn)數(shù)達(dá)到千臺左右時(shí),集群業(yè)務(wù)對于yarn隊(duì)列資源使用達(dá)到百分之八十以上,且集群寫多讀少,很容易造成namenode-rpc等待隊(duì)列深度過大,造成namenode-rpc延遲,這將會(huì)嚴(yán)重影響集群整體業(yè)務(wù)的運(yùn)行。半小時(shí)能跑完的任務(wù),可能會(huì)跑數(shù)個(gè)小時(shí)。根本原因還是集群承載業(yè)務(wù)數(shù)量過多,并且業(yè)務(wù)邏輯設(shè)計(jì)不合理,造成yarn任務(wù)執(zhí)行過程頻繁操作hdfs文件系統(tǒng),產(chǎn)生了大量的rpc操作。更底層的,每個(gè)dn節(jié)點(diǎn)的磁盤負(fù)載也會(huì)過高,造成數(shù)據(jù)讀寫io超時(shí)。
通過提取namenode日志、hdfs審計(jì)日志,多維度分析,可通過hdfs目錄和hdfs操作類型兩個(gè)方面確認(rèn)rpc操作過多的業(yè)務(wù)。并且根據(jù)具體是哪種類型的操作過多,來分析業(yè)務(wù)邏輯是否合理來進(jìn)行業(yè)務(wù)優(yōu)化。例如有某大數(shù)據(jù)業(yè)務(wù)的邏輯是每秒往hdfs目錄寫入上千個(gè)文件,并且每秒遍歷下hdfs目錄。但觸發(fā)加工是十分鐘觸發(fā)一次,因此該業(yè)務(wù)產(chǎn)生了大量的rpc操作,嚴(yán)重影響到集群性能,后調(diào)優(yōu)至5分鐘遍歷次hdfs目錄,集群性能得到極大優(yōu)化。
日常生產(chǎn)監(jiān)控項(xiàng)
生產(chǎn)報(bào)表
由于聯(lián)通大數(shù)據(jù)平臺承載業(yè)務(wù)體量很大,通過后臺查詢繁瑣,而通過可視化展示能方便生產(chǎn)運(yùn)維人員快速了解日生產(chǎn)情況,定位生產(chǎn)延遲原因。
結(jié)語:關(guān)于平臺監(jiān)控的內(nèi)容在本文中就先介紹到這里,在下一篇中,筆者將針對平臺告警做出經(jīng)驗(yàn)分享,介紹如何建立統(tǒng)一采集模板、告警各集群的全量監(jiān)控指標(biāo)、進(jìn)行分組告警并自動(dòng)化恢復(fù)等內(nèi)容。
- 陜西廣電網(wǎng)絡(luò)預(yù)計(jì)2024年虧損10.5億元-12.6億元
- 中國聯(lián)通:聘任王凌升為董事會(huì)秘書
- 中國移動(dòng)新疆公司原副總經(jīng)理劉英杰被"雙開"
- 華為2024年每股分紅1.41元,歷年分紅一覽
- 每股1.41元!華為2024年分紅方案出爐
- 國盾量子預(yù)計(jì)2024年?duì)I收2.54億元 凈虧損3300萬元
- 國家統(tǒng)計(jì)局局長論述新質(zhì)生產(chǎn)力,“點(diǎn)名”本源悟空
- 中國移動(dòng)硬件防火墻產(chǎn)品集采:華為、新華三、迪普科技中標(biāo)
- 中國移動(dòng)4.6萬面小型化天線產(chǎn)品集采:京信通信等四廠商中標(biāo)
- 新鮮出爐!烽火通信喜獲“FTTR技術(shù)創(chuàng)新獎(jiǎng)”
免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請進(jìn)一步核實(shí),并對任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書面權(quán)利通知或不實(shí)情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。