thanos prometheus 的高可用、长期存储二进制部署

news2024/11/20 11:29:59

1.简介

http://thanos.io/

thanos 是具有长期存储功能的开源、高可用性 Prometheus的集群组件。

  • 全局查询视图
    跨多个 Prometheus 服务器和集群查询指标

  • 无限保留
    使用对象存储扩展系统,不限时间保留指标。

  • Prometheus兼容
    兼容 Prometheus api,用于grafana

  • 降低采样以及块压缩
    在查询大时间范围或配置复杂的保留策略时,对历史数据进行降低采样以提高查询速度。

降低采样如何做:
正常情况下,每分钟一个数据点(指标样本)
为超过40 小时(2d)的块创建 5m 采样
为超过10 天(2w)的块创建 1h 采样

使得我们在大跨度时间内查询时,能够在不获取过多样本的情况下,保持查询的精度。

2. 架构

2.1 以sidecar方式部署

在这里插入图片描述

sidecar将TSDB块上传到对象存储,因为Prometheus每两小时生成一次。

2.2 以Receive方式部署

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l9GEi5uc-1681254793143)(assets/image-20230411165407-zjvmxta.png)]

使用Remote Write会增加Prometheus的内存占用。大多数情况内存使用量会增加约25%,也取决于指标数据的类型及大小,对于WAL中每个时序,远程 写入代码缓存序列ID到标签值的映射,大量序列将显著增加内存使用量。

2.3 基础组件

  • Query: 实现了 Prometheus API,对外提供与 Prometheus 一致的查询接口
  • Sidecar: 用于连接 Prometheus,提供 Query 查询接口、也可以上报数据
  • Store Gateway:访问放在对象存储的指标数据
  • Compact: 压缩采样、清理对象存储中的数据
  • Receive: 接收 Prometheus Remote Write 的数据,将其上传到云存储
  • Ruler:配置和管理告警规则,以进行展示和上传
  • query frontend:实现prometheus的v1 API代理到它到查询,同时缓存响应和可选的天分割

2. 部署

2.1 二进制部署

2.1.1 prometheus 配置

https://prometheus.io/docs/prometheus/latest/getting_started/

下载 prometheus-2.37.0.linux-amd64.tar.gz
上传解压到
/root/thanos/prometheus-2.37.0.linux-amd64

cd /root/thanos/
mv prometheus-2.37.0.linux-amd64 prometheus
cd /root/thanos/prometheus
cat <<EOF >prometheus.yml
global:
  scrape_interval: 15s
  external_labels:
    monitor: 'prom01'
scrape_configs:
  - job_name: 'node-exporter'
    scrape_interval: 5s
    static_configs:
      - targets:
        - 10.55.1.13:9100
        - 10.55.1.25:9100
EOF
 ./prometheus \
  --storage.tsdb.max-block-duration=2h \
  --storage.tsdb.min-block-duration=2h \
  --web.enable-lifecycle \
  --web.enable-admin-api \
  --config.file=prometheus.yml \
  --web.listen-address="0.0.0.0:9091" &> prometheus.log &
 
  • –web.enable-admin-api标志以支持 sidecar 从 Prometheus 获取元数据,如external_labels 。
  • –web.enable-lifecycle 则启用该标志,prometheus 允许通过 POST /-/reload 重新加载配置,可以使用sidecar配置重新加载功能(–reload.*标志)
  • –storage.tsdb.min-block-duration和–storage.tsdb.max-block-duration值必须设置相等以禁用本地压缩,推荐使用默认值2h。便于 sidecar上传数据到存储桶。

2.1.2 node-exporter

./node_exporter
        --collector.textfile.directory=/tmp/node-exporter/
        --collector.tcpstat
        --collector.processes
        --collector.systemd
        --collector.supervisord

2.1.3 minio

https://docs.min.io/minio/baremetal/quickstart/linux.html#quickstart-for-linux
MinIO 是一种高性能对象存储解决方案,原生支持 Kubernetes 部署。MinIO 提供与 Amazon Web Services S3 兼容的 API,并支持所有核心 S3 功能。
下载当前版本 minio version RELEASE.2022-08-08T18-34-09Z
上传到目录 /root/thanos/minio

chmod +x minio
cd /root/thanos/minio
MINIO_ROOT_USER=minio MINIO_ROOT_PASSWORD=12345678 ./minio server ./data --address :9095 --console-address :9096 &

2.1.4 sidecar

https://thanos.io/tip/components/sidecar.md/
需要与 prometheus 部署到同一台主机上共享数据目录。

下载 当前版本 thanos, version 0.27.0
https://github.com/thanos-io/thanos/tags

cd /root/thanos
tar xf thanos-0.27.0.linux-amd64.tar.gz
mv thanos-0.27.0.linux-amd64 thanos

2.1.5 对象存储配置

https://thanos.io/tip/thanos/storage.md/

cd /root/thanos/thanos
cat <<EOF > bucket.yml
type: S3
config:
  bucket: "thanos"
  endpoint: "192.168.171.129:9095"
  region: ""
  aws_sdk_auth: false
  access_key: "thanos"
  insecure: true
  signature_version2: false
  secret_key: "12345678"
  put_user_metadata: {}
EOF

cd /root/thanos/thanos
./thanos sidecar --grpc-address=0.0.0.0:10901 --http-address=0.0.0.0:10902 --tsdb.path=/root/thanos/prometheus/data/ --objstore.config-file=bucket.yml --prometheus.url=http://localhost:9091/

2.1.6 Store Gateway 存储网关

–data-dir 用于指定本地的缓存目录,缓存索引数据。

cd /root/thanos/thanos
./thanos store \
    --data-dir  ./store \
    --objstore.config-file bucket.yml \
    --grpc-address 0.0.0.0:19093 \
    --http-address 0.0.0.0:19094

2.1.7 Querier/Query 查询器

cd /root/thanos/thanos
./thanos query \
    --http-address 0.0.0.0:19095 \
    --grpc-address 0.0.0.0:19096 \
    --store       127.0.0.1:10901 \
    --store       127.0.0.1:19093

2.1.8 query-frontend 查询前端

运行查询前端的示例命令:

https://thanos.io/tip/components/query-frontend.md/#query-frontend
该thanos query-frontend命令实现了一个可以放在 Thanos Queriers 前面的服务,以改进读取路径。它基于Cortex 查询前端组件,因此您可以找到一些常见的功能,例如Splitting和Results Caching。

查询前端是完全无状态和水平可扩展的。

thanos query-frontend \
    --http-address     "0.0.0.0:9090" \
    --query-frontend.downstream-url="<thanos-querier>:<querier-http-port>"

注意:目前只有范围查询(/api/v1/query_range API 调用)实际上是通过查询前端处理的。所有其他 API 调用只是直接转到下游查询器,这意味着只有范围查询被拆分和缓存。但我们也计划支持即时查询。

2.1.9 Compactor 压缩器

compactor 是一个不参与 Thanos 集群的单实例进程。它只指向一个对象存储桶,并不断地将多个较小的块合并为较大的块。显着减少了存储桶中的总存储大小、存储节点上的负载以及从存储桶中获取查询数据所需的请求数。

压缩器还进行额外的批处理,例如降低采样和应用保留策略。

./thanos compact \
    --data-dir ./compact \
    --objstore.config-file bucket.yml \
    --http-address 0.0.0.0:19097 \
    --wait

数据保留时间设置

  • –retention.resolution-raw=0d
  • –retention.resolution-5m=0d
  • –retention.resolution-1h=0d

compactor 不在查询或数据备份的关键路径上。它可以作为定期批处理作业运行,也可以保持运行以始终尽快压缩数据。建议提供 100-300GB 的本地磁盘空间用于数据处理。

访问:
http://192.168.171.129:19095

2.1.10 grafana

tar xf grafana-enterprise-8.5.6.linux-amd64.tar.gz  -C /data/
cd /data/
mv grafana-8.5.6/ grafana
cd /data/grafana
./bin/grafana-server web &> grafana.log &

https://starsl.cn/article/8919.html

2.1.11 多个prometheus 进行聚合

cd /root/thanos/
mv prometheus-2.37.0.linux-amd64 prometheus02
cd /root/thanos/prometheus02
cat <<EOF >prometheus.yml
global:
  scrape_interval: 15s
  external_labels:
    monitor: 'prom02'
scrape_configs:
  - job_name: 'node-exporter'
    scrape_interval: 5s
    static_configs:
      - targets:
        - 10.55.1.31:9100
        - 10.55.1.4:9100
EOF

运行(后台运行,修改了端口)

cd /root/thanos/prometheus02
./prometheus \
  --storage.tsdb.max-block-duration=2h \
  --storage.tsdb.min-block-duration=2h \
  --web.enable-lifecycle \
  --web.enable-admin-api \
  --config.file=prometheus.yml \
  --web.listen-address="0.0.0.0:9092"  &> prometheus.log  &

再启动一个对应的 sidecar,使用相同的bucket.yml

mkdir /root/thanos/sidecar02
cd /root/thanos/sidecar02
cp ../thanos/thanos .
cp ../thanos/bucket.yml  .
./thanos sidecar \
--grpc-address=0.0.0.0:10908 \
--http-address=0.0.0.0:10909 \
--tsdb.path=/root/thanos/prometheus02/data/ \
--objstore.config-file=bucket.yml \
--prometheus.url=http://localhost:9092/ &

把新启动的 sidecar 加入 query

cd /root/thanos/thanos
./thanos query \
    --http-address 0.0.0.0:19095 \
    --grpc-address 0.0.0.0:19096 \
    --store       127.0.0.1:10901 \
    --store       127.0.0.1:19093 \
    --store       127.0.0.1:10908

访问:
http://192.168.171.129:19095

2.1.12 sidecar 高阶配置

  • –shipper.upload-compacted 在启动时同步 Prometheus 本地存储中的所有较旧的现有块。

  • –reloader.rule-dir=DIR_NAME 自动触发prometheus重新加载配置 (需要prometheus启用–web.enable-lifecycle)

cd /root/thanos/sidecar02
./thanos sidecar \
--grpc-address=0.0.0.0:10908 \
--http-address=0.0.0.0:10909 \
--tsdb.path=/root/thanos/prometheus02/data/ \
--objstore.config-file=bucket.yml \
--reloader.rule-dir=/root/thanos/prometheus02/rules \
--reloader.rule-dir=/root/thanos/prometheus02/prometheus.yml \
--reloader.watch-interval=1m \
--prometheus.url=http://localhost:9092/ &>./sidecar.log &

–reloader.config-file=CONFIG_FILE ,以 $(VARIABLE) 格式替换其中的环境变量,并在 --reloader.config-envsubst-file=OUT_CONFIG_FILE 文件中输出生成的配置。

生成配置文件
cd /root/thanos/prometheus02/
cp prometheus.yml prometheus_env.yml
修改 prometheus_env.yml 中 monitor: ‘$(ENV)’

cd /root/thanos/sidecar02
ENV=prom02 ./thanos sidecar \
--grpc-address=0.0.0.0:10908 \
--http-address=0.0.0.0:10909 \
--tsdb.path=/root/thanos/prometheus02/data/ \
--objstore.config-file=bucket.yml \
--reloader.rule-dir=/root/thanos/prometheus02/rules \
--reloader.rule-dir=/root/thanos/prometheus02/prometheus.yml \
--reloader.watch-interval=1m \
--reloader.config-file=/root/thanos/prometheus02/prometheus_env.yml \
--reloader.config-envsubst-file=/root/thanos/prometheus02/prometheus.yml \
--prometheus.url=http://localhost:9092/ &>./sidecar.log &

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IUNLdcS7-1681254793144)(assets/image-20230411181539-woz5whd.png)]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/418694.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

我在windows10下,使用msys64 mingw64终端

系列文章目录 文章目录系列文章目录前言一、MSYS2是什么&#xff1f;前言 msys2官网 MSYS2 &#xff08;Minimal SYStem 2&#xff09; 是一个MSYS的独立改写版本&#xff0c;主要用于 shell 命令行开发环境。 同时它也是一个在Cygwin &#xff08;POSIX 兼容性层&#xff09…

软件测试简历如何编写?还在乱写?精细优化让自己脱颖而出......

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 简历是我们向面试官…

教育大数据总体解决方案(6)

触控录播主机集成视频编码、实时导播、音频处理、图像跟踪、电子云台等功能&#xff0c;无需额外的辅助跟踪设备。支持5路视频信号的采集录制、画面自动跟踪及全自动/半自动导播切换&#xff0c;让教师免于分心调控&#xff0c;专注于课堂教学。 整机采取一体化设计及三合一按键…

【数据结构与算法】栈和队列(StackQueue)

TOC 数据结构—栈 栈的概念 要想学习一个东西&#xff0c;概念是一定要看并且理解的&#xff0c;那么栈是个什么玩意呢&#xff1f; 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#x…

v851s g2d 模块 sample 深究

1. g2d 模块概述 g2d 主要功能: 1)旋转:支持90、180、270旋转; 2)镜像反转:H / V; 3) scale:放缩 4)格式转换:yuv 转 rgb 等,多种格式相互间转换; 5)透明叠加功能:实现两个rgb图片叠加; 6)矩形填充,等诸多功能; 2. g2d 配置 1)源码目录:tina-v853-docker/…

Zabbix自定义监控mysql数据库、自动注册服务器及部署代理服务器

目录 一、zabbix自定义监控数据库 1、编写监控脚本 2、服务端测试 3、web页面配置 ①创建自定义监控项 ②创建触发器 ③创建图形 ④测试自定义监控是否成功 二、zabbix自动注册 1、什么是自动注册 2、环境准备 3、 zabbix客户端配置 4、web页面配置自动注册 5、…

Windows系统生产力工具介绍

介绍 本文主要介绍在windows系统上如何安装一些常用的生产力软件&#xff0c;这些软件大多数都是开源免费使用的&#xff0c;包括markdown编辑器、知识管理软件、图片和视频工具、系统工具等&#xff0c;以及程序员专用的开发工具。根据本人的使用经验&#xff0c;将会不定期更…

OpenGL之深入解析屏幕成像和渲染原理

一、CPU 与 GPU CPU 内部组成:GPU 内部组成(ALU:算术逻辑单元,是能实现多组算术运算和逻辑运算的组合逻辑电路):CPU 和 GPU 因为设计之初需求就不一样,所以它们的组成不同,在计算机中的分工也不同。可以看到,GPU 有更多的 ALU,而 CPU 有 Control 单元和 Cache 单元,…

TensorFlow 深度学习第二版:6~10

原文&#xff1a;Deep Learning with TensorFlow Second Edition 协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 本文来自【ApacheCN 深度学习 译文集】&#xff0c;采用译后编辑&#xff08;MTPE&#xff09;流程来尽可能提升效率。 不要担心自己的形象&#xff0c;只…

金融风险计量:数据平滑方法及逆平滑分析

摘要及声明 1&#xff1a;本文从风险分析的角度简单介绍数据平滑方式&#xff0c;重点介绍低频数据的逆平滑分析&#xff1b; 2&#xff1a;本文主要数据通过爬虫获取&#xff1b; 3&#xff1a;模型实现基于python3.8&#xff1b; 处理金融数据时我们经常会遇到有噪音的数…

规模化敏捷框架:Spotify

Spotify 是全球最大、最受欢迎的流媒体音乐服务平台&#xff0c;预估用户总量已达2.86亿。Spotify 取得成功的一个关键因素就在于公司采用了一个独特方法: 围绕工作任务进行组织构建以提高团队敏捷性。Spotify 工程团队把提高团队敏捷性的经验记录了下来&#xff0c;并把经验分…

Java web学习记录(二)数据库的使用

学习Java web的前置条件就是数据库&#xff0c;只有学了数据库才能更好的处理网站应用产生的数据。 初识数据库 数据库&#xff08;Database&#xff09;顾名思义就是一个存储数据的仓库&#xff0c;通过它就可以直接查找到你想要的数据&#xff0c;举个简单的例子&#xff0…

IPSEC实验(IPSECVPN点到点,DSVPN,IPSECVPN旁挂)

目录一、复现实验1、防火墙的IPSECVPN点到点实验-1,拓扑图的搭建-2&#xff0c;配置IP,开通ping,并且设置策略-3&#xff0c;在网络中的IPSEC进行配置第一阶段&#xff1a;发出的UDP500流量第二阶段 发出的ESP流量二台防火墙建立策略禁用其它策略&#xff0c;在IPSEC上配置策略…

系统应满足的性能指标计算及系统性能衡量

根据运营数据计算系统应该满足的性能指标 计算正常业务操作&#xff08;稳定性测试&#xff09;的并发量 计算峰值业务操作&#xff08;压力测试&#xff09;的并发量 如何进行并发数计算&#xff08;稳定性测试和压力测试&#xff09; 使用阶梯线程组自定义模拟用户数量。 …

前端开发工具-Visual Studio Code-插件下载-迁移到新电脑

背景 前端使用的开发工具一般是Visual Studio Code&#xff0c;很多辅助功能&#xff0c;比如字体高亮、单词拼写检查、预览图片等需要安装插件。但是插件在原来的电脑&#xff0c;不想下载或者自己是新人&#xff0c;想迁移同事的插件&#xff0c;或者新电脑没有外网。 以下…

手把手教学在windows系统上将pytorch模型转为onnx,再转为ncnn的全过程

前言 最近呢&#xff0c;在忙一个项目&#xff0c;需要将pytorch训练的模型部署在移动端。然后遇到也遇到了一些坑&#xff0c;简单的记录一下整个过程&#xff0c;转换的模型就使用经典的分类网络模型mobilenet_v2。 将pytorch模型转换为onnx模型 环境准备 这个步骤比较简…

U+平台和华为软开平台怎么拉取远程项目作为新项目

这是根据聊天记录改的帖子&#xff0c;这样应该算得上是一篇技术博客了吧&#xff0c;又完成一个指标【狗头】 用idea作为开发工具 首先连接校园网&#xff0c;然后进入U网址http://10.5.1.21:30080/student/group 从这进去 修改https密码&#xff0c;选择修改&#xff0c;不…

Ubuntu20.04 安装QGIS

qgis的git&#xff1a; GitHub - qgis/QGIS: QGIS is a free, open source, cross platform (lin/win/mac) geographical information system (GIS) qgis的官网:Welcome to the QGIS project! qgis插件包下载地址&#xff1a;https://plugins.qgis.org/plugins/ 1.Prerequisi…

前 K 个高频元素(力扣刷题代码随想录刷题)

给你一个整数数组 nums 和一个整数 k &#xff0c;请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 思路&#xff1a; 要统计元素出现频率对频率排序找出前K个高频元素首先统计元素出现的频率&#xff0c;这一类的问题可以使用map来进行统计。 然后是对频率…

商汤科技推出“日日新SenseNova”,大模型体系赋能人工智能新未来

2023年4月10日&#xff0c;商汤科技SenseTime技术交流日活动在上海举行&#xff0c;分享了以“大模型大算力”推进AGI&#xff08;通用人工智能&#xff09;发展的战略布局&#xff0c;并公布了商汤在该战略下的“日日新SenseNova”大模型体系。 公开信息显示&#xff0c;商汤科…