[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
- docker拉取镜像
docker pull influxdb:2.3.0
- 生成配置文件
# 创建挂载目录
mkdir -p /home/apps/influxdb/{conf,data}
docker run --rm influxdb:2.3.0 influxd print-config > /home/apps/influxdb/conf/config.yml
- 创建容器
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
- 浏览器访问 IP:8086 ,配置账户、bucket等。并获取token

安装telegraf
- docker拉取镜像
docker pull telegraf:1.23
- 生成配置文件
mkdir -p /home/apps/telegraf/conf
docker run --rm telegraf:1.23 telegraf config > /home/apps/telegraf/conf/telegraf.conf
- 修改配置文件,示例。主要是 "
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"]
- 创建容器
docker run -p 1234:1234 \
-v /home/apps/telegraf/conf/telegraf.conf:/etc/telegraf/telegraf.conf:ro \
--name=telegraf -d telegraf:1.23
安装prometheus
- 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"
- 启动prometheus
nohup /home/apps/prometheus/prometheus --config.file=/home/apps/prometheus/prometheus.yml --web.listen-address=:9100 > /dev/null 2>&1 &
安装node_exporter
- docker或者二进制安装都行。这里用的二进制安装方式,安装比较简单,此处不再赘述,可参考底部的链接"搭建基本的Prometheus监控系统"。
- 启动
nohup /home/apps/node_exporter/node_exporter --web.listen-address=":9090" > /dev/null 2>&1 &
安装grafana
- docker安装
docker pull grafana/grafana:latest
docker -p 3000:3000 --name grafana grafana/grafana:latest
- 使用默认账密 admin/admin 在浏览器登录grafana的控制台。(IP:3000)
- 添加prometheus的数据源
- 导入ID为10242的dashboard(其它ID:12633)

参考
- 简书 - rekca - prometheus+influxdb2.0+grafana打造监控系统
- 官方文档 - telegraf - v1.23 configuration
- 官方文档 - Prometheus Remote Write Support with InfluxDB 2.0
- Rainux - 搭建基本Prometheus监控系统
- 陈金窗、刘政委、张其栋、郑少斌 - 《Prometheus监控技术与实践》,机械工业出版社
[prometheus]基于influxdb2实现远端存储的更多相关文章
- Prometheus监控学习笔记之prometheus的远端存储
0x00 概述 prometheus在容器云的领域实力毋庸置疑,越来越多的云原生组件直接提供prometheus的metrics接口,无需额外的exporter.所以采用prometheus作为整个集 ...
- 基于OceanStor Dorado V3存储之数据保护 Hyper 特性
基于OceanStor Dorado V3存储之数据保护 Hyper 特性 1.1 快照 1.2 HyperCDP 1.3 HyperCopy 1.4 克隆(HyperClone) 1.5 ...
- TKE用户故事 | 作业帮检索服务基于Fluid的计算存储分离实践
作者 吕亚霖,2019年加入作业帮,作业帮基础架构-架构研发团队负责人,在作业帮期间主导了云原生架构演进.推动实施容器化改造.服务治理.GO微服务框架.DevOps的落地实践. 张浩然,2019年加入 ...
- 【WP8.1开发】基于应用的联系人存储
上一篇文章所吹的牛是访问系统(手机)上的联系人,当然那只是读不能改,这是自然的,要是让你能随便修改用户的联系人信息的话,那后果很严重,有些恶意开发者就有可能把”你的户口改成猪“. 但是,API也允许应 ...
- 基于catalog 创建RMAN存储脚本
--============================== -- 基于catalog 创建RMAN存储脚本 --============================== 简言之,将rman的 ...
- [大牛翻译系列]Hadoop(19)MapReduce 文件处理:基于压缩的高效存储(二)
5.2 基于压缩的高效存储(续) (仅包括技术27) 技术27 在MapReduce,Hive和Pig中使用可分块的LZOP 如果一个文本文件即使经过压缩后仍然比HDFS的块的大小要大,就需要考虑选择 ...
- [大牛翻译系列]Hadoop(18)MapReduce 文件处理:基于压缩的高效存储(一)
5.2 基于压缩的高效存储 (仅包括技术25,和技术26) 数据压缩可以减小数据的大小,节约空间,提高数据传输的效率.在处理文件中,压缩很重要.在处理Hadoop的文件时,更是如此.为了让Hadoop ...
- prometheus 基于DNS的目标发现
prometheus 基于DNS的目标发现 DNS服务发现依赖于查询A.AAAA或SRV DNS记录. 1.基于 SRV 记录发现 scrape_configs: - job_name: 'webap ...
- prometheus 基于文件的目标发现
prometheus 基于文件的目标发现 1.创建目录 cd /usr/local/prometheus/conf mkdir -pv targets/{nodes,docker} 2.修改prome ...
- 服务注册发现consul之四: 分布式锁之四:基于Consul的KV存储和分布式信号量实现分布式锁
一.基于key/value实现 我们在构建分布式系统的时候,经常需要控制对共享资源的互斥访问.这个时候我们就涉及到分布式锁(也称为全局锁)的实现,基于目前的各种工具,我们已经有了大量的实现方式,比如: ...
随机推荐
- IPS 和 IDS
IPS/IDS 什么是IPS和IDS IDS/IPS是检测和防止对网络服务器进行未授权的访问的系统.有许多产品同时有IDS和IPS的作用,作为加强企业信息安全所必须的系统 什么是IDS(Intrusi ...
- JavaWeb之04javaScript基础&DOM目录
目录: 1.案例:在末尾添加节点(*****) ** 创建标签 createElement方法 ** 创建文本 createTextNode方法 ** 把文本添加到标签下面 appendChild方法 ...
- 音视频八股文(8)-- h264 AnnexB
NALU(Network Abstract Layer Unit) ⾳视频编码在流媒体和⽹络领域占有重要地位:流媒体编解码流程⼤致如下图所示: H264简介 H.264从1999年开始,到2003年形 ...
- 2021-04-15:给定一个由字符串组成的数组strs,必须把所有的字符串拼接起来,返回所有可能的拼接结果中,字典序最小的结果。
2021-04-15:给定一个由字符串组成的数组strs,必须把所有的字符串拼接起来,返回所有可能的拼接结果中,字典序最小的结果. 福大大 答案2021-04-15: "b"和&q ...
- AI 绘画 - 如何 0 成本在线体验 AI 绘画的魅力
要想体验 AI 绘画,比较流行的三种方式是 Midjourney.OpenAI 的 DALL·E 2 以及 Stable Diffusion.而 Midjourney 已经停止免费试用,且使用价格不太 ...
- 3 分钟利用 FastGPT 和 Laf 将 ChatGPT 接入企业微信
原文链接:https://forum.laf.run/d/556 FastGPT 是一个超级的 ChatGPT 平台项目,功能非常强大: 集成了 ChatGPT.GPT4 和 Claude 可以使用任 ...
- 发布 markdown 小功能:指定图片尺寸
之前园子的 markdown 功能多年落后,这两年我们正在努力赶上. 今天发布一个 markdown 小功能,可以通过 markdown 语法指定图片尺寸. 指定宽度 =200x 和LIN ...
- 解决适用EntityFramework生成时报错“无法解析依赖项。"EntityFramework 6.4.4" 与 ' EntityFramework.zh-Hans 6.2.0 约束:EntityFramework(=6.2.0)'不兼容。"
起因:通过vs2022创建mvc项目时, 执行添加"包含视图的MVC5控制器(使用Entity Framework)时 点击添加,出现错误提示 解决方法: 在您的解决方案资源管理器中,右键 ...