1. 程式人生 > >go監控方案(4) -- telegraf

go監控方案(4) -- telegraf

Telegraf 學習

telegraf 整個包非常大,在這個方案只用了statsd外掛部分的修改,所以更具體的需要根據自己需要進行學習,如果只是使用本方案就可以略過。

開始

Telegraf是一個外掛驅動的伺服器代理,用於收集和報告指標,是TICK堆疊的第一部分。 Telegraf具有直接從其執行的系統中提取各種指標的外掛,從第三方API提取指標,甚至通過statsd和Kafka消費者服務監聽指標。 它還具有輸出外掛,可將指標傳送到各種其他資料儲存,服務和訊息佇列,包括InfluxDB,Graphite,OpenTSDB,Datadog,Librato,Kafka,MQTT,NSQ等等。

下載

download

安裝

mac 版本

  1. 安裝
 brew update
 brew install telegraf
  1. 下次登入啟動telegraf
ln -sfv /usr/local/opt/telegraf/*.plist ~/Library/LaunchAgents
  1. 載入 telegraf
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.telegraf.plist
  1. 如果不用launchctl, 只需要使用下面命令啟動
telegraf -config /usr/local/etc/telegraf.conf

linux 配置檔案位置

/etc/telegraf/telegraf.conf

啟動

sudo service telegraf start

systemctl start telegraf

網路配置

Telegraf提供多個服務輸入外掛,可能需要自定義埠。

配置檔案: /etc/telegraf/telegraf.conf

NTP

Telegraf使用主機的UTC本地時間為資料分配時間戳。 使用網路時間協議(NTP)同步主機之間的時間; 如果主機的時鐘與NTP不同步,則資料的時間戳可能不準確。

config

使用預設輸入和輸出外掛建立配置檔案。

telegraf config > telegraf.conf

建立具有特定輸入和輸出的配置檔案

telegraf --input-filter <pluginname>[:<pluginname>] --output-filter <outputname>[:<outputname>] config > telegraf.conf

例子

在啟動Telegraf伺服器之前,您需要編輯和/或建立一個初始配置,指定所需的輸入(指標來自哪裡)和輸出(指標所在的位置)。

在這裡,我們將生成一個配置檔案,同時使用-input-filter標誌指定所需的輸入,並使用-output-filter標誌指定所需的輸出。

在下面的示例中,我們建立了一個名為telegraf.conf的配置檔案,其中包含兩個輸入: 一個讀取有關係統cpu使用情況(cpu)的指標,另一個讀取有關係統記憶體使用情況(mem)的指標。 我們將InfluxDB指定為所需的輸出。

telegraf -sample-config -input-filter cpu:mem -output-filter influxdb > telegraf.conf

入門

一旦Telegraf啟動並執行,它將開始收集資料並將其寫入所需的輸出。

我們將在下面的InfluxDB中展示cpu和mem資料的樣子。

influxdb 檢視 measurements

> SHOW MEASUREMENTS
name: measurements
------------------
name
cpu
mem

檢視 field keys

> SHOW FIELD KEYS
name: cpu
---------
fieldKey                fieldType
usage_guest             float
usage_guest_nice	    float
usage_idle		        float
usage_iowait		    float
usage_irq		        float
usage_nice		        float
usage_softirq		    float
usage_steal		        float
usage_system		    float
usage_user		        float

name: mem
---------
fieldKey                fieldType
active			        integer
available		        integer
available_percent	    float
buffered		        integer
cached			        integer
free			        integer
inactive		        integer
total			        integer
used			        integer
used_percent		    float

選擇一個數據樣本 field usage_idlecpu_usage_idle :

> SELECT usage_idle FROM cpu WHERE cpu = 'cpu-total' LIMIT 5
name: cpu
---------
time			               usage_idle
2016-01-16T00:03:00Z	 97.56189047261816
2016-01-16T00:03:10Z	 97.76305923519121
2016-01-16T00:03:20Z	 97.32533433320835
2016-01-16T00:03:30Z	 95.68857785553611
2016-01-16T00:03:40Z	 98.63715928982245

請注意,時間戳以十舍五入的間隔發生(即:00:10:20,依此類推) - 這是一個可配置的設定。

概念

指標 metrics

Telegraf指標是用於在處理期間對資料建模的內部表示。 這些指標非常基於InfluxDB的資料模型,包含四個主要元件:

Measurement name 度量名稱:度量標準的描述和名稱空間。 Tags 標籤:鍵/值字串對,通常用於標識度量標準。 Fields 欄位:鍵入的鍵/值對,通常包含度量標準資料。 Timestamp 時間戳:與欄位關聯的日期和時間。

此度量標準型別僅存在於記憶體中,必須轉換為具體表示才能傳輸或檢視。

Telegraf為這些轉換提供輸出資料格式(也稱為序列化器)。

Telegraf的預設序列器轉換為InfluxDB線路協議,該協議提供Telegraf指標的高效能和一對一直接對映。

聚合器和處理器外掛

┌───────────┐
│           │
│    CPU    │───┐
│           │   │
└───────────┘   │
                │
┌───────────┐   │                                              ┌───────────┐
│           │   │                                              │           │
│  Memory   │───┤                                          ┌──▶│ InfluxDB  │
│           │   │                                          │   │           │
└───────────┘   │    ┌─────────────┐     ┌─────────────┐   │   └───────────┘
                │    │             │     │Aggregate    │   │
┌───────────┐   │    │Process      │     │ - mean      │   │   ┌───────────┐
│           │   │    │ - transform │     │ - quantiles │   │   │           │
│   MySQL   │───┼──▶ │ - decorate  │────▶│ - min/max   │───┼──▶│   File    │
│           │   │    │ - filter    │     │ - count     │   │   │           │
└───────────┘   │    │             │     │             │   │   └───────────┘
                │    └─────────────┘     └─────────────┘   │
┌───────────┐   │                                          │   ┌───────────┐
│           │   │                                          │   │           │
│   SNMP    │───┤                                          └──▶│   Kafka   │
│           │   │                                              │           │
└───────────┘   │                                              └───────────┘
                │
┌───────────┐   │
│           │   │
│  Docker   │───┘
│           │
└───────────┘

處理器外掛(Processor plugins)在通過時處理指標,並根據它們處理的值立即發出結果。例如,這可能是列印所有指標或向所有通過的指標新增標記。

聚合器(Aggregator plugins)通常用於發出新的聚合度量,例如執行平均值,最小值,最大值,分位數或標準偏差。 因此,所有聚合器外掛都配置了句點。週期是每個聚合表示的度量視窗的大小。換句話說,發出的聚合度量將是過去時段秒的聚合值。 由於許多使用者只關心他們的聚合而不是每個收集的度量標準,因此還有一個drop_original引數,它告訴Telegraf只發出聚合而不是原始指標。

注意:由於聚合器外掛僅在其句點內聚合度量標準,因此不支援歷史資料。換句話說,如果您的指標時間戳超過now() - period過去的時間段,則不會對其進行彙總。

術語表

agent

代理是Telegraf的核心部分,它從宣告的輸入外掛收集指標,並根據給定配置啟用的外掛將指標傳送到宣告的輸出外掛。

aggregator plugin

Aggregator外掛從輸入外掛接收原始指標並從中建立聚合指標。 然後將聚合度量傳遞給配置的輸出外掛。

batch size 批量大小

Telegraf代理會批量傳送指標到輸出外掛,而不是單獨傳送。 批處理大小控制Telegraf傳送到輸出外掛的每個寫批處理的大小。

collection interval 收集間隔

從每個輸入外掛收集資料的預設全域性間隔。 每個輸入外掛的配置都可以覆蓋收集間隔。

collection jitter 收集抖動

集合抖動用於防止每個輸入外掛同時收集指標,這可能對系統產生可測量的影響。 每個收集間隔,每個輸入外掛將在收集指標之前在零和收集抖動之間休眠一段隨機時間。

flush interval 重新整理間隔

將資料從每個輸出外掛重新整理到其目標的全域性間隔。 不應將此值設定為低於收集間隔。

input plugin 輸入外掛

輸入外掛主動收集指標並將其交付給核心代理,其中聚合器,處理器和輸出外掛可以對指標進行操作。 要啟用輸入外掛,需要在Telegraf的配置檔案中啟用和配置。

metric buffer 度量緩衝區

當寫入輸出外掛失敗時,度量緩衝區會快取各個度量標準。 Telegraf將在成功寫入輸出後嘗試重新整理緩衝區。 當此緩衝區填滿時,將首先刪除最舊的度量標準。

output plugin 輸出外掛

輸出外掛將指標傳遞到其配置的目標。 要啟用輸出外掛,需要在Telegraf的配置檔案中啟用和配置。

precision 精確

精度配置設定確定從輸入外掛接收的點中保留多少時間戳精度。 所有傳入的時間戳都被截斷為給定的精度。 然後,Telegraf用零填充截斷的時間戳以建立納秒時間戳; 輸出外掛將以納秒為單位發出時間戳。 有效精度為ns,us或μs,ms和s。

例如,如果精度設定為ms,則納秒時間戳1480000000123456789將以毫秒精度截斷為1480000000123,然後用零填充以生成新的,不太精確的納秒時間戳1480000000123000000.輸出外掛不會進一步改變時間戳。 服務的輸入外掛忽略精度設定。

processor plugin 處理器外掛

處理器外掛轉換,修飾和/或過濾由輸入外掛收集的指標,將轉換後的指標傳遞給輸出外掛。

service input plugin 服務輸入外掛

服務輸入外掛是在Telegraf代理執行時以被動收集模式執行的輸入外掛。 他們在套接字上偵聽已知的協議輸入,或者在將它們提供給Telegraf代理之前將其自己的邏輯應用於攝取的度量標準。

外掛

輸入外掛

Telegraf輸入外掛與InfluxData時間序列平臺一起使用,以從系統,服務或第三方API收集指標。 所有指標都是從您在配置檔案中啟用和配置的輸入中收集的。

通過執行telegraf --usage <service-input-name>檢視每個服務輸入的使用說明。

支援的Telegraf輸入外掛Telegraf input plugins

輸出外掛

Telegraf允許使用者在配置檔案中指定多個輸出接收器。

支援的Telegraf輸出外掛Telegraf output plugins

聚合器外掛

BasicStats

外掛ID: basicstats

所述BasicStats聚合器外掛給出count,max,min,mean,s2(方差),和stdev用於一組值,發光聚合每個週期秒

Histogram 直方圖

外掛ID: histogram

所述直方圖聚合器外掛建立包含的範圍內的欄位值的計數的直方圖。

新增到儲存桶的值也會新增到分發中的較大儲存桶中。這會建立累積直方圖。

與其他Telegraf聚合器外掛一樣,度量標準每秒都會發出。但是,儲存桶計數不會在不同時段之間重置,並且在Telegraf執行時將非嚴格增加。

MINMAX

外掛ID: minmax

在極大極小聚合器外掛聚集體min和max它看到每個欄位的值,發射都彙集每個週期秒。

ValueCounter

外掛ID: valuecounter

該ValueCounter聚合外掛計算值的領域中發生併發出計數器一次“期間”秒。

ValueCounter聚合器外掛的用例是當您使用Logparser輸入外掛處理HTTP訪問日誌並想要計算HTTP狀態程式碼時。

必須使用fields配置指令配置要計數的欄位。如果未提供任何欄位,則外掛不會計算任何欄位。結果以欄位形式發出,格式為originalfieldname_fieldvalue = count。

ValueCounter只能在型別的欄位int,bool或string。正在刪除浮動欄位以防止建立太多欄位。

處理器外掛

Telegraf processor plugins

參考

Telegraf 1