使用thanos管理Prometheus持久化数据
关于thanos的介绍可以参考这篇官方博客的翻译文档,本文不作部署操作介绍。下图是thanos的官方架构图,主要有5个组件:
- Query:可以近似看作是Prometheus的实现,用于采集其他组件的数据,如sidecar和store gateway。Query的UI与Prometheus基本相同。
- Store Gateway:用于获取来自对象存储的历史数据,它使得Query可以获取历史数据,并通过Grafana展示。
- Compact:用于历史数据的压缩和降准采样,提高在Grafana上执行Zoom-in/Zoom-out时的效率。
- Ruler:配置告警相关的内容,Ruler的UI与Alertmanager原生的UI基本相同。
- Sidecar:与Prometheus部署,一来为Query提供未持久化到对象存储的数据;二来将超期的数据持久化到对象存储。
通常thanos管理多集群时,除Sidecar组件需要在每个集群内部署,其余组件仅部署一份,用于处理多个集群的数据。需要注意的是,thanos的StoreAPI采用的是gRPC协议,只能走四层通信,像在openshift 3.11版本下无法通过router(ingress)暴露给集群外部的Query等组件。规避办法为采用nodePort方式暴露,但通常nodePort并不是一个很好的方式,因为它占用了主机的端口。
从使用上看,thanos使用上最主要的作用就是实现了数据的持久化以及历史数据的提取,其实现的StoreAPI也可以作为可移植的功能。
TIPS:
type: ALIYUNOSS
config:
endpoint: ""
bucket: ""
access_key_id: ""
access_key_secret: ""
- 可以在源码中使用make build编译源码
- 可以使用下述校验对象存储状态,如thanos bucket ls --objstore.config-file=/etc/thanos/oss.yml 列出所有的bucket信息
bucket verify [<flags>]
Verify all blocks in the bucket against specified issues bucket ls [<flags>]
List all blocks in the bucket bucket inspect [<flags>]
Inspect all blocks in the bucket in detailed, table-like way
- Query,Ruler,Store_Gateway和Compact的docker-compose启动方式可以参考如下yaml文件
version: '3.1' volumes:
grafana_data: {}
minio_data: {}
store_data: {}
compactor_data: {} services:
thanos-querier:
image: ${thanos-image}
extra_hosts:
- "{$bucket_name}.${oss_backend}:${oss_backend_ip}}" #ali-yun需要添加这一行解析
- "${oss_backend}:${oss_backend_ip}}"
command:
- 'query'
- '--grpc-address=0.0.0.0:10901' # Query storeAPI
- '--http-address=0.0.0.0:10902' # Query UI
- '--query.replica-label=replica'
- '--store=${prometheus_sidecar_lb}:${prometheus_sidecar_lb_port}'
- '--store=thanos-store-gateway:10901'
privileged: true
ports:
- :
restart: always thanos-store-gateway:
image: ${thanos-image}
extra_hosts:
- "{$bucket_name}.${oss_backend}:${oss_backend_ip}}"
- "${oss_backend}:${oss_backend_ip}}"
volumes:
- ./thanos/:/etc/thanos/
- store_data:/data
command:
- 'store'
- '--grpc-address=0.0.0.0:10901'
- '--http-address=0.0.0.0:10902'
- '--data-dir=/data'
- '--objstore.config-file=/etc/thanos/bucket_config.yaml' # Object store config file
privileged: true
restart: always thanos-compactor:
image: ${thanos-image}
extra_hosts:
- "{$bucket_name}.${oss_backend}:${oss_backend_ip}}"
- "${oss_backend}:${oss_backend_ip}}"
volumes:
- ./thanos/:/etc/thanos/
- compactor_data:/data
command:
- 'compact'
- '--log.level=debug'
- '--data-dir=/data'
- '--objstore.config-file=/etc/thanos/bucket_config.yaml'
- '--http-address=0.0.0.0:10902'
- '--wait'
privileged: true
restart: always grafana:
image: ${grafana-image}
user: ""
ports:
- :
volumes:
- grafana_data:/var/lib/grafana
restart: always thanos-ruler:
image: ${thanos-image}
volumes:
- ./thanos/:/etc/thanos/
command:
- 'rule'
- '--grpc-address=0.0.0.0:10901' # Ruler Store API
- '--http-address=0.0.0.0:10902' # Ruler UI
- '--log.level=debug'
- '--data-dir=/data'
- '--eval-interval=15s'
- '--query=thanos-querier:10902'
- '--alertmanagers.url=http://alertmanager:9093'
- '--rule-file=/etc/thanos/*.rules.yaml'
- '--objstore.config-file=/etc/thanos/bucket_config.yaml'
- "--label=monitor_cluster=\"poc-ocp01\""
- "--label=replica=\"r1\""
ports:
- :
privileged: true
depends_on:
- thanos-querier
restart: always alertmanager:
image: ${alertmanager-image}
ports:
- :
volumes:
- ./thanos/:/etc/alertmanager/
restart: always
privileged: true
command:
- '--data.retention=120h'
- '--web.listen-address=0.0.0.0:9093'
- '--config.file=/etc/alertmanager/alertmanager.yaml'
- '--storage.path=/alertmanager'
TIPS:
- 创建alertmanager高可用集群可以参见这里
- prometheus和ruler都需要配置external label,否则可能会出现数据冲突
- store-gateway可能会发生OOM,可以尝试使用--max-time命令限制查找的metric的范围。参见该issue
- compactor建议配置--consistencyDelay参数,防止由于畸形报文导致compactor崩溃
使用thanos管理Prometheus持久化数据的更多相关文章
- 从零入门 Serverless | Serverless 应用如何管理日志 & 持久化数据
作者 | 竞霄 阿里巴巴开发工程师 本文整理自<Serverless 技术公开课>,关注"Serverless"公众号,回复"入门",即可获取 Se ...
- 解决持久化数据太大,单个节点的硬盘无法存储的问题;解决运算量太大,单个节点的内存、CPU无法处理的问题
需要学习的技术很多,要自学新知识也不是一件容易的事,选择一个自己比较感兴趣的会是一个比较好的开端,于是,打算学一学分布式系统. 带着问题,有目的的学习,先了解整体架构,在深入感兴趣的细节,这是我的计划 ...
- [Docker] 容器持久化数据的首选机制 Volume
Volume 是 docker 容器生成持久化数据的首选机制.bind mounts 依赖主机机器的目录机构,volume 完全由 docker 管理.volume 较 bind mounts 有几个 ...
- 解决Vuex刷新页面数据丢失问题 ---- vuex-persistedstate持久化数据
何为Vuex?用处是什么?为什么刷新丢失? Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化 ...
- Docker 基础知识 - 使用卷(volume)管理应用程序数据
卷(volumes)是 Docker 容器生产和使用持久化数据的首选机制.绑定挂载(bind mounts)依赖于主机的目录结构,卷(volumes)完全由 Docker 管理.卷与绑定挂载相比有几个 ...
- 使用ehcache持久化数据到磁盘 并且在应用服务器重启后不丢失数据
使用ehcache时如何持久化数据到磁盘,并且在应用服务器重启后不丢失数据1.如何持久化到磁盘使用cache.flush(),每次写入到cache后调用cache.flush() ,这样ehcache ...
- 管理我的数据之GDBM
管理我的数据之GDBM 作者 He YiJun – storysnail<at>gmail.com 团队 ls 版权 转载请保留本声明! 本文档包含的原创代码根据General Publi ...
- 完整的定时任务解决方案Spring集成+定时任务本身管理+DB持久化+集群
完整的定时任务解决方案Spring集成+定时任务本身管理+DB持久化+集群 maven依赖 <dependency> <groupId>org.quartz-scheduler ...
- Windows Server 2008R2配置MySQL Cluster并将管理节点和数据节点配置成windows服务
说明:将mysql的管理节点和数据节点配置成windows服务是为了防止有人手误关闭管理节点或数据节点的dos命令窗口,管理节点或数据节点的命令窗口误关闭可能会造成mysql某台或某几台mysql不能 ...
随机推荐
- Winform 美化
首先,我们先来实现主界面的扁平化 此处分为两个步骤,第一步是更改winform自带的MainForm窗体属性,第二步是添加窗体事件. 将主窗体FormBorderStyle更改为None,这样就得到了 ...
- 编译 datax
datax 是阿里巴巴官方开源的一个数据同步工具,可以用于诸多数据源之间的同步,并且使用简单.效率高. datax 官方有提供编译好的版本,可以直接下载,但是其中包含有 BUG. 我最近遇到的一个问题 ...
- JVM指令手册
JVM指令大全 常量入栈指令 指令码 操作码(助记符) 操作数 描述(栈指操作数栈) 0x01 aconst_null null值入栈. 0x02 iconst_m1 -1(int)值入栈. 0x03 ...
- 高强度学习训练第四天总结:JVM+Redis
JVM 复习了JVM堆内存的几个模块. 复习了JVM的几个控制工具. 复习了JVM发展历史 Redis 复习了Redis的事务控制.
- shuffle调优
目录 一.概述 二.shuffle的定义 三.ShuffleMananger发展概述 四.HashShuffleManager的运行原理 4.1 未经优化的HashShuffleManager 4.2 ...
- 深度解析.NetFrameWork/CLR/C# 以及C#6/C#7新语法
一:什么是.NetFrameWork/ CLR / C# 1:.NetFramework即架构,它是一个语言开发软件,提供了软件开发的框架,使开发更具工程性.简便性和稳定性,这个框架主要是针对于c#语 ...
- js 落幕
1.关于路由的跳转 核心是 a 再取出后缀作为参数判断 最后 innerHTML 上 <!DOCTYPE html> <html lang="en"> &l ...
- idea中的插件,可以快速将类中的属性转换成Json字符串
当我们想要测试接口的时候,难免会根据一个类,一个一个的写json数据,当属性比较少时还行,但当属性多的时候就比较麻烦了, 为了解决这个问题,我们可以安装第三方的插件来快速生成json字符串. 步骤如下 ...
- python处理JSON 序列化与反序列化
#序列化 >>> import json>>> d={"key":"value"}>>> d{'key': ...
- 【Spring AOP】切入点表达式(四)
一.切入点指示符 切入点指示符用来指示切入点表达式目的,在Spring AOP中目前只有执行方法这一个连接点,Spring AOP支持的AspectJ切入点指示符如下: execution:用于匹配方 ...