telegraf 自身包好了自己處理metrics 的數據模型,以及出爐方法
metrics
Telegraf指標是用於在處理期間對數據建模的內部表示。這些指標完全基於InfluxDB的數據模型,包含四個主要組件:
- 度量名稱:度量標准的描述和命名空間。
- 標簽:鍵/值字符串對,通常用於標識度量標准。
- 字段:鍵入的鍵/值對,通常包含度量標准數據。
- 時間戳:與字段關聯的日期和時間。
此度量標准類型僅存在於內存中,必須轉換為具體表示才能傳輸或查看。Telegraf 為這些轉換提供輸出數據格式(也稱為序列化器)。
Telegraf的默認串行器轉換為nfluxDB Line Protocol,,該協議提供Telegraf指標的高性能和一對一直接映射。
聚合以及處理插件
除輸入插件和輸出插件外,Telegraf還包括聚合器和處理器插件,用於在通過Telegraf時聚合和處理指標。
- 參考圖
- 說明
處理器插件在通過時處理指標,並根據它們處理的值立即發出結果。例如,這可能是打印所有指標或向所有通過的指標添加標記。
另一方面,聚合器插件有點復雜。聚合器通常用於發出新的聚合度量,例如運行平均值,最小值,最大值,分位數或標准偏差。因此,
所有聚合器 插件都配置了一個period。這period是每個聚合表示的度量窗口的大小。換句話說,發出的 聚合度量將是過去period秒的聚合值。
由於許多用戶只關心他們的聚合而不是每個收集的度量標准,因此還有一個drop_original參數,它告訴Telegraf只發出聚合而不是原始指標。
注意由於聚合器插件僅在其句點內聚合度量標准,因此不支持歷史數據。換句話說,如果您的指標時間戳比now() - period過去多,則不會聚合
術語表
- agent
agent是Telegraf的核心部分,它從聲明的輸入插件收集指標,並根據給定配置啟用的插件將指標發送到聲明的輸出插件
關聯內容: input plugin, output plugin - aggregator plugin
Aggregator插件從輸入插件接收原始指標並從中創建聚合指標。然后將聚合度量傳遞給配置的輸出插件。
關聯內容: input plugin, output plugin, processor plugin - batch size
代理會批量發送指標到輸出插件,而不是單獨發送。批處理大小控制Telegraf發送到輸出插件的每個寫批處理的大小
關聯內容: output plugin - collection interval
從每個輸入插件收集數據的默認全局間隔。每個輸入插件的配置都可以覆蓋收集間隔。
關聯內容: input plugin - collection jitter
用於防止每個輸入插件同時收集指標,這可能對系統產生可測量的影響。每個收集間隔,每個輸入插件將在收集指標之前在零和收集抖動
之間休眠一段隨機時間
關聯內容: collection interval, input plugin - flush interval
將數據從每個輸出插件刷新到其目標的全局間隔。不應將此值設置為低於收集間隔。
關聯內容: collection interval, flush jitter, output plugin - flush jitter
刷新抖動用於防止每個輸出插件同時發送寫入,這可能會淹沒某些數據接收器。每個刷新間隔,每個輸出插件將在發出指標之前在零和刷新抖動之間休眠一段隨機時間。這有助於在運行大量Telegraf實例時平滑寫入峰值。
關聯內容: flush interval, output plugin - input plugin
輸入插件主動收集指標並將其交付給核心代理,其中聚合器,處理器和輸出插件可以對指標進行操作。要激活輸入插件,需要在Telegraf的配置文件中啟用和配置
關聯內容: aggregator plugin, collection interval, output plugin, processor plugin - metric buffer
當寫入輸出插件失敗時,指標緩沖區會緩存各個指標標准。Telegraf將在成功寫入輸出后嘗試刷新緩沖區。當此緩沖區填滿時,將首先刪除最舊的指標標准
關聯內容: output plugin - output plugin
輸出插件將指標傳遞到其配置的目標。要激活輸出插件,需要在Telegraf的配置文件中啟用和配置。
關聯內容: aggregator plugin, flush interval, input plugin, processor plugin - precision
精度配置設置確定從輸入插件接收的點中保留多少時間戳精度。所有傳入的時間戳都被截斷為給定的精度。然后,Telegraf用零填充截斷的時間戳以創建納秒時間戳; 輸出插件將以納秒為單位發出時間戳。有效精度為ns,us或者µs,ms和s。
例如,如果精度設置為ms,則納秒時間戳1480000000123456789將被截斷為1480000000123毫秒精度,然后用零填充以生成新的,不太精確的納秒時間戳1480000000123000000。輸出插件不會進一步改變時間戳。服務輸入插件忽略精度設置。
關聯內容: aggregator plugin, input plugin, output plugin, processor plugin, service input plugin - processor plugin
處理器插件轉換,修飾和/或過濾由輸入插件收集的指標,將轉換后的指標傳遞給輸出插件。
關聯內容: aggregator plugin, input plugin, output plugin - service input plugin
service input plugin是在Telegraf代理運行時以被動收集模式運行的輸入插件。他們在套接字上偵聽已知的協議輸入,或者在將它們提供給Telegraf代理之前將其自己的邏輯應用於攝取的度量標准
關聯內容: aggregator plugin, input plugin, output plugin, processor plugin
說明
benthos 基於golang 的pipeline 數據處理與telegraf 是很類似的,而且也是一個不錯的數據收集處理工具