神荼之眼——打造現(xiàn)代化監(jiān)控系統(tǒng)

神荼

神荼是中國(guó)民間傳說(shuō)中能制伏惡鬼的神人茄菊。最開(kāi)始出現(xiàn)在上古神話(huà)中疯潭。傳說(shuō)神荼和郁壘同為魑魅魍魎之首赊堪,歸于蚩尤,在涿鹿之戰(zhàn)中被擒竖哩,降于黃帝軒轅氏雹食。一般位于左邊門(mén)扇上,身著斑斕戰(zhàn)甲期丰,面容威嚴(yán),姿態(tài)神武吃挑,手執(zhí)金色戰(zhàn)戢钝荡。故中國(guó)民間稱(chēng)他為門(mén)神。表達(dá)了古代人民一種消災(zāi)免禍舶衬、趨吉避兇的美好愿望埠通。

作為互聯(lián)網(wǎng)企業(yè),我們也需要自己的神荼逛犹,于是我們的監(jiān)控系統(tǒng)就借用了這個(gè)名字端辱,期望著這套系統(tǒng)能夠如神荼一般守護(hù)公司的平臺(tái)架構(gòu)和業(yè)務(wù)產(chǎn)品!

部署策略

監(jiān)控系統(tǒng)是整個(gè)運(yùn)維環(huán)節(jié)虽画,乃至整個(gè)產(chǎn)品生命周期中最重要的一環(huán)舞蔽,要求事前能及時(shí)預(yù)警發(fā)現(xiàn)故障,事后能提供詳細(xì)的數(shù)據(jù)用于追查定位問(wèn)題码撰,這也是對(duì)于想構(gòu)建一套監(jiān)控系統(tǒng)的基本要求渗柿。

穩(wěn):要求平臺(tái)架構(gòu)設(shè)計(jì)成熟;

準(zhǔn):要求能準(zhǔn)確及時(shí)預(yù)警脖岛,準(zhǔn)確定位故障朵栖;

:要求滿(mǎn)足多業(yè)務(wù)多維度,大數(shù)據(jù)監(jiān)控對(duì)象數(shù)據(jù)采集性能柴梆;

選擇一款開(kāi)源的監(jiān)控系統(tǒng)陨溅,是一個(gè)省時(shí)省力,效率最高的方案绍在。監(jiān)控系統(tǒng)業(yè)界有很多杰出的開(kāi)源監(jiān)控系統(tǒng)门扇,小伙伴們最容易想到的就是大名鼎鼎的zabbix, 不過(guò)隨著業(yè)務(wù)的快速發(fā)展,以及互聯(lián)網(wǎng)公司特有的一些需揣苏,如針對(duì)docker容器的監(jiān)控悯嗓。zabbix監(jiān)控系統(tǒng)在性能、擴(kuò)展性和用戶(hù)的使用效率方面卸察,已經(jīng)無(wú)法支撐了脯厨。

為了滿(mǎn)足大型企業(yè)多維度監(jiān)控需求選擇自行開(kāi)發(fā)一套監(jiān)控系統(tǒng)是一種很好的方法。但是自行開(kāi)發(fā)在人力坑质、時(shí)間成本投入過(guò)大很容易讓產(chǎn)品夭折合武。站在前人的肩膀上临梗,利用優(yōu)秀的開(kāi)源項(xiàng)目快速構(gòu)建現(xiàn)代化監(jiān)控系統(tǒng)才是合理的選擇。于是稼跳,我們嘗試了盟庞,獲得了一些經(jīng)驗(yàn)和體會(huì),在此分享給大家汤善。

我們需要的監(jiān)控系統(tǒng)

基本的監(jiān)控系統(tǒng)系統(tǒng)組件:

采集器

存儲(chǔ)數(shù)據(jù)

顯示數(shù)據(jù)

報(bào)警通知

依照監(jiān)控系統(tǒng)功需求劃分為:

系統(tǒng)基礎(chǔ)監(jiān)控

應(yīng)用服務(wù)監(jiān)控

業(yè)務(wù)狀態(tài)監(jiān)控

日志分析監(jiān)控

根據(jù)業(yè)務(wù)的需求什猖,慎重比較和選擇開(kāi)源項(xiàng)目后,我們定義出下面的系統(tǒng)架構(gòu):

基于Zabbix構(gòu)建報(bào)警平臺(tái)

Zabbix 無(wú)疑是開(kāi)源項(xiàng)目中最成熟的監(jiān)控解決方案红淡。是一個(gè)可高自由度定制不狮,可視化的報(bào)警監(jiān)控系統(tǒng)。 功能十分的強(qiáng)大在旱,可輕松實(shí)現(xiàn)探針的自動(dòng)化注冊(cè)摇零,也支持基于角色的監(jiān)控對(duì)象自動(dòng)發(fā)現(xiàn)⊥靶可定制各種模板(template)驻仅,通過(guò)SNMP、SSH登渣、Telnet噪服、IPMI、JMX監(jiān)控绍豁,可自由定制可視化的屏幕(screen)等等芯咧。

在多維度的生產(chǎn)應(yīng)用環(huán)境中單臺(tái)主機(jī)監(jiān)控采集器需要完成約400多項(xiàng)監(jiān)控指標(biāo),這些指標(biāo)包括以下幾個(gè)方面:

CPU info

Disk info

IO

System uptime

Memory info

Network info

端口存活竹揍、進(jìn)程存活

單個(gè)進(jìn)程資源消耗(nginx 敬飒、tomcat、mysql)

TCP/UDP (established芬位、time_close 无拗、time_waite )相關(guān)統(tǒng)計(jì)

服務(wù)器硬件相關(guān)IPMI(溫度、電源昧碉、風(fēng)扇轉(zhuǎn)速英染、raid)

內(nèi)核配置參數(shù)

zabbix使用關(guān)系型數(shù)據(jù)庫(kù)mysql作為數(shù)據(jù)存儲(chǔ)。不過(guò)隨著業(yè)務(wù)的發(fā)展及復(fù)雜度的增加Zabbix探針在監(jiān)控對(duì)象上運(yùn)行的腳本也會(huì)變多被饿,需要更多的進(jìn)程四康,可能會(huì)對(duì)正常業(yè)務(wù)產(chǎn)生影響。

cAdvisor 監(jiān)控docker

Google的cAdvisor(Container Advisor)“為容器用戶(hù)提供了了解運(yùn)行時(shí)容器資源使用和性能特征的方法”狭握。cAdvisor的容器抽象基于Google的lmctfy容器棧闪金,因此原生支持Docker容器并能夠“開(kāi)箱即用”地支持其他的容器類(lèi)型。cAdvisor部署為一個(gè)運(yùn)行中的daemon,它會(huì)收集哎垦、聚集囱嫩、處理并導(dǎo)出運(yùn)行中容器的信息。這些信息能夠包含容器級(jí)別的資源隔離參數(shù)漏设、資源的歷史使用狀況墨闲、反映資源使用和網(wǎng)絡(luò)統(tǒng)計(jì)數(shù)據(jù)完整歷史狀況的柱狀圖。選擇使用cadvisor 是因?yàn)榍捌诒O(jiān)控docker郑口。 使用zabbix 自定義python腳本方式調(diào)用docker API ,發(fā)現(xiàn)當(dāng)單臺(tái)宿主機(jī)Container數(shù)量超過(guò)200個(gè)實(shí)例鸳碧。Zabbix性能將急劇下降。Cadvisor可分裝為container配合Influxdb 時(shí)間序列數(shù)據(jù)庫(kù)可輕松突破監(jiān)控性能的限制犬性。

一句命令就可以啟動(dòng)cAdvisor容器杆兵,訪(fǎng)問(wèn)8080端口即可看到性能指標(biāo)數(shù)據(jù)。cAdvisor可以通過(guò)storage_driver參數(shù)將數(shù)據(jù)存到influxdb

sudo docker run \

--volume=/:/rootfs:ro \

--volume=/var/run:/var/run:rw \

--volume=/sys:/sys:ro \

--volume=/var/lib/docker/:/var/lib/docker:ro \

--publish=8080:8080 \

--detach=true \

--name=cadvisor \

google/cadvisor

Grafanan應(yīng)用

Javascript 開(kāi)發(fā)的前端工具仔夺,支持多數(shù)據(jù)庫(kù)實(shí)例訪(fǎng)問(wèn) InfluxDB、Graphite攒砖、Elasticsearch缸兔、CloudWatch、OpenTSDB吹艇、KairosDB惰蜜、Prometheus。自定義報(bào)表函數(shù)受神、多格式圖表顯示(柱狀圖抛猖、曲線(xiàn)圖、餅圖鼻听、塊狀圖)财著。想在你的Boss面前炫耀一把grafana絕對(duì)能滿(mǎn)足你。

官方在線(xiàn)演示地址:http://play.grafana.org/

如何有效處理報(bào)警信息

在監(jiān)控系統(tǒng)應(yīng)用之中最煩惱的就是每天會(huì)受到監(jiān)控系統(tǒng)發(fā)送來(lái)的上百封告警郵件撑碴。特別是在業(yè)務(wù)應(yīng)用高峰時(shí)期撑教,由于系統(tǒng)的波動(dòng)將在單一時(shí)間多次觸發(fā)監(jiān)控系統(tǒng)的告警伐值。這樣的情況會(huì)給Devops 管理造成一種新的困難醉拓。 如何有效filter告警信息伟姐,將是判定監(jiān)控系統(tǒng)有效應(yīng)用的核心之處。

我們建議分級(jí)別亿卤、分類(lèi)型發(fā)送告警愤兵。

告警級(jí)別分類(lèi):

Waring:

Error:

告警方式類(lèi)型:

郵件告警

電話(huà)告警

告警策略

類(lèi)似系統(tǒng)CPU、 load avage 排吴、網(wǎng)絡(luò)秆乳、磁盤(pán)IO等在業(yè)務(wù)系統(tǒng)高峰期易產(chǎn)生波動(dòng)的監(jiān)控項(xiàng)設(shè)置為waring級(jí)別告警,告警方式采用郵件發(fā)送傍念。同時(shí)應(yīng)針對(duì)當(dāng)日所發(fā)送的告警郵件綜合采樣分析并且能自動(dòng)發(fā)送每日矫夷、每周葛闷、每月Top報(bào)表,報(bào)表包含以下幾項(xiàng):

消耗系統(tǒng)資源TOP10主機(jī)

智能排列統(tǒng)計(jì)(TOP10)CPU使用率双藕、CPU負(fù)載淑趾、內(nèi)存使用率、系統(tǒng)進(jìn)程數(shù)

業(yè)務(wù)訪(fǎng)問(wèn)效率TOP10

智能排列統(tǒng)計(jì)項(xiàng)目平均可用率忧陪、總平均響應(yīng)時(shí)間扣泊。

可用性統(tǒng)計(jì)

智能排列統(tǒng)計(jì)各個(gè)節(jié)點(diǎn)

響應(yīng)時(shí)間統(tǒng)計(jì)

智能統(tǒng)計(jì)單個(gè)項(xiàng)目不同地區(qū)、不同線(xiàn)路響應(yīng)時(shí)間

故障策略

系統(tǒng)磁盤(pán)空間嘶摊、進(jìn)程存活狀態(tài)延蟹,能直接影響用戶(hù)功能使用及業(yè)務(wù)健康狀態(tài)的監(jiān)控項(xiàng)應(yīng)設(shè)置error告警。同時(shí)采用電話(huà)語(yǔ)音方式告警叶堆。要求能快速準(zhǔn)確的告警故障原因阱飘,并且能讓Devops人員做到第一時(shí)間快速解決系統(tǒng)故障。

最新告警消息(TOP10) :

存儲(chǔ)應(yīng)用

對(duì)于監(jiān)控系統(tǒng)來(lái)講沥匈,歷史數(shù)據(jù)的存儲(chǔ)和高效率查詢(xún)忘渔,永遠(yuǎn)是個(gè)很難的問(wèn)題!

數(shù)據(jù)量大

目前我們監(jiān)控系統(tǒng)畦粮,每個(gè)周期散址,大概有2000萬(wàn)次數(shù)據(jù)上報(bào)(上報(bào)周期為1分鐘和5分鐘兩種,各占50%)预麸,一天24小時(shí)里儒将,從來(lái)不會(huì)有業(yè)務(wù)低峰师崎,不管是白天和黑夜,每個(gè)周期椅棺,總會(huì)有那么多的數(shù)據(jù)要更新犁罩。

寫(xiě)操作多

一般的業(yè)務(wù)系統(tǒng)两疚,通常都是讀多寫(xiě)少,可以方便的使用各種緩存技術(shù)丐巫,再者各類(lèi)數(shù)據(jù)庫(kù),對(duì)于查詢(xún)操作的處理效率遠(yuǎn)遠(yuǎn)高于寫(xiě)操作碑韵。而監(jiān)控系統(tǒng)恰恰相反,寫(xiě)操作遠(yuǎn)遠(yuǎn)高于讀祝闻。每個(gè)周期幾千萬(wàn)次的更新操作遗菠,對(duì)于常用數(shù)據(jù)庫(kù)(MySQL、postgresql辙纬、mongodb)都是無(wú)法完成的。

高效率的查

我們說(shuō)監(jiān)控系統(tǒng)讀操作少蓖谢,是說(shuō)相對(duì)寫(xiě)入來(lái)講譬涡。監(jiān)控系統(tǒng)本身對(duì)于讀的要求很高,用戶(hù)經(jīng)常會(huì)有查詢(xún)上百個(gè)meitric,在過(guò)去一天渊跋、一周着倾、一月、一年的數(shù)據(jù)卡者。如何在1秒內(nèi)返回給用戶(hù)并繪圖崇决,這是一個(gè)不小的挑戰(zhàn)。

綜合以上幾點(diǎn)的監(jiān)控系統(tǒng)對(duì)存儲(chǔ)系統(tǒng)的要求脸侥,我們更推薦使用Influxdb盈厘、Elasticsearch類(lèi)似的時(shí)間序列數(shù)據(jù)庫(kù)系統(tǒng)。公開(kāi)的資料顯示,influxdb可每秒完成50萬(wàn)寫(xiě)請(qǐng)求注簿。

Influxdb VS Elasticsearch

以下是influxdb 與Elasticsearch讀寫(xiě)性能及數(shù)據(jù)壓縮比的對(duì)比測(cè)試性能報(bào)表,可以很明確的得知時(shí)間序列數(shù)據(jù)庫(kù)influxdb 更為適合作為監(jiān)控系統(tǒng)的存儲(chǔ)系統(tǒng)應(yīng)用塔嬉。

后記

神荼已經(jīng)誕生恩袱,他已經(jīng)擁有了力量去守護(hù)我們的產(chǎn)品和服務(wù)胶哲。正如每一個(gè)新生兒一樣,他成長(zhǎng)的道路仍然漫長(zhǎng)澈吨。我們期待著他的神力完全發(fā)揮的一天寄摆,也相信這一天會(huì)到來(lái)。也許桑阶,他的力量可以幫助的不僅僅是我們勾邦,也有千千萬(wàn)萬(wàn)跟我們相似的互聯(lián)網(wǎng)公司!

本文作者:胡毅(點(diǎn)融黑幫)萎河,紅帽RHCA架構(gòu)師 蕉饼,2016年5月加入點(diǎn)融Devops 團(tuán)隊(duì)參與監(jiān)控系統(tǒng)的研發(fā)與維護(hù)。多年互聯(lián)網(wǎng)公司從業(yè)經(jīng)驗(yàn)厦幅,熟悉DDOS慨飘、CC 網(wǎng)絡(luò)攻擊防御及業(yè)務(wù)應(yīng)用系統(tǒng)優(yōu)化译荞。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末吞歼,一起剝皮案震驚了整個(gè)濱河市塔猾,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌糯俗,老刑警劉巖睦擂,帶你破解...
    沈念sama閱讀 217,185評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件顿仇,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡鸿吆,警方通過(guò)查閱死者的電腦和手機(jī)述呐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén)乓搬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人缤谎,你說(shuō)我怎么就攤上這事褐着『兀” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,524評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵斟赚,是天一觀的道長(zhǎng)差油。 經(jīng)常有香客問(wèn)我任洞,道長(zhǎng)发侵,這世上最難降的妖魔是什么刃鳄? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,339評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮挪鹏,結(jié)果婚禮上愉烙,老公的妹妹穿的比我還像新娘。我一直安慰自己催植,他們只是感情好勺择,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評(píng)論 6 391
  • 文/花漫 我一把揭開(kāi)白布省核。 她就那樣靜靜地躺著,像睡著了一般气忠。 火紅的嫁衣襯著肌膚如雪旧噪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,287評(píng)論 1 301
  • 那天宦赠,我揣著相機(jī)與錄音米母,去河邊找鬼。 笑死妙色,一個(gè)胖子當(dāng)著我的面吹牛慧耍,可吹牛的內(nèi)容都是我干的丐谋。 我是一名探鬼主播栅表,決...
    沈念sama閱讀 40,130評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼怪瓶,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了找岖?” 一聲冷哼從身側(cè)響起敛滋,我...
    開(kāi)封第一講書(shū)人閱讀 38,985評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤绎晃,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后庶艾,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體咱揍,經(jīng)...
    沈念sama閱讀 45,420評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評(píng)論 3 334
  • 正文 我和宋清朗相戀三年掩完,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了且蓬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片题翰。...
    茶點(diǎn)故事閱讀 39,779評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖存淫,靈堂內(nèi)的尸體忽然破棺而出沼填,到底是詐尸還是另有隱情括授,我是刑警寧澤岩饼,帶...
    沈念sama閱讀 35,477評(píng)論 5 345
  • 正文 年R本政府宣布籍茧,位于F島的核電站梯澜,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏吮龄。R本人自食惡果不足惜咆疗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評(píng)論 3 328
  • 文/蒙蒙 一午磁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧迅皇,春花似錦喧半、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,716評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至块仆,卻和暖如春王暗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背俗壹。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,857評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工绷雏, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留怖亭,地道東北人坤检。 一個(gè)月前我還...
    沈念sama閱讀 47,876評(píng)論 2 370
  • 正文 我出身青樓早歇,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親蛀醉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子衅码,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Zabbix簡(jiǎn)介 Zabbix官方網(wǎng)站Zabbix中文文檔 本文系統(tǒng)環(huán)境是CentOS7x86_64, Zabbi...
    Zhang21閱讀 7,998評(píng)論 0 37
  • 如今逝段,越來(lái)越多的公司開(kāi)始使用 Docker 了奶躯,現(xiàn)在來(lái)給大家看幾組數(shù)據(jù): 2 / 3 的公司在嘗試了 Docker...
    OneAPM閱讀 1,521評(píng)論 0 15
  • 前言介紹 監(jiān)控是整個(gè)運(yùn)維乃至整個(gè)產(chǎn)品生命周期中最重要的一環(huán),事前及時(shí)預(yù)警發(fā)現(xiàn)故障账嚎,事后提供詳實(shí)的數(shù)據(jù)用于追查定位問(wèn)...
    oldxu_linux閱讀 5,251評(píng)論 1 76
  • 本文遵循「知識(shí)共享許可協(xié)議 CC-BY-NC-SA 4.0 International」儡蔓,未經(jīng)作者(laiwei)...
    laiwei閱讀 13,135評(píng)論 7 18
  • 今天天氣晴好涨岁,去書(shū)店逛了一圈吉嚣,可惜沒(méi)有找到特別想當(dāng)下就買(mǎi)的書(shū)籍,很遺憾生活的這座小城市文化讀書(shū)氛圍很淡薄尝哆,比較正規(guī)...
    小怪物不想改變閱讀 195評(píng)論 0 0