使用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不能 ...
随机推荐
- C# WebAPI 文件在线预览
最近在写一个移动端API接口,其中有一个需求:接口返回附件url地址让手机端调用实现文件在线预览.大体实现思路:把doc.xls等文本格式文件转换为pdf,转换后的pdf文件存放在服务器上面,方便第二 ...
- Winform中使用控件的Dock属性设计窗体布局,使不随窗体缩放而改变
场景 在新建一个Winform窗体后,拖拽控件设置其布局如下 如果只是单纯的这么设计,我们在运行后,如果对窗口进行缩放就会导致如下 所以我们需要在设计页面布局时对控件进行定位设置. 注: 博客主页:h ...
- C# - VS2019调用AForge库实现调用摄像头拍照功能
前言 作为一名资深Delphi7程序员,想要实现摄像头扫描一维码/二维码功能,发现所有免费的第三方库都没有简便的实现办法,通用的OpenCV或者ZXing库基本上只支持XE以上的版本,而且一维码的识别 ...
- idea修改filetype
settings/editor/file types把不小心改成Text类型的文件的wildcard去掉即可.
- JavaScript Date 日期属性和方法
JavaScript 日期(Date) Date对象用于处理日期和时间.使用对象new Date()创建日期.实例化日期有四种方式: var d1 = new Date(); var d2 = new ...
- CTF必备技能丨Linux Pwn入门教程——ROP技术(上)
Linux Pwn入门教程系列分享如约而至,本套课程是作者依据i春秋Pwn入门课程中的技术分类,并结合近几年赛事中出现的题目和文章整理出一份相对完整的Linux Pwn教程. 教程仅针对i386/am ...
- i春秋四周年庆典狂欢丨价值6000元的Web安全课程免费送啦
重磅好消息 i春秋四周年庆典狂欢 感恩回馈新老用户 5888元的Web安全线上提高班 988元的Web安全线上入门班 免费送啦 快来围观 活动详情 1.活动时间:6月17日—6月30日 2.活动规则: ...
- boa移植 boa交叉编译
官网:http://www.boa.org/ BOA 服务器是一个小巧高效的web服务器,是一个运行于unix或linux下的,支持CGI的.适合于嵌入式系统的单任务的http服务器,源代码开放.性能 ...
- 单点登录,系统B如何辨别用户已登录系统A
首先系统A去访问受限资源,跳转到sso认证中心https://login.sso.com/login?redirectURL=https://www.a.com/center,用户登录成功之后,sso ...
- Windows | Ubuntu 16.04/18.04 安装Pycharm并永久破解以及安装配置Anaconda3
Ubuntu 18.04下 1.安装python 2._版本,输入 sudo apt install python 命令行输入 python或python3会打开对应的版本. 输入 exit()或C ...