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
更多推荐
已为社区贡献3条内容
所有评论(0)