大規(guī)模時序數(shù)據(jù)存儲(一)| 監(jiān)控場景的時序數(shù)據(jù)

作者簡介

運小堯? ? 百度高級研發(fā)工程師

負責百度運維大數(shù)據(jù)存儲平臺的設計和研發(fā),致力于追求大規(guī)模存儲系統(tǒng)的高性能和高可用瘫拣。

干貨概覽

百度運維大數(shù)據(jù)平臺的時序數(shù)據(jù)存儲系統(tǒng)(Time Series Database,TSDB)是智能運維團隊于 2014 年自研的一套分布式監(jiān)控數(shù)據(jù)存儲系統(tǒng)误堡。發(fā)展至今,經(jīng)歷過幾次大的架構(gòu)更迭空民,現(xiàn)在 TSDB 作為百度監(jiān)控系統(tǒng)的底層存儲服務锅铅,承載了公司諸多核心產(chǎn)品線的監(jiān)控數(shù)據(jù)存儲和查詢需求酪呻,日均寫入數(shù)據(jù)點數(shù)以萬億計,承載?50K QPS的查詢請求盐须。百度大規(guī)模時序數(shù)據(jù)存儲系列文章將介紹 TSDB 在監(jiān)控場景的應用和系統(tǒng)設計實踐玩荠,本文將介紹 TSDB 在監(jiān)控場景下的應用以及系統(tǒng)設計面臨的技術(shù)挑戰(zhàn)。

一贼邓、監(jiān)控時序數(shù)據(jù)

百度的監(jiān)控時序數(shù)據(jù)來源于監(jiān)控系統(tǒng)在全網(wǎng)數(shù)十萬臺服務器上部署的Agent阶冈,Agent 采集各類監(jiān)控對象的監(jiān)控項,并以不同的頻率向 TSDB 上報這些監(jiān)控項的測量值塑径。通過一張 CPU 空閑率趨勢圖可以直觀地看到監(jiān)控時序數(shù)據(jù)女坑。


圖1 ? ?CPU 空閑率趨勢圖

1 監(jiān)控對象(Object)

監(jiān)控對象可以分為三類:

機器級:物理機、虛擬機统舀、操作系統(tǒng)等

實例級:容器匆骗、進程、日志等

服務級(邏輯對象):服務誉简、服務組碉就、集群等?


圖2 ? ?監(jiān)控對象

2 監(jiān)控項(Metric)

監(jiān)控對象的一些需要關(guān)注的指標,如機器的 CPU 空閑率描融、內(nèi)存使用率铝噩、網(wǎng)卡帶寬以及磁盤 I/O等衡蚂,稱為監(jiān)控項窿克。除了這些通用的機器監(jiān)控項以外,根據(jù)不同的需求還可以自定義監(jiān)控項毛甲,比如數(shù)據(jù)服務的緩沖對列長度年叮、查詢請求的平均響應時間等。

3 標簽(Tag)

標簽是一對?Key-Value玻募,標識了監(jiān)控對象在某個維度(Key)的特征(Value)只损,一個監(jiān)控對象也可以從多個維度來標識,比如部署在多地域七咧、多運營商的服務可以有地域和運營商兩個維度跃惫,根據(jù)不同的維度取值可以生成不同標簽,如 (“機房=杭州”, “運營商=電信”) 和 (“機房=北京”, “運營商=聯(lián)通”)艾栋。

4 時間序列(Time Series)

把監(jiān)控對象的監(jiān)控項測量值爆存,按照時間的順序排列起來就構(gòu)成了時間序列:

時間序列 = 監(jiān)控對象 + 標簽列表 + 監(jiān)控項 + 數(shù)據(jù)點

其中數(shù)據(jù)點由時間戳和取值構(gòu)成,每個時間序列對應到趨勢圖上的一條曲線蝗砾。

二先较、監(jiān)控時序數(shù)據(jù)的特點1數(shù)據(jù)的使用場景

通過?Web 頁面携冤、HTTP API 或命令行工具,用戶可以方便地從 TSDB 種獲取到自己關(guān)注的數(shù)據(jù):

在日常運維工作中闲勺,運維工程師通過 Web 頁面人工查看趨勢圖曾棕、同環(huán)比報表和熱力圖等來了解系統(tǒng)的最新或歷史狀態(tài)

一些自動化的服務通過高頻、批量地查詢時序數(shù)據(jù)來進行數(shù)據(jù)分析菜循,進一步地挖掘數(shù)據(jù)的價值翘地,如異常檢測、匯聚計算癌幕、根因定位等

2 數(shù)據(jù)的讀寫特點

在時序數(shù)據(jù)的大多數(shù)使用場景中子眶,我們更加關(guān)注最近一段時間的數(shù)據(jù),而這些數(shù)據(jù)的產(chǎn)生卻是 7 *24 小時不間斷的序芦,這就導致時間序列的讀請求與寫請求特征迥異且量級懸殊:

隨機寫:不同的時間序列按照不同頻率各自寫入數(shù)據(jù)點

順序讀:指定時間范圍讀取一段連續(xù)的數(shù)據(jù)點

寫多讀少:寫入請求量占比達九成以上

3 數(shù)據(jù)的多維度

前面提到臭杰,可以使用標簽來從多個維度標識一個監(jiān)控對象,在獲取數(shù)據(jù)時谚中,也可以通過標簽渴杆,將監(jiān)控對象按維度進行篩選聚合。如宪塔,對于一個多地域磁奖、多運營商部署的服務,獲取其在某段時間內(nèi)某筐、不同地域相同運營商的總流量:


圖3 ? ?多維度聚合查詢

三比搭、面臨的挑戰(zhàn)

1高負載和高可用

在百度,有數(shù)千萬的監(jiān)控對象南誊,時間序列的總量近?10 億身诺。監(jiān)控項的采集周期通常為 10s,在高時效性要求的場景下要求?5s?的采集周期抄囚,這意味著每一秒鐘都有數(shù)千萬個數(shù)據(jù)點要寫入 TSDB霉赡,每天產(chǎn)生的數(shù)據(jù)點規(guī)模達到萬億量級。與此同時幔托,TSDB 每秒鐘還要處理數(shù)萬次查詢請求穴亏,由于查詢有一定的突發(fā)性,峰值的查詢流量可達到常態(tài)流量的數(shù)百倍重挑,且根據(jù)業(yè)務的需求嗓化,絕大多數(shù)的請求都應該能在?500ms?返回結(jié)果給用戶。

在處理 7 * 24 小時持續(xù)高并發(fā)寫入的同時谬哀,還要應對高并發(fā)的查詢請求刺覆,負載不可謂不重,高吞吐和低延遲是對 TSDB 的基本要求玻粪。此外隅津,打鐵還需自身硬诬垂,作為監(jiān)控系統(tǒng)自身的基礎服務,其可用性必須有所保障伦仍,根據(jù)業(yè)務需求结窘,我們制定的可用性目標至少是?99.99%

2 復雜的數(shù)據(jù)保存策略

前文提到監(jiān)控時序數(shù)據(jù)的使用場景有很多充蓝,包括匯聚值報警隧枫、查看指標的歷史趨勢圖、實時的數(shù)據(jù)報表(天/周/季/年的同/環(huán)比)谓苟、趨勢異常檢測以及歷史數(shù)據(jù)離線分析等官脓,這些場景分別有著獨特的查詢特點:

場景時間范圍查詢數(shù)據(jù)量查詢頻率時效性要求

匯聚值報警最近數(shù)分鐘或數(shù)小時小高高

異常檢測多個時間區(qū)間小高高

實時報表最近數(shù)小時或數(shù)天大高低

歷史趨勢圖自定義時間范圍小低低

離線分析數(shù)天、數(shù)周或數(shù)月大低低

可以看到涝焙,每種場景的查詢數(shù)據(jù)量卑笨、數(shù)據(jù)的分布以及對數(shù)據(jù)時效性的需求不盡相同,TSDB 需要在這些場景下都能夠高效地獲取數(shù)據(jù)仑撞。

3 不斷增長的業(yè)務規(guī)模

百度的產(chǎn)品線數(shù)量赤兴、業(yè)務規(guī)模在不斷地增加,相應地隧哮,監(jiān)控系統(tǒng)的體量也隨著增長桶良,TSDB 的規(guī)模也勢必增長,必然會面臨容量沮翔、成本和可用性的壓力陨帆。低成本地換取系統(tǒng)容量的增加和可用性的提升,是在系統(tǒng)設計時需要考慮的重點之一采蚀。

4 多樣化的數(shù)據(jù)保存需求

不同的業(yè)務對監(jiān)控數(shù)據(jù)的保存時長有不同的要求疲牵,不同的場景對數(shù)據(jù)的粒度也有不同的要求埠褪,例如钳枕,想要知道某服務過去一天的總流量相比去年同期的變化,需要數(shù)據(jù)至少保存一年,但數(shù)據(jù)的粒度可以是天級璧眠;而對于最近一個小時的流量,希望能夠支持更細粒度的監(jiān)控數(shù)據(jù)读虏,以便能夠發(fā)現(xiàn)短暫的流量突變责静。

總結(jié)

本文主要介紹了監(jiān)控場景時序數(shù)據(jù)的特點,以及我們在設計時序數(shù)據(jù)存儲時面臨的挑戰(zhàn)盖桥,對于百度在應對這些挑戰(zhàn)時的設計實踐灾螃,

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市揩徊,隨后出現(xiàn)的幾起案子腰鬼,更是在濱河造成了極大的恐慌嵌赠,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,222評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件熄赡,死亡現(xiàn)場離奇詭異姜挺,居然都是意外死亡,警方通過查閱死者的電腦和手機彼硫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,455評論 3 385
  • 文/潘曉璐 我一進店門炊豪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人拧篮,你說我怎么就攤上這事词渤。” “怎么了串绩?”我有些...
    開封第一講書人閱讀 157,720評論 0 348
  • 文/不壞的土叔 我叫張陵缺虐,是天一觀的道長。 經(jīng)常有香客問我礁凡,道長志笼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,568評論 1 284
  • 正文 為了忘掉前任把篓,我火速辦了婚禮纫溃,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘韧掩。我一直安慰自己紊浩,他們只是感情好,可當我...
    茶點故事閱讀 65,696評論 6 386
  • 文/花漫 我一把揭開白布疗锐。 她就那樣靜靜地躺著坊谁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪滑臊。 梳的紋絲不亂的頭發(fā)上口芍,一...
    開封第一講書人閱讀 49,879評論 1 290
  • 那天,我揣著相機與錄音雇卷,去河邊找鬼鬓椭。 笑死,一個胖子當著我的面吹牛关划,可吹牛的內(nèi)容都是我干的小染。 我是一名探鬼主播,決...
    沈念sama閱讀 39,028評論 3 409
  • 文/蒼蘭香墨 我猛地睜開眼贮折,長吁一口氣:“原來是場噩夢啊……” “哼裤翩!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起调榄,我...
    開封第一講書人閱讀 37,773評論 0 268
  • 序言:老撾萬榮一對情侶失蹤踊赠,失蹤者是張志新(化名)和其女友劉穎呵扛,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體筐带,經(jīng)...
    沈念sama閱讀 44,220評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡今穿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,550評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了烫堤。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片荣赶。...
    茶點故事閱讀 38,697評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖鸽斟,靈堂內(nèi)的尸體忽然破棺而出拔创,到底是詐尸還是另有隱情,我是刑警寧澤富蓄,帶...
    沈念sama閱讀 34,360評論 4 332
  • 正文 年R本政府宣布剩燥,位于F島的核電站,受9級特大地震影響立倍,放射性物質(zhì)發(fā)生泄漏灭红。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,002評論 3 315
  • 文/蒙蒙 一口注、第九天 我趴在偏房一處隱蔽的房頂上張望变擒。 院中可真熱鬧,春花似錦寝志、人聲如沸娇斑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,782評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽毫缆。三九已至,卻和暖如春乐导,著一層夾襖步出監(jiān)牢的瞬間苦丁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,010評論 1 266
  • 我被黑心中介騙來泰國打工物臂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留旺拉,地道東北人。 一個月前我還...
    沈念sama閱讀 46,433評論 2 360
  • 正文 我出身青樓鹦聪,卻偏偏與公主長得像账阻,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子泽本,可洞房花燭夜當晚...
    茶點故事閱讀 43,587評論 2 350

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