Datadog Agent是啥?它消耗什麼資源?

在資本市場不那麼喜人的 2015 年融資 9450 萬美圓的 Datadog,在運維圈颳起了一陣小旋風。做爲國外很值得學習的一款平臺監控產品,公司人數不足 100 的 Datadog 爲何吸引了投資人的目光?咱們先來了解一下他們的 Agent。html

本文系國內 ITOM 行業領軍企業 OneAPM 工程師翻譯整理自文章 What is the Datadog Agent, What Resources does it Consume?,原做者 Dustin Lawler。python

簡介

Data dog Agent 是運行在你主機上的一款輕量級軟件。它的做用就是忠心耿耿地爲你收集事件和性能指標,傳到 Datadog 中,以便你利用這些監控和運行數據來作點什麼。mysql

點擊此處得到 Datadog Agent 的源代碼。git

enter image description here

Datadog Agent的架構

Data dog Agent 主要由四個用 Python 編寫的組件構成,每一個組件都是單獨運行的進程。github

  • Collector(agent.py)-- Collector 會檢查當前運行機器的集成環境,抓取系統性能指標,如內存和 CPU 數據。
  • Dogstatsd(dogstatsd.py)-- 這是 StatsD 的後臺服務器,它致力於收集從你代碼中發送出去的本地性能指標。
  • Forwarder(ddagent.py)-- Forwarder 負責把 Dogstatsd 和 Collector 收集到的數據推到一個隊列中,這些數據將會被髮往 Datadog。
  • SupervisorD -- 由一個單獨的管理進程控制。咱們把它與其餘組件分隔開來,所以若是你擔憂資源消耗而不想運行全部組件的話(雖然咱們建議你這麼作),能夠單獨運行它。

學習如何在現有基礎上,擴展 agent 的檢查內容,或者編寫本身的一套版本,請點擊此處sql

Datadog Agent消耗的資源

Datadog Agent的資源消耗大體以下:數據庫

  • 常駐內存:50MB
  • CPU時間:平均小於1%
  • 硬盤空間:
    Linux:120MB
    Windows:60MB
  • 帶寬佔用:每分鐘 10-50 KB

上述數據是基於一個運行了十多天的 EC2 m1.large 實例。緩存

監控、權限和網絡端口

Supervisors 做爲一個主控根進程運行,能夠 fork 全部的子進程爲user dd-agent,其配置文件在/etc/dd-agent/datadog.conf/etc/dd-agent/conf.d下能夠找到。全部的配置對 dd-agent 來講都必須可讀。推薦使用權限 0600,由於配置文件中包含你的 API key,以及其它訪問性能指標(如 mysql,postgresql metrics)所需的證書。服務器

如下端口對通常操做開放:網絡

  • 爲通常操做提供的 forwarder tcp/17123 端口和啓用了 graphite 服務時的 tcp/17124端口
  • dogstatsd udp/8125

在 3.4.1 或以上版本中,全部監聽進程都默認綁定 127.0.0.1 和 / 或者 ::1。而早期版本中,他們則綁定至 0.0.0.0 (例如全部的接口)。

關於如何經過代理運行agent,請戳這裏;關於容許的範圍,請看這裏

Collector

這是收集全部標準性能指標的地方,每十五秒收集一次。
Collector 也支持運行基於 python 的用戶定義的檢查內容。這些內容應存儲於/etc/dd-agent/checks.d下。用戶定義的檢查內容必須從抽象類 AgentCheck 繼承,這個類定義在 checks/init.py中。

Forwarder

Forwarder 監聽並緩存傳入的HTTP請求,接着經過 HTTPS 轉發到 Datadog 中心。緩存請求使得網絡能夠一分爲二,不影響性能指標的上報。性能指標將被緩存在內存中,直到達到必須發送的大小或數目纔會被髮送。接着,最老的性能數據包就會被丟棄,以確保 forwarder 有足夠的存儲空間。

DogStatsD

DogStatsD 是用 python 實現的 esty statsD 性能指標整合進程,用於經過UDP協議接收和積累任意的性能指標,這樣咱們就能夠度量自定義代碼,而不會增長延遲。

關於dgostatsd的更多信息請看這裏

Agent的優勢

想要了解使用 Datadog agent 究竟有什麼好處,能夠參考下面的兩篇文章:

再說幾句

Dustin Lawler 關於 Datadog Agent 的原理的講解思路清晰。Datadog 自己在國外擁有 Facebook、Airbnb 等重量級客戶,被業界極力看好。而國內一些大公司的運維人員每每只知道 Zabbix 等開源產品,對 StatsD 系監控產品的瞭解比較少。而 StatsD 做爲新世代的系統監控的核心,目前還處於技術累計過程。愈來愈多的開源項目加入到它的懷抱中,也有愈來愈多的公司,在此基礎之上加入了研發的資源,或者在與之相關的其餘領域中投入成本。

國內也有一款像 Datadog 同樣基於 StatsD,提供一體化監控解決方案的產品 Cloud Insight,可以監控大規模集羣、雲主機、Docker 容器,支持多種操做系統、數據庫、中間件等,在數據採集、計算和展示的基礎上,還擁有跨部門事件流展示、報警等功能,是一款 DevOps+ChatOps 理念的產品。

有關 StatsD 和 Cloud Insight 的更多內容,能夠參考如下文章:

本文轉自 OneAPM 官方博客

相關文章
相關標籤/搜索