# AWS - CloudWatch Agent CollectD and StatsD


# CloudWatch Agent

AWS CloudWatch Agent 本身是一個統一的代理程式,用於從 EC2 Instance 以及內部部署 Server 收集系統級的 Metric 與 Log

  • 收集方式:從 OS Kernel 與標準來源收集指標 (CPU Usage, Memory, Disk I/O, Netflow)。也可以收集 log 將其傳送到 CloudWatch Logs
  • 使用時機:收集 infra 資料
  • 優點: AWS 原生支援,可以簡單的透過 SSM 安裝與管理
  • 支援 64bits Linux/Windows Server

# StatsD

StatsD 是開源的 network daemon 主要用在應用程式客製化指標收集

  • 收集方式:應用程式開發人員需要修改程式碼,將指標透過 UDP/TCP 協定傳送到 StatsD Daemon Process。StatsD 會把這些事件聚合起來 (EX: 每 10s 平均值,Count),然後由 CloudWatch Agent 將聚合後的資料推送到 CloudWatch
  • 使用時機:追蹤特定業務邏輯或應用程式內部事件,例如『使用者點擊按鈕次數』、『API 請求延遲時間』
  • 優點:易於開發人員在應用程式中實作客製化指標,支援 Linux 和 Windows。
  • 關鍵字: 「應用程式發送 (application sends metrics)」、「客製化應用程式指標 (custom application metrics)」、「計數器與計時器 (counters and timers)」。

# CollectD

Collectd 也是一個開源的統計資訊收集守護程序,具有高度的外掛程式架構。

  • 收集方式:它安裝在機器上,並使用各種內建或第三方外掛程式主動收集系統和應用程式效能指標。它收集的是「現成可用」的指標。
  • 使用時機:監控特定的服務或技術棧(例如 MySQL、PostgreSQL、Apache、Nginx 的特定內部指標),這些指標可以通過 collectd 的外掛程式自動抓取,而無需修改應用程式程式碼。
  • 優點:提供數百種外掛程式,涵蓋廣泛的技術領域,適合基礎設施和應用程式監控。
  • 限制:僅支援 Linux 作業系統。
  • 關鍵字: 「使用現有外掛程式 (leverage existing plugins)」、「自動收集服務指標 (automatically collects service metrics)」、「僅限 Linux (Linux only)」。

# Summary

  • CloudWatch Agent 內建功能 (含 procstat): 收集核心系統層級指標或特定程序的一般指標,設定簡單,無需修改應用程式。
  • StatsD: 應用程式主動推送客製化指標,需要修改程式碼,適用於 Windows 和 Linux,用於業務邏輯追蹤。
  • Collectd: 使用外掛程式自動拉取特定服務的豐富指標,無需修改應用程式,僅限 Linux。

# Reference

  • AWS - 使用 procstat 外掛程式收集程序指標