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
    

官方文档

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐