導讀: Telegraf 是 InfluxData 下的子項目,是由 Go 語言編寫的 metrics 收集、處理、聚合的代理。其設計目標是較小的內存使用,通過插件來構建各種服務和第三方組件的 metrics 收集。Telegraf 具有插件或集成功能,可以直接從其運行的系統中獲取各種指標,從第三方API中提取指標,甚至通過 statsd 和 Kafka 消費者服務監聽指標。它還具有輸出插件,可將指標發送到各種其他數據存儲,服務,和消息隊列,包括InfluxDB,Graphite,OpenTSDB,Datadog,Librato,Kafka,MQTT,NSQ等等。
相比於 Logstash 或者 Mozilla 的 Heka,它有了更多的內置實用 input 插件,更容易的監控起系統和各種常見服務的各種參數。與 InfluxDB 結合使用起來使用十分方便。
術語介紹
Input Data Formats
輸入數據格式。Telegraf 能夠將以下輸入數據格式解析為指標:
- InfluxDB Line Protocol
- JSON
- Graphite
- Value, ie: 45 or “booyah”
- Nagios (exec input only)
- Collectd
Output Plugins
輸出數據格式。Telegraf 能夠將指標序列化為以下輸出數據格式:
- InfluxDB Line Protocol
- JSON
- Graphite
Aggregator and Processor Plugins
聚合器和處理器插件。作用如下。
Aggregator Plugins
聚合插件,數據特征聚合(例如:mean, min, max, quantiles等)。一般情況下,可以不用設置。
Agent
agent
是Telegraf的核心部分,它可以從聲明的輸入插件中收集指標,並根據給定配置啟用的插件將指標發送到聲明的輸出插件。
aggregator plugin
聚合器插件從輸入插件中接收原始指標,並從中創建匯總指標。然后將匯總指標傳遞到配置的輸出插件。
batch size
Telegraf
代理將批量發送指標分發給輸出插件。批量大小控制 Telegraf
發送到輸出插件的每個寫入批次的大小。
collection interval
收集抖動用於防止每個輸入插件同時收集指標,這可以對系統產生可測量的影響。每個收集間隔,每個輸入插件將在收集指標之前休眠0到收集抖動之間的隨機時間。
flush interval
從每個輸出插件到其目的地的數據刷新的全局間隔。該值不應設置為低於收集間隔。
flush jitter
刷新抖動用於防止每個輸出插件同時發送寫入,這可能會覆蓋一些數據接收器。每個刷新間隔,每個輸出插件將在發布度量之前休眠一個隨機時間在零和刷新抖動之間。這有助於在運行大量 Telegraf
實例時平滑寫入峰值。
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
代理之前將其自己的邏輯應用於攝取的指標。
安裝
# 使用 root 賬號 # Ubuntu & Debian wget https://dl.influxdata.com/telegraf/releases/telegraf_1.3.0-1_amd64.deb sudo dpkg -i telegraf_1.3.0-1_amd64.deb # RedHat & CentOS wget https://dl.influxdata.com/telegraf/releases/telegraf-1.3.0-1.x86_64.rpm sudo yum localinstall telegraf-1.3.0-1.x86_64.rpm # 查看幫助 telegraf --help
配置文件
/etc/telegraf/telegraf.conf 服務器性能監控需要修改的地方。 # hostname相當於 agent 的名稱 或 服務器的名稱 hostname = nginx_192.168.1.10 # 輸出插件,假設我們將收集的數據輸出到 InfluxDB [[outputs.influxdb]] urls = ["http://192.168.1.1:8086"] database = "telegraf" # required retention_policy = "rp_day_30" write_consistency = "any" timeout = "5s" username = "telegraf" password = "xxxxxxxx" # 信息輸入插件 # 系統監控之cpu [[inputs.cpu]] percpu = true totalcpu = true collect_cpu_time = false # 系統監控之硬盤 [[inputs.disk]] # 掛載節點 mount_points = ["/"] # 忽略文件系統類型的一些掛載點 ignore_fs = ["tmpfs", "devtmpfs", "devfs"] # 系統監控之硬盤IO [[inputs.diskio]] #采用默認配置即可 # 系統監控之內核 [[inputs.kernel]] # 系統監控之內存 [[inputs.mem]] # 系統監控之進程 [[inputs.processes]] # 系統監控之swap [[inputs.swap]] # 系統監控之system [[inputs.system]] # 收集網絡接口使用情況的指標 [[inputs.net]] # 監控的網卡,可以通過 "sar -n DEV 1 4" 查看網卡流量 interfaces = ["eth0"] # 收集內核snmp計數器和網絡接口統計信息 [[inputs.nstat]] proc_net_netstat = "/proc/net/netstat" proc_net_snmp = "/proc/net/snmp" proc_net_snmp6 = "/proc/net/snmp6" dump_zeros = true
還可以收集其它監控數據,例如:Nginx、Redis、MySQL、Kafka、JVM、HTTPJSON、Exec等。詳細內容請看Telegraf Input Plugins。
啟動服務
service telegraf start
可以根據默認配置生產一個新的配置,新配置中只存在制定的指標。
telegraf -sample-config -input-filter cpu:mem -output-filter influxdb > telegraf.conf
運行 telegraf
,啟用制定的輸入和輸出插件。
telegraf --config telegraf.conf -input-filter cpu:mem -output-filter influxdb
啟動后,在 InfluxDB
中,就可以看到數據了。
參考: