Prometheus 遠程讀寫 Influxdb

Prometheus 遠程讀寫 Influxdb

Influxdb

InfluxDB 是一款開源的時序數據庫,是InfluxData(是一個公司,提供時序平臺)下的一個產品,使用Go語言開發。

時序數據庫

Time Series Database(TSDB)時序數據庫,是自帶時間戳索引的數據庫,每一條數據都帶了採樣時間,適用於做監控圖表,點擊,交易圖表(橫軸都是時間)。

Prometheus本地存儲遇到的問題

  • 高可用
    Prometheus的高可用很簡單,複製一臺一模一樣的機器,配置一模一樣,數據採集雙份,存儲雙份到本地,然後用lb做負載查詢,但是這樣將會迎來新的問題,假如一臺Prometheus故障, 10分鐘沒有采集到數據,那麼用lb查詢後端落到這臺的時候也是沒有數據的,因爲Prometheus沒有做到無狀態,依賴本地數據。
  • 水平擴容
    如果Prometheus按照類型拆分,將抓取目標分爲,基礎指標和業務指標,再加上高可用就要部署兩臺基礎Prometheus,兩臺業務Prometheus,這樣又會迎來另外一個問題,數據分散在不同的地方, 沒有一個全局的查詢api。

Prometheus 使用 influxdb 做存儲

  • 使用docker構建測試環境

    docker-compose 文件如下:

version: '3'
services:
  prometheus:
    image: docker.io/prom/prometheus
    container_name: prometheus
    networks:
      - georgie-network
    ports:
      - "9090:9090"
    volumes: 
      - prometheus:/prometheus
  grafana:
    image: docker.io/influxdb
    container_name: influxdb
    ports: 
      - "8086:8086"
    depends_on:
      - prometheus
    volumes: 
      - influxdb:/var/lib/influxdb
    networks:
      - georgie-network
networks:
  georgie-network:
      external: true
volumes:
  prometheus:
    external: true
  influxdb:
    external: true
  • 在influxdb中創建一個prometheus的庫

curl -XPOST http://localhost:8086/query --data-urlencode "q=CREATE DATABASE prometheus"

  • 修改Prometheus容器中的prometheus.yml配置對接adapter
# /etc/prometheus/prometheus.yml
remote_write:
  - url: "http://influxdb:8086/api/v1/prom/write?db=prometheus"
remote_read:
  - url: "http://influxdb:8086/api/v1/prom/read?db=prometheus"
  • prometheus重新加載配置

    kill -HUP 1	# 1是prometheus的進程id
    
  • influxdb 中查看採集到的數據

    [root@localhost influxdb]# docker exec -it influxdb sh
    # influx
    Connected to http://localhost:8086 version 1.7.8
    InfluxDB shell version: 1.7.8
    > use prometheus
    Using database prometheus
    > show measurements
    name: measurements
    name
    ----
    go_gc_duration_seconds
    go_gc_duration_seconds_count
    go_gc_duration_seconds_sum
    ...........
    > select * from go_gc_duration_seconds limit 1
    name: go_gc_duration_seconds
    time                __name__               instance       job        quantile value
    ----                --------               --------       ---        -------- -----
    1569574282939000000 go_gc_duration_seconds localhost:9090 prometheus 0        0.000005895
    

官方文檔

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章