前言

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)

参考

[prometheus]基于influxdb2实现远端存储的更多相关文章

  1. Prometheus监控学习笔记之prometheus的远端存储

    0x00 概述 prometheus在容器云的领域实力毋庸置疑,越来越多的云原生组件直接提供prometheus的metrics接口,无需额外的exporter.所以采用prometheus作为整个集 ...

  2. 基于OceanStor Dorado V3存储之数据保护 Hyper 特性

    基于OceanStor Dorado V3存储之数据保护 Hyper 特性 1.1  快照 1.2  HyperCDP 1.3  HyperCopy 1.4  克隆(HyperClone) 1.5   ...

  3. TKE用户故事 | 作业帮检索服务基于Fluid的计算存储分离实践

    作者 吕亚霖,2019年加入作业帮,作业帮基础架构-架构研发团队负责人,在作业帮期间主导了云原生架构演进.推动实施容器化改造.服务治理.GO微服务框架.DevOps的落地实践. 张浩然,2019年加入 ...

  4. 【WP8.1开发】基于应用的联系人存储

    上一篇文章所吹的牛是访问系统(手机)上的联系人,当然那只是读不能改,这是自然的,要是让你能随便修改用户的联系人信息的话,那后果很严重,有些恶意开发者就有可能把”你的户口改成猪“. 但是,API也允许应 ...

  5. 基于catalog 创建RMAN存储脚本

    --============================== -- 基于catalog 创建RMAN存储脚本 --============================== 简言之,将rman的 ...

  6. [大牛翻译系列]Hadoop(19)MapReduce 文件处理:基于压缩的高效存储(二)

    5.2 基于压缩的高效存储(续) (仅包括技术27) 技术27 在MapReduce,Hive和Pig中使用可分块的LZOP 如果一个文本文件即使经过压缩后仍然比HDFS的块的大小要大,就需要考虑选择 ...

  7. [大牛翻译系列]Hadoop(18)MapReduce 文件处理:基于压缩的高效存储(一)

    5.2 基于压缩的高效存储 (仅包括技术25,和技术26) 数据压缩可以减小数据的大小,节约空间,提高数据传输的效率.在处理文件中,压缩很重要.在处理Hadoop的文件时,更是如此.为了让Hadoop ...

  8. prometheus 基于DNS的目标发现

    prometheus 基于DNS的目标发现 DNS服务发现依赖于查询A.AAAA或SRV DNS记录. 1.基于 SRV 记录发现 scrape_configs: - job_name: 'webap ...

  9. prometheus 基于文件的目标发现

    prometheus 基于文件的目标发现 1.创建目录 cd /usr/local/prometheus/conf mkdir -pv targets/{nodes,docker} 2.修改prome ...

  10. 服务注册发现consul之四: 分布式锁之四:基于Consul的KV存储和分布式信号量实现分布式锁

    一.基于key/value实现 我们在构建分布式系统的时候,经常需要控制对共享资源的互斥访问.这个时候我们就涉及到分布式锁(也称为全局锁)的实现,基于目前的各种工具,我们已经有了大量的实现方式,比如: ...

随机推荐

  1. IPS 和 IDS

    IPS/IDS 什么是IPS和IDS IDS/IPS是检测和防止对网络服务器进行未授权的访问的系统.有许多产品同时有IDS和IPS的作用,作为加强企业信息安全所必须的系统 什么是IDS(Intrusi ...

  2. JavaWeb之04javaScript基础&DOM目录

    目录: 1.案例:在末尾添加节点(*****) ** 创建标签 createElement方法 ** 创建文本 createTextNode方法 ** 把文本添加到标签下面 appendChild方法 ...

  3. 音视频八股文(8)-- h264 AnnexB

    NALU(Network Abstract Layer Unit) ⾳视频编码在流媒体和⽹络领域占有重要地位:流媒体编解码流程⼤致如下图所示: H264简介 H.264从1999年开始,到2003年形 ...

  4. 2021-04-15:给定一个由字符串组成的数组strs,必须把所有的字符串拼接起来,返回所有可能的拼接结果中,字典序最小的结果。

    2021-04-15:给定一个由字符串组成的数组strs,必须把所有的字符串拼接起来,返回所有可能的拼接结果中,字典序最小的结果. 福大大 答案2021-04-15: "b"和&q ...

  5. AI 绘画 - 如何 0 成本在线体验 AI 绘画的魅力

    要想体验 AI 绘画,比较流行的三种方式是 Midjourney.OpenAI 的 DALL·E 2 以及 Stable Diffusion.而 Midjourney 已经停止免费试用,且使用价格不太 ...

  6. 3 分钟利用 FastGPT 和 Laf 将 ChatGPT 接入企业微信

    原文链接:https://forum.laf.run/d/556 FastGPT 是一个超级的 ChatGPT 平台项目,功能非常强大: 集成了 ChatGPT.GPT4 和 Claude 可以使用任 ...

  7. 发布 markdown 小功能:指定图片尺寸

    之前园子的 markdown 功能多年落后,这两年我们正在努力赶上. 今天发布一个 markdown 小功能,可以通过 markdown 语法指定图片尺寸. 指定宽度 =200x ![](https: ...

  8. postman接口关联-token值

    背景: 在测试工作中,测试鉴权的接口需要用到登录接口的token,需要我们先调用登录接口,获得token,然后把即时获得的token填入请求中发送请求,我们可以用设置全局变量的办法解决这个问题   实 ...

  9. CANoe工具的安装

    CANoe是德国Vector公司为汽车总线的开发而设计的一款总线开发环境,全称叫CAN open environment,用于分析和模拟CAN(Controller Area Network)和LIN ...

  10. 解决适用EntityFramework生成时报错“无法解析依赖项。"EntityFramework 6.4.4" 与 ' EntityFramework.zh-Hans 6.2.0 约束:EntityFramework(=6.2.0)'不兼容。"

    起因:通过vs2022创建mvc项目时, 执行添加"包含视图的MVC5控制器(使用Entity Framework)时 点击添加,出现错误提示  解决方法: 在您的解决方案资源管理器中,右键 ...