B i M A P

InfluxDB|How to Scrape metrics from Prometheus




influxdb



Prometheus 與 InfluxDB 是兩個極其相似的產品,一樣都是源自於 Golang 開發而成的 TSDB,可以支援 1000 個節點以下的 metrics (大約),也都有許多 Dashboard Template 可以使用,而最大的差異為 Prometheus 並沒有原生支援 cluster。如果節點數超過 1000 個,或資料的保存以及系統持續性,是重要考量的前提下,Prometheus 因為是單節點的,可能就需要採用 Federation 的方式來達成 Scale,此時 InfluxDB 原生的 Cluster 可能就會是一個更好,又便利的選擇。


如果 Prometheus 已是既有的服務,並穩定在正式區運行,InfluxDB 也可以支援 Scrape Prometheus 的資料,並存放至 InfluxDB 的 Bucket 中,方法有三:

PS: 如果是使用 InfluxDB OSS 版本,採用 Telegraf 的方式較佳,其他方式都會有錯誤。


Use Telegraf

## Collect Prometheus formatted metrics 
[[inputs.prometheus]]
urls = ["http://example.com/metrics"]
metric_version = 2
## Write Prometheus formatted metrics to InfluxDB
[[outputs.influxdb_v2]]
urls = ["http://localhost:8086"]
token = "$INFLUX_TOKEN"
organization = "example-org"
bucket = "example-bucket"


Use prometheus.scrape()

import "experimental/prometheus"
prometheus.scrape(url: "http://my.prometheus.com/metrics")
|> to(bucket: "my-prometheus-bucket")

透過 Flux 語法的好處是,可以在 InfluxDB 的 Task 中,再額外加入 aggregation 邏輯,將 Prometheus 的資料多做一次整理,縮小資料量,是三個方法最有彈性的做法。


Use an InfluxDB scraper

進入到 Data (Load Data) > Scrapers 的頁面中,並帶入以下資訊

influxdb scraper




聯絡我們快速上手


延伸閱讀
winstonlu的大頭照
ELK 達人

我們致力於 ELK 的各種應用,協助企業建置相關服務。我們也提供基於 ELK 的各種解決方案,有任何問題,歡迎加入我們的官方 Line,或來信詢問,期待與您面對面的機會。