[prometheus]基于influxdb2实现远端存储

本文涉及的产品
可观测监控 Prometheus 版,每月50GB免费额度
可观测可视化 Grafana 版,10个用户账号 1个月
简介: [prometheus]基于influxdb2实现远端存储

前言

Prometheus自带的时序数据库胜在使用方便,缺点在于难以维护,如果数据有问题,可能需要删除存储目录、重建目录再重启Prometheus,才能恢复正常。而且Prometheus自带的时序数据库不适合存储大量历史数据,也无法灵活扩展。为此,Prometheus提供了远端存储的方案,可以将数据存储到InfluxDB、OpenTSDB等时序数据库中。

在InfluxDB 2之前,InfluxDB提供远端写的API供Prometheus直接写数据,InfluxDB 2之后,需要通过 telegraf 才能将 Prometheus的监控数据存储到 InfluxDB 中。

环境

  • Prometheus版本:2.38
  • InfluxDB版本:2.3.0
  • Telegraf版本:1.23
  • node_exporter版本:1.3.1
  • Grafana版本:8.3.3
  • 系统版本:CentOS 7
  • docker版本:19.03

安装influxdb

  1. docker拉取镜像
docker pull influxdb:2.3.0
  1. 生成配置文件
# 创建挂载目录
mkdir -p /home/apps/influxdb/{conf,data}
docker run --rm influxdb:2.3.0 influxd print-config > /home/apps/influxdb/conf/config.yml
  1. 创建容器
docker run --name influxdb -p 8086:8086 \
  -v /home/apps/influxdb/data:/var/lib/influxdb2 \
  -v /home/apps/influxdb/conf/config.yml:/etc/influxdb2/config.yml \
  -d influxdb:2.3.0
  1. 浏览器访问 IP:8086 ,配置账户、bucket等。并获取token

安装telegraf

  1. docker拉取镜像
docker pull telegraf:1.23
  1. 生成配置文件
mkdir -p /home/apps/telegraf/conf
docker run --rm telegraf:1.23 telegraf config > /home/apps/telegraf/conf/telegraf.conf
  1. 修改配置文件,示例。主要是 "outputs.influxdb_v2"、"inputs.http_listener_v2"和"inputs.prometheus"这三块配置,其它都是默认的。篇幅限制,默认的注释全部删了,可导出默认配置后自行查看。默认未注释“outputs.influxdb”,需要注释掉。
[global_tags]
[agent]
  interval = "10s"
  round_interval = true
  metric_batch_size = 1000
  metric_buffer_limit = 10000
  collection_jitter = "0s"
  flush_interval = "10s"
  flush_jitter = "0s"
  precision = "0s"
  hostname = ""
  omit_hostname = false
[[outputs.influxdb_v2]]
  urls = ["http://192.168.0.20:8086"]
  token = "gXnmZO4ILBSHa0eivemfvXEz6EiAtv8kktKxn7Hz2sQ6ItUtfbyjCaRiSStIFJDzUV2wR2cfUE8Dkb6yLN1bIQ=="
  organization = "rainux"
  bucket = "prometheus"
[[inputs.cpu]]
  percpu = true
  totalcpu = true
  collect_cpu_time = false
  report_active = false
  core_tags = false
[[inputs.disk]]
  ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"]
[[inputs.diskio]]
[[inputs.kernel]]
[[inputs.mem]]
[[inputs.processes]]
[[inputs.swap]]
[[inputs.system]]
[[inputs.http_listener_v2]]
  service_address = ":1234"
  paths = ["/receive"]
  data_format = "prometheusremotewrite"
[[inputs.prometheus]]
  urls = ["http://192.168.0.20:9100/metrics"]
  1. 创建容器
docker run -p 1234:1234 \
  -v /home/apps/telegraf/conf/telegraf.conf:/etc/telegraf/telegraf.conf:ro \
  --name=telegraf -d telegraf:1.23

安装prometheus

  1. docker或者二进制安装都行。这里用的二进制安装方式,安装比较简单,此处不再赘述,可参考底部的链接"搭建基本的Prometheus监控系统"。prometheus.yml配置示例如下。
# my global config
global:
  scrape_interval: 15s
  evaluation_interval: 15s
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"
scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["192.168.0.20:9090"]
remote_write:
  - url: "http://192.168.0.20:1234/receive"
  1. 启动prometheus
nohup /home/apps/prometheus/prometheus --config.file=/home/apps/prometheus/prometheus.yml --web.listen-address=:9100 > /dev/null 2>&1 &

安装node_exporter

  1. docker或者二进制安装都行。这里用的二进制安装方式,安装比较简单,此处不再赘述,可参考底部的链接"搭建基本的Prometheus监控系统"。
  2. 启动
nohup /home/apps/node_exporter/node_exporter --web.listen-address=":9090" > /dev/null 2>&1 &

安装grafana

  1. docker安装
docker pull grafana/grafana:latest
docker -p 3000:3000 --name grafana grafana/grafana:latest
  1. 使用默认账密 admin/admin 在浏览器登录grafana的控制台。(IP:3000)
  2. 添加prometheus的数据源
  3. 导入ID为10242的dashboard(其它ID:12633)

参考

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
相关文章
|
5月前
|
存储 JSON Prometheus
如何精简 Prometheus 的指标和存储占用
如何精简 Prometheus 的指标和存储占用
|
存储 Prometheus Cloud Native
Prometheus实战--存储篇
Prometheus之于kubernetes(监控领域),如kubernetes之于容器编排。 随着heapster不再开发和维护以及influxdb 集群方案不再开源,heapster+influxdb的监控方案,只适合一些规模比较小的k8s集群。
5710 0
|
2月前
|
存储 Prometheus 监控
Prometheus 存储方案与优化
【8月更文第29天】Prometheus 是一个流行的开源监控系统,它使用时间序列数据库来存储监控数据。Prometheus 的时间序列数据库是基于本地文件系统的,这种设计提供了高吞吐量的读写能力,但同时也带来了存储方面的挑战。本文将详细介绍 Prometheus 存储的工作原理,并提出一些优化策略以减少磁盘占用。
79 0
|
3月前
|
弹性计算 Prometheus Cloud Native
SLS Prometheus存储问题之Union MetricStore在性能测试中是如何设置测试环境的
SLS Prometheus存储问题之Union MetricStore在性能测试中是如何设置测试环境的
|
3月前
|
存储 Prometheus Cloud Native
SLS Prometheus存储问题之为什么SLS时序引擎最终选择了使用C++实现PromQL的部分算子
SLS Prometheus存储问题之为什么SLS时序引擎最终选择了使用C++实现PromQL的部分算子
|
3月前
|
测试技术 UED 存储
SLS Prometheus存储问题之在使用内置降采样时,SLS自动选择适配的指标库该如何解决
SLS Prometheus存储问题之在使用内置降采样时,SLS自动选择适配的指标库该如何解决
|
3月前
|
存储 并行计算 开发工具
SLS Prometheus存储问题之相比客户端SDK聚合写入,SLS网关侧聚合写入有什么优势
SLS Prometheus存储问题之相比客户端SDK聚合写入,SLS网关侧聚合写入有什么优势
|
存储 Prometheus Kubernetes
对比开源丨Prometheus 服务多场景存储压测全解析
作为国内领先的云服务提供商,阿里云提供了优秀的可观测全套解决方案,阿里云 Prometheus 服务正是其中重要一环,相比于开源版本 Prometheus,阿里云的 Prometheus 服务无论是易用性、扩展性、性能均有大幅度提升。
对比开源丨Prometheus 服务多场景存储压测全解析
|
存储 Prometheus 监控
Prometheus 存储和集群|学习笔记(三)
快速学习 Prometheus 存储和集群
440 0
Prometheus 存储和集群|学习笔记(三)
|
存储 Prometheus 监控
k8s与监控--prometheus的远端存储
前言 prometheus在容器云的领域实力毋庸置疑,越来越多的云原生组件直接提供prometheus的metrics接口,无需额外的exporter。所以采用prometheus作为整个集群的监控方案是合适的。
3663 0