如果查看應用性能圖表是一種信仰

Esty 當年發(fā)布 statsd 寫過一篇文章:[Measure Anything, Measure Everything](https://codeascraft.com/2011/02/15/measure-anything-measure-everything/](https://codeascraft.com/2011/02/15/measure-anything-measure-everything/)枷踏。
這篇文章對性能監(jiān)控領域影響很大准潭,系統(tǒng)監(jiān)控工具如果能夠做到 All in One隘世,那真的可以解決人力和時間成本上的問題筷转。OneAPM 的工程師對這篇經典文章進行了編譯整理盹沈,希望能對大家有所啟發(fā):

如果 Etsy 社區(qū)也有信仰,那一定是圖表疫鹊,Ian Malpass 在 Code as Craft 發(fā)表的文章中這么描述: 只要是變化的事件儡陨,我們就追蹤它。有時候辙售,為了記錄事件的變化轻抱,我們從它不變時就用圖表進行記錄。通常旦部,我們會從三個層面進行測量:網絡祈搜、設備以及應用。

應用指標往往是這三者中最難測量卻又最重要的士八。應用指標與業(yè)務息息相關容燕,隨著應用的變化而變化。在此婚度,我們不會早早地規(guī)劃要測量的所有指標蘸秘,將它們放在經典的測量管理系統(tǒng)中,我們只會將工程師可能測量或計時的指標以最簡便的方式做成圖表蝗茁。(我們可以隨時隨地修改代碼并部署它醋虏,因此,測量“ X 的發(fā)生頻率”评甜,“ X 在過去半小時內的發(fā)生情況”灰粮,只要有需求,就能很快實現(xiàn)忍坷。)

StatsD 簡介

StatsD 是一種簡單的監(jiān)聽 UDP 端口消息的 NodeJS 守護程序,NodeJS 對于基于事件的系統(tǒng)監(jiān)控真的很簡單熔脂。該程序會分析這些消息佩研,抽取中其中的測量數據,并定期將數據推送給 Graphite霞揉。

我們選擇 Graphite 的原因很多:它使用簡便旬薯,圖形化和數據處理能力強大。我們可以結合通過 StatsD 或其他指標收集系統(tǒng)收集到的數據來了解系統(tǒng)運行情況适秩。最重要的是绊序,對于 StatsD 來說硕舆,可以根據傳輸給 Graphite 的數據自動創(chuàng)建指標。這意味著骤公,工程師們在追蹤新的指標時無需擔心管理成本抚官,只要告訴 StatsD:“我想要追蹤 grue.dinners”,該指標就會自動出現(xiàn)在 Graphite 中阶捆。此外凌节,向 Graphite 推送數據的頻率為10秒,因此洒试,StatsD 測量的指標數據幾乎可以做到實時倍奢。

因此,有了 StatsD垒棋,抓取比率卒煞、速度等數據值就變得很簡單了,再通過 Graphite 對數據進行處理叼架,對數據的查看跷坝、分析也很容易實現(xiàn)。

為什么使用 UDP?

前面也說了, Statsd 是通過 UDP 傳輸數據的碉碉,那么有人會問為什么選 UDP 而不選 TCP 呢? 首先柴钻,UDP 速度很快。任何人都不想為了提高應用性能而減慢其速度垢粮。此外贴届,UDP 包遵循“發(fā)送后不管(fire-and-forget)”機制。所以要么 StatsD 接收了這個包蜡吧,要么沒有毫蚓,應用不會在意 StatsD 是運行、宕機還是著火了昔善。它單純地相信一切運行正常元潘。即便并非如此,stats 進程出現(xiàn)了問題君仆,應用也不受影響翩概。因為我們也信仰“正常運行時間(uptime)”概念,所以這不成問題返咱。(當然钥庇,我們可以通過圖表追蹤 UDP 包接收失敗的情況。)

測量任意事件

以下是我們使用 PHP StatsD 函數庫的實現(xiàn)方式:

StatsD::increment("grue.dinners");

通過這樣一行代碼咖摹,就在進程中創(chuàng)建了一個新的計數器评姨,在每次執(zhí)行后增加計數。接下來萤晴,就可以只關注圖表的展現(xiàn)吐句,而不去考慮其他了胁后。

測量所有,量化一切嗦枢!
測量所有攀芯,量化一切!

我們可以使用 Graphite 提供的數據處理工具來處理上面的數據净宵,創(chuàng)建異常偏離標準值的圖表敲才。

測量所有,量化一切择葡!
測量所有紧武,量化一切!

(有時敏储,我們會使用 Graphite 中的 rawData=true 選項獲取能自動推送給監(jiān)控系統(tǒng)的數字流阻星,這一類型的圖表非常容易被監(jiān)控。)

我們不僅監(jiān)控諸如“有多少人登陸了這個網站”這類重要的事情已添,我們也會追蹤一些瑣碎的事件妥箕,比如“廚房里還剩多少咖啡”:

測量所有,量化一切更舞!
測量所有畦幢,量化一切!

為所有事件計時

除了計數缆蝉,我們還可以追蹤時間宇葱。

$start = microtime(true);   
eat_adventurer();
StatsD::timing("grue.dinners", (microtime(true) - $start) * 1000);

StatsD 可以自動追蹤次數,平均值刊头,最大/小值黍瞧,以及百分之 90 時間值。在下面的例子中原杂,我們測量了部分搜索設備的執(zhí)行時間印颤。

測量所有,量化一切穿肄!
測量所有年局,量化一切!

數據采樣

我們很早就發(fā)現(xiàn)被碗,如果受追蹤的某些事件發(fā)生的頻率非常高某宪,UDP 包就會溢滿 StatsD。為了解決這個問題锐朴,我們增加了數據采樣的選項——只在一段時間內傳送數據包。但對于那些異嘲遥活躍的事件焚志,即便這么做還是會帶來過多的數據衣迷。

為此,我們只記錄十個事件中的一個事件酱酬,可以采取以下方法:

StatsD::increment(“adventurer.heartbeat”, 0.1);

測量所有事件

追蹤所有事件是提高效率的關鍵壶谒。有了 StatsD,工程師們可以輕松追蹤他們需要關注的事務膳沽,而無需費時地修改配置汗菜。

Cloud Insight 集監(jiān)控、管理挑社、計算陨界、協(xié)作、可視化于一身痛阻,幫助所有 IT 公司菌瘪,減少在系統(tǒng)監(jiān)控上的人力和時間成本投入,讓運維工作更加高效阱当、簡單俏扩。想閱讀更多技術文章,請訪問 OneAPM 官方技術博客弊添。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末录淡,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子油坝,更是在濱河造成了極大的恐慌嫉戚,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,681評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件免钻,死亡現(xiàn)場離奇詭異彼水,居然都是意外死亡,警方通過查閱死者的電腦和手機极舔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評論 3 399
  • 文/潘曉璐 我一進店門凤覆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人拆魏,你說我怎么就攤上這事盯桦。” “怎么了渤刃?”我有些...
    開封第一講書人閱讀 169,421評論 0 362
  • 文/不壞的土叔 我叫張陵拥峦,是天一觀的道長。 經常有香客問我卖子,道長略号,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,114評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮玄柠,結果婚禮上突梦,老公的妹妹穿的比我還像新娘。我一直安慰自己羽利,他們只是感情好宫患,可當我...
    茶點故事閱讀 69,116評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著这弧,像睡著了一般娃闲。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上匾浪,一...
    開封第一講書人閱讀 52,713評論 1 312
  • 那天皇帮,我揣著相機與錄音,去河邊找鬼户矢。 笑死玲献,一個胖子當著我的面吹牛,可吹牛的內容都是我干的梯浪。 我是一名探鬼主播捌年,決...
    沈念sama閱讀 41,170評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼挂洛!你這毒婦竟也來了礼预?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 40,116評論 0 277
  • 序言:老撾萬榮一對情侶失蹤虏劲,失蹤者是張志新(化名)和其女友劉穎托酸,沒想到半個月后,有當地人在樹林里發(fā)現(xiàn)了一具尸體柒巫,經...
    沈念sama閱讀 46,651評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡励堡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,714評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了堡掏。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片应结。...
    茶點故事閱讀 40,865評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖泉唁,靈堂內的尸體忽然破棺而出鹅龄,到底是詐尸還是另有隱情,我是刑警寧澤亭畜,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布扮休,位于F島的核電站,受9級特大地震影響拴鸵,放射性物質發(fā)生泄漏玷坠。R本人自食惡果不足惜蜗搔,卻給世界環(huán)境...
    茶點故事閱讀 42,211評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望侨糟。 院中可真熱鬧碍扔,春花似錦瘩燥、人聲如沸秕重。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽溶耘。三九已至,卻和暖如春服鹅,著一層夾襖步出監(jiān)牢的瞬間凳兵,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評論 1 274
  • 我被黑心中介騙來泰國打工企软, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留庐扫,地道東北人。 一個月前我還...
    沈念sama閱讀 49,299評論 3 379
  • 正文 我出身青樓仗哨,卻偏偏與公主長得像形庭,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子厌漂,可洞房花燭夜當晚...
    茶點故事閱讀 45,870評論 2 361

推薦閱讀更多精彩內容