聊聊 Statsd 和 Collectd 那點(diǎn)事魁袜!

StatsD 是由 Etsy 開發(fā)并發(fā)布的匯總和總結(jié)應(yīng)用指標(biāo)的一個(gè)簡(jiǎn)單的守護(hù)進(jìn)程爆办,近些年來(lái)發(fā)展迅速,已經(jīng)變成了一個(gè)用于收集應(yīng)用性能指標(biāo)的統(tǒng)一的協(xié)議泛烙。

關(guān)于 Statsd 的使用已經(jīng)有很多文章介紹過理卑,所以本文也不再贅述,本文主要來(lái)聊一聊它的來(lái)源原理以及和它類似的一個(gè)工具 Collectd 蔽氨。

Etsy 使用 Statsd 監(jiān)控系統(tǒng)應(yīng)用

Etsy 工程師曾寫 blog 介紹自己怎樣使用 statsd 以及為什么使用它藐唠,有時(shí)間可以看一看這篇文章 Measure Anything, Measure Everything

Statsd 最初是由 Etsy 的 Erik Kastner 編寫配合 Graphite/Carbon 使用的前端進(jìn)程孵滞,最初是為了匯總和總結(jié)應(yīng)用指標(biāo)中捆。開始使用的語(yǔ)言是 Node,后來(lái)其他語(yǔ)言也開發(fā)了此功能坊饶。它收集數(shù)據(jù)時(shí)基于2大功能:Counting & Timing。應(yīng)用程序的指標(biāo)通過特定語(yǔ)言的客戶端庫(kù)進(jìn)行檢測(cè)殴蓬,然后這些庫(kù)用很簡(jiǎn)單的協(xié)議和 Statsd 后臺(tái)守護(hù)進(jìn)程進(jìn)行通信匿级,后臺(tái)進(jìn)程匯集指標(biāo)并把他們傳遞到繪圖軟件或監(jiān)控后臺(tái)。

Statsd 如和工作

首先染厅,你可以通過 Statsd 收集任何你想要的數(shù)據(jù)痘绎,例如 Gauges , Counters , TimingSets ,Statsd 客戶端庫(kù)通過發(fā)送 UDP 數(shù)據(jù)包來(lái)調(diào)用每個(gè) Statsd 服務(wù)器肖粮,使用 UPD 發(fā)送數(shù)據(jù)到 Stated 服務(wù)器的原因很明顯孤页,快,UDP是斷開連接的協(xié)議涩馆,數(shù)據(jù)包不需要確認(rèn)就發(fā)送到收件人行施,不會(huì)像通過 TCP 或提交數(shù)據(jù)時(shí)由于 HTTP 協(xié)議而阻斷允坚。在調(diào)用時(shí),Statsd 客戶端庫(kù)沒有任何緩沖的數(shù)據(jù)蛾号,這樣兩者之間調(diào)用就很簡(jiǎn)單稠项,如果有大數(shù)據(jù)量的操作時(shí),可以選擇在數(shù)據(jù)發(fā)送到 Statsd 時(shí)加入樣本數(shù)據(jù)鲜结,即發(fā)送一定比例的數(shù)據(jù)展运。

Statsd 后臺(tái)守護(hù)進(jìn)程會(huì)監(jiān)聽所有應(yīng)用庫(kù)的 UDP 流量,通過時(shí)間流收集數(shù)據(jù)并在后臺(tái)所需時(shí)間間隔內(nèi)更新數(shù)據(jù)精刷。例如聚合功能調(diào)用計(jì)時(shí)器可以每10秒收集一次數(shù)據(jù)拗胜,分析出這些數(shù)據(jù)的最大值,最小值怒允,平均值挤土,中間值,90值和95值误算,Statsd 后臺(tái)守護(hù)進(jìn)程和后端將根據(jù)所用的后端改變協(xié)議仰美。監(jiān)控后端把收集到的指標(biāo)轉(zhuǎn)化成圖表,例如最常用的 Graphite儿礼,這個(gè)數(shù)據(jù)處理工具處理收集到的指標(biāo)咖杂,作出突出偏離常態(tài)的曲線圖,下圖為 Graphite 處理前后的圖表蚊夫。

聊聊 Statsd 和 Collectd 那點(diǎn)事诉字!

聊聊 Statsd 和 Collectd 那點(diǎn)事!

Etsy 已開源 Statsd 知纷,以下是基于基本線路協(xié)議發(fā)送的指標(biāo)格式:

<metricname>:<value>|<type>

如果你在本地運(yùn)行 StatsD 和默認(rèn)的 UDP 服務(wù)器壤圃,可在命令行發(fā)送最簡(jiǎn)單的指標(biāo)格式:

echo "foo:1|c" | nc -u -w0 127.0.0.1 8125

現(xiàn)在 Statsd 已經(jīng)發(fā)展的很壯大,總結(jié)有以下幾個(gè)原因:

  • 簡(jiǎn)單:非常容易獲取應(yīng)用程序琅轧,StatsD 協(xié)議是基于文本的伍绳,可以直接寫入和讀取

  • 低耦合性:基于后臺(tái)程序運(yùn)行的應(yīng)用程序,采取 UDP 這種發(fā)送后完了的協(xié)議乍桂,收集指標(biāo)和應(yīng)用程序本身之間沒有依賴

  • 占用空間谐迳薄:StatsD 客戶端非常輕便的,不帶任何狀態(tài)睹酌,不需要的線程权谁,且添加可以忽略不計(jì)

  • 普遍及支持多種語(yǔ)言: 有基于 Ruby,Python憋沿,Java旺芽,erlang,Node,Scala采章,Go运嗜,haskell 等幾乎所有語(yǔ)言的客戶端

  • 開源且商用

Collectd

Collectd 其實(shí)是 C 語(yǔ)言開發(fā)的一個(gè)守護(hù)(daemon)進(jìn)程,像 Statsd 一樣它也做周期性收集統(tǒng)計(jì)數(shù)據(jù)共缕,此外它還管數(shù)據(jù)存儲(chǔ)洗出,給各種存儲(chǔ)方式提供不同的存儲(chǔ)機(jī)制,具體可以參考 Collectd 的官網(wǎng) 图谷。

Collectd 不僅僅是收集性能數(shù)據(jù)翩活,還根據(jù)這些數(shù)據(jù)會(huì)周期性統(tǒng)計(jì)系統(tǒng)的相關(guān)信息,以這些統(tǒng)計(jì)信息為依準(zhǔn)便贵,檢查當(dāng)前服務(wù)器性能(如作為性能分析 performance analysis)和預(yù)測(cè)系統(tǒng)未來(lái)的 load(如能力部署 capacity planning)菠镇,不過它本身并不能生成圖形,雖然它能寫 RRD 文件承璃,但是它不能從這些文件生成圖形利耍,所以一般需要結(jié)合一個(gè)數(shù)據(jù)繪圖工具 Graphite/Cacti 。像 VPSee 就是選用 Collectd 收集機(jī)器的各個(gè)性能參數(shù)盔粹。

相較于其他收集系統(tǒng)相關(guān)指標(biāo)的工具隘梨,Collectd 有一定的優(yōu)點(diǎn),比如嵌入式系統(tǒng)舷嗡,C 語(yǔ)言開發(fā)(高效)轴猎、無(wú)需系統(tǒng) cron 支持(獨(dú)立)、簡(jiǎn)單易用进萄,此外他還包含有超過70多種插件以及文檔支持捻脖。

Collectd 除了解析 configfile 其他一切都是在插件下完成,這意味著主守護(hù)進(jìn)程沒有任何外部依賴中鼠,現(xiàn)在已知的可以應(yīng)用在 Linux可婶,Solaris,Mac OS X上援雇,AIX矛渴,F(xiàn)reeBSD,NetBSD 和 OpenBSD 等系統(tǒng)中熊杨。

Collectd 配置簡(jiǎn)單:除了那些需要加載的模塊曙旭,你不需要配置其他任何東西。

Collectd 不是腳本晶府,而是運(yùn)行在內(nèi)存里面的進(jìn)程,不需要每次記錄都啟動(dòng)繁重的解釋器钻趋,有 nice 級(jí)別的 10 秒鐘的默認(rèn)解析川陆。

Collectd 能夠處理任意數(shù)量的主機(jī),從一個(gè)到幾千個(gè)蛮位,而且可以通過利用該資源盡可能高效较沪。

Collectd 支持 SNMP鳞绕,該 SNMP 插件提供了一個(gè)通用接口 SNM 協(xié)議,可以用它來(lái)查詢值尸曼,并基于 Collectd 機(jī)制處理他們们何,例如發(fā)送他們做其他地方的服務(wù)器實(shí)例。

Collectd 支持各種自定義擴(kuò)展控轿,C-plugins冤竹,Perl-plugins,Java-plugins茬射,Python-plugins鹦蠕,UNIX 域套接字,Java 的 MBean 的支持等在抛。

接下來(lái)簡(jiǎn)單介紹一下安裝方法钟病,安裝配置 Colloectd,首先要?jiǎng)?chuàng)建一個(gè) collectd.d 目錄便于存放稍后會(huì)遇到的插件配置文件 graphite.conf刚梭,并在 collectd.conf 包含這個(gè)目錄 肠阱;

$ sudo apt-get install collectd

$ sudo mkdir /etc/collectd/collectd.d
$ sudo vi /etc/collectd/collectd.conf
...
Include      "/etc/collectd/collectd.d"

安裝 git 并下載 collectd-carbon 插件:

$ sudo apt-get install git

$ sudo git clone https://github.com/indygreg/collectd-carbon.git /opt/collectd-plugins

修改插件的配置文件的 ModulePath 部分,指向 carbon_writer.py 文件所在目錄朴读,并且修改 LineReceiverHost 部分:

$ sudo vi /etc/collectd/collectd.d/graphite.conf
<LoadPlugin "python">
    Globals true
</LoadPlugin>

<Plugin "python">
    # carbon_writer.py is at path /opt/collectd-plugins/carbon_writer.py
    ModulePath "/opt/collectd-plugins/"

    Import "carbon_writer"

    <Module "carbon_writer">
        LineReceiverHost "monitor.vpsee.com"
        LineReceiverPort 2003
        DifferentiateCountersOverTime true
        LowercaseMetricNames true
        TypesDB "/usr/share/collectd/types.db"
    </Module>
</Plugin>

修改好配置文件后重啟服務(wù):

$ sudo /etc/init.d/collectd restart

好了屹徘,被監(jiān)控的服務(wù)器已經(jīng)安裝好了 Collectd ,要想真正使用此外還需要安裝繪圖工具磨德,具體怎么安裝我也不詳細(xì)介紹了缘回,畢竟重點(diǎn)不是那個(gè),以下是 Graphite 的相關(guān)鏈接:GraphiteGraphite Project典挑,希望對(duì)你有所幫助酥宴。

Cloud Insight 集監(jiān)控、管理您觉、計(jì)算拙寡、協(xié)作、可視化于一身琳水,幫助所有 IT 公司肆糕,減少在系統(tǒng)監(jiān)控上的人力和時(shí)間成本投入,讓運(yùn)維工作更加高效在孝、簡(jiǎn)單诚啃。想閱讀更多技術(shù)文章,請(qǐng)?jiān)L問 OneAPM 官方技術(shù)博客私沮。

本文轉(zhuǎn)自 OneAPM 官方技術(shù)博客

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末始赎,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌造垛,老刑警劉巖魔招,帶你破解...
    沈念sama閱讀 221,406評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異五辽,居然都是意外死亡办斑,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門杆逗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)乡翅,“玉大人,你說我怎么就攤上這事髓迎÷屠剩” “怎么了?”我有些...
    開封第一講書人閱讀 167,815評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵排龄,是天一觀的道長(zhǎng)波势。 經(jīng)常有香客問我,道長(zhǎng)橄维,這世上最難降的妖魔是什么尺铣? 我笑而不...
    開封第一講書人閱讀 59,537評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮争舞,結(jié)果婚禮上凛忿,老公的妹妹穿的比我還像新娘。我一直安慰自己竞川,他們只是感情好店溢,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,536評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著委乌,像睡著了一般床牧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上遭贸,一...
    開封第一講書人閱讀 52,184評(píng)論 1 308
  • 那天戈咳,我揣著相機(jī)與錄音,去河邊找鬼壕吹。 笑死著蛙,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的耳贬。 我是一名探鬼主播踏堡,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼咒劲!你這毒婦竟也來(lái)了暂吉?” 一聲冷哼從身側(cè)響起胖秒,我...
    開封第一講書人閱讀 39,668評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤缎患,失蹤者是張志新(化名)和其女友劉穎慕的,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體挤渔,經(jīng)...
    沈念sama閱讀 46,212評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡肮街,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,299評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了判导。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嫉父。...
    茶點(diǎn)故事閱讀 40,438評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖眼刃,靈堂內(nèi)的尸體忽然破棺而出绕辖,到底是詐尸還是另有隱情,我是刑警寧澤擂红,帶...
    沈念sama閱讀 36,128評(píng)論 5 349
  • 正文 年R本政府宣布仪际,位于F島的核電站,受9級(jí)特大地震影響昵骤,放射性物質(zhì)發(fā)生泄漏树碱。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,807評(píng)論 3 333
  • 文/蒙蒙 一变秦、第九天 我趴在偏房一處隱蔽的房頂上張望成榜。 院中可真熱鬧,春花似錦蹦玫、人聲如沸赎婚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)挣输。三九已至,卻和暖如春饺窿,著一層夾襖步出監(jiān)牢的瞬間歧焦,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工肚医, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留绢馍,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,827評(píng)論 3 376
  • 正文 我出身青樓肠套,卻偏偏與公主長(zhǎng)得像舰涌,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子你稚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,446評(píng)論 2 359

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理瓷耙,服務(wù)發(fā)現(xiàn)朱躺,斷路器,智...
    卡卡羅2017閱讀 134,695評(píng)論 18 139
  • 在互聯(lián)網(wǎng)業(yè)務(wù)蒸蒸日上的今時(shí)今日,系統(tǒng)架構(gòu)日漸復(fù)雜鸡典,隨著軟件產(chǎn)品和工程團(tuán)隊(duì)的變革源请,許多開源的監(jiān)控工具應(yīng)運(yùn)而生,其中有...
    OneAPM_Official閱讀 2,445評(píng)論 1 10
  • 從三月份找實(shí)習(xí)到現(xiàn)在彻况,面了一些公司谁尸,掛了不少,但最終還是拿到小米纽甘、百度良蛮、阿里、京東悍赢、新浪决瞳、CVTE、樂視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,272評(píng)論 11 349
  • 11.1 引言 UDP是一個(gè)簡(jiǎn)單的面向數(shù)據(jù)報(bào)的運(yùn)輸層協(xié)議:進(jìn)程的每個(gè)輸出操作都正好產(chǎn)生一個(gè)UDP數(shù)據(jù)報(bào)泽裳,并組裝成一...
    張芳濤閱讀 2,821評(píng)論 1 6
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,275評(píng)論 25 707