Prometheus Operator 与 Thanos 集成实战:Sidecar 对象存储备份与 ThanosRuler 全局规则评估
云原生可观测性【免费下载链接】prometheus-operatorPrometheus Operator creates/configures/manages Prometheus clusters atop Kubernetes项目地址https://gitcode.com/gh_mirrors/pr/prometheus-operator点击查看免费下载Thanos 是一组可组合的组件能够将多个 Prometheus 实例整合为高可用的监控体系并在对象存储允许的前提下提供近乎无限的存储容量。Prometheus Operator 在Prometheus与ThanosRuler两类自定义资源CRD中内置了对 Thanos 的一等支持前者负责在每个 Prometheus Pod 内注入 Thanos Sidecar 容器后者则直接管理独立的 Thanos Ruler 集群。读完本文你将掌握如何在PrometheusCR 中开启 Thanos Sidecar、将 TSDB 数据块备份到对象存储、理解新旧版本压缩行为差异以及如何用ThanosRulerCR 部署跨集群的规则评估实例。Thanos 与 Prometheus Operator 的职责边界Thanos 由 Sidecar、Querier、Receiver、Compactor、Store Gateway 等组件构成。在与 Prometheus Operator 集成时Operator 只负责管理其中两类组件Thanos Sidecar由Prometheus自定义资源驱动作为容器注入到 Prometheus Pod 内部。它一方面将本地 Prometheus 的 StoreAPI 暴露给 Thanos 查询体系另一方面可选地把 TSDB 数据块上传到对象存储Thanos Ruler由ThanosRuler自定义资源驱动部署独立的 Ruler 实例用于跨集群评估 PromQL 记录规则与告警规则。而 Querier、Receiver、Compactor、Store Gateway 等其余组件需要独立于 Operator 部署。官方 kube-thanos 项目提供了这些组件的部署起点Operator 不参与其生命周期管理。在 Prometheus CR 中启用 Thanos SidecarPrometheusCRD 通过spec.thanos字段控制 Sidecar 的注入。只要将thanos设置为非空值最简形式是只给一个合法的 Thanos 容器镜像地址Operator 就会在生成的 StatefulSet Pod 中加入名为thanos-sidecar的容器# Prometheus 自定义资源片段 ... spec: ... thanos: image: quay.io/thanos/thanos:v0.28.1 ...spec.thanos对应源码中的ThanosSpec结构体见 pkg/apis/monitoring/v1/prometheus_types.go除image外还支持以下常用字段字段说明imageThanos 容器镜像地址一旦指定即覆盖baseImage/tag/sha的组合拼装仍需配合version让 Operator 获知具体版本versionThanos 版本Operator 依据它决定生成何种 StatefulSet 与配置参数缺省时按 Operator 发布时的最新上游版本处理baseImage/tag/sha已废弃推荐统一使用image完整镜像引用resourcesSidecar 容器的资源 requests/limitsobjectStorageConfig引用 Kubernetes Secret 中的对象存储配置用于上传 TSDB 块objectStorageConfigFile优先级更高objectStorageConfigFile直接指定对象存储配置文件的挂载路径优先于objectStorageConfiggrpcListenLocal/httpListenLocal为 true 时 Sidecar 的 gRPC/HTTP 端点改为监听 loopback 接口而非 Pod IP旧的listenLocal已废弃tracingConfig/tracingConfigFile追踪配置实验性功能文件形式优先级更高grpcServerTlsConfig提供 StoreAPI 的 gRPC 服务端 TLS 参数logLevel/logFormat日志级别debug/info/warn/error与格式logfmt/jsonminTimeStoreAPI 服务的时间范围下限支持 RFC3339 常量或相对时长如-1d、2h45mblockSizeTSDB 块时长默认2h与上游 Prometheus 默认值一致改动会影响整体内存与 Compactor 效率readyTimeout/getConfigInterval/getConfigTimeoutSidecar 等待 Prometheus 就绪、拉取配置的间隔与超时volumeMounts/additionalArgs追加卷挂载或透传额外的 CLI 参数如隐藏 flag仓库自带的 example/thanos/prometheus.yaml 展示了一个双副本 Prometheus 与 Thanos 集成的最小实例仅通过version: v0.42.4即可让 Operator 拉取对应版本镜像apiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: labels: prometheus: self name: self namespace: default spec: replicas: 2 ruleSelector: matchLabels: prometheus: k8s role: prometheus-rulefiles serviceMonitorSelector: matchLabels: app.kubernetes.io/name: prometheus thanos: version: v0.42.4配置 Thanos 对象存储要让 Sidecar 将 TSDB 数据块上传到对象存储需要先准备一份 Thanos 格式的存储配置文件再放入 Kubernetes Secret。配置格式与示例可参考 Thanos 官方 storage 文档下面是一个 S3 兼容存储的例子type: s3 config: bucket: thanos endpoint: ams3.digitaloceanspaces.com access_key: XXX secret_key: XXX假设将上述内容保存为/tmp/thanos-config.yaml可用如下命令在monitoring命名空间创建名为thanos-objstore-config的 Secretkubectl -n monitoring create secret generic thanos-objstore-config --from-filethanos.yaml/tmp/thanos-config.yaml随后在PrometheusCR 的thanos字段中通过objectStorageConfig引用该 Secretkey对应 Secret 内的键名name对应 Secret 名称... spec: ... thanos: image: quay.io/thanos/thanos:v0.28.1 objectStorageConfig: key: thanos.yaml name: thanos-objstore-config ...这样 Operator 就会把 Secret 内容挂载为 Sidecar 的--objstore.config-fileSidecar 会将 Prometheus 每 2 小时生成的新数据块持续上传至对象存储。若你更倾向于在 Sidecar 容器内直接指定配置文件路径可改用objectStorageConfigFile字段该字段在源码中明确标注优先级高于objectStorageConfig见 pkg/apis/monitoring/v1/prometheus_types.go。压缩行为的两种模式旧行为与新协调机制启用对象存储后本地 Prometheus 压缩与 Sidecar 上传之间的协调方式随版本而异这是生产环境最容易踩坑的点务必注意旧模式Prometheus v3.9.0 或 Thanos Sidecar v0.42.0objectStorageConfig生效会禁用本地 Prometheus 压缩Operator 将--storage.tsdb.min-block-duration与--storage.tsdb.max-block-duration都设为2h或blockSize指定值。此时必须由全局唯一的 Thanos Compactor在对象存储层面完成压缩本地不再做压缩新模式Prometheus v3.9.0 且 Thanos Sidecar v0.42.0Operator保留本地压缩改为通过 Sidecar 的 shipper 元数据文件协调上传Prometheus 以--storage.tsdb.delay-compact-file.path启动Sidecar 则以--shipper.meta-file-name与--shipper.ignore-unequal-block-size启动Prometheus 只会压缩已经上传到对象存储的 level-1 数据块从而规避关闭本地压缩带来的查询与内存开销。如需强制退回旧行为可在PrometheusCR 中设置spec.disableCompaction: true。上述逻辑在源码中有完整的映射compactionModeFor根据 Prometheus 与 Thanos 版本计算压缩模式compactionModeDisabled分支写入min/max-block-duration参数compactionModeDelayed分支写入delay-compact-file.path见 pkg/prometheus/server/statefulset.goSidecar 侧的两个 shipper 参数则在 pkg/prometheus/server/statefulset.go 中追加并由 pkg/prometheus/server/statefulset_test.go 的TestCompactionMode系列用例逐一验证延迟模式下压缩参数保持存在且 shipper 参数成对出现显式禁用压缩时则恢复旧行为。部署 ThanosRuler跨集群规则评估Thanos Ruler 中强制校验若两个查询字段都为空直接返回错误拒绝生成 StatefulSet。原文档给出的完整示例... apiVersion: monitoring.coreos.com/v1 kind: ThanosRuler metadata: name: thanos-ruler-demo labels: example: thanos-ruler namespace: monitoring spec: image: quay.io/thanos/thanos:v0.28.1 ruleSelector: matchLabels: role: my-thanos-rules queryEndpoints: - dnssrv_http._tcp.my-thanos-querier.monitoring.svc.cluster.local alertmanagersConfig: key: alertmanager-configs.yaml name: thanosruler-alertmanager-config仓库中的 example/thanos/thanos-ruler.yaml 则演示了queryConfig的写法apiVersion: monitoring.coreos.com/v1 kind: ThanosRuler metadata: labels: app.kubernetes.io/name: thanos-ruler name: thanos-ruler namespace: default spec: image: quay.io/thanos/thanos:v0.42.4 queryConfig: key: query.yaml name: thanos-ruler ruleSelector: matchLabels: role: thanos-example version: v0.42.4ThanosRulerSpec定义见 pkg/apis/monitoring/v1/thanos_types.go还包含一批高频字段源码注释与 CLI 参数映射见 pkg/thanos/statefulset.go给出了确切行为字段默认值/说明replicasRuler 副本数未设置时按 1 处理ExpectedReplicas逻辑ruleSelector/ruleNamespaceSelector选择PrometheusRule的标签与命名空间选择器后者未指定时仅限ThanosRuler同命名空间queryConfig查询端点配置文件Secret 引用优先于queryEndpointsqueryEndpoints查询端点列表映射为--queryCLI 参数alertmanagersConfigAlertmanager 端点配置Secret 引用优先于已废弃的alertmanagersUrl映射为--alertmanagers.config-filealertmanagersUrl旧式 Alertmanager 地址列表已废弃映射为--alertmanagers.urlevaluationInterval规则评估间隔默认15s映射为--eval-intervalretention本地数据保留时长默认24h映射为--tsdb.retention配置 remote-write 后无效果无状态模式resendDelay向 Alertmanager 重发告警的最小间隔映射为--resend-delayruleOutageTolerance/ruleGracePeriod告警for状态恢复容忍度与宽限期Thanos v0.30.0映射为--for-outage-tolerance/--for-grace-periodruleQueryOffset规则组默认查询偏移Thanos v0.38.0ruleConcurrentEval并发规则评估数Thanos v0.37.0labels/alertDropLabels外部标签默认始终添加副本标签thanos_ruler_replica值为 Pod 名该标签在告警中始终被丢弃enableFeatures显式开启默认关闭的特性 flagThanos v0.39.0开启后不受官方支持remoteWrite远程写入列表非空时 Ruler 进入无状态模式Thanos v0.24.0portName/serviceName端口名默认web不指定serviceName时 Operator 自动创建thanos-ruler-operated无头 ServicelogLevel/logFormat/additionalArgs日志与额外参数透传为 ThanosRuler 配置 Alertmanager.spec.alertmanagersConfig引用的 Secret 内是 Thanos Ruler 的 alertmanager 配置格式见 Thanos 官方 rule 组件文档一个包含静态端点与 API 版本的示例如下apiVersion: v1 kind: Secret metadata: name: thanosruler-alertmanager-config stringData: alertmanager-configs.yaml: |- alertmanagers: - static_configs: - dnssrv_web._tcp.alertmanager-operated.monitoring.svc.cluster.local api_version: v2保存为/tmp/alertmanager-configs.yaml后用与对象存储 Secret 相同的方式创建kubectl -n monitoring create secret generic thanosruler-alertmanager-config --from-filealertmanager-configs.yaml/tmp/alertmanager-configs.yaml注意该示例通过 DNS SRV 记录自动发现alertmanager-operated服务这正是 Operator 为 Alertmanager StatefulSet 创建的 headless 服务二者可无缝对接。规则加载机制ThanosRuler 使用的记录与告警规则与 Prometheus 完全一致均来自PrometheusRule对象。示例中ruleSelector匹配标签rolemy-thanos-rules即所有带该标签的PrometheusRule会被加载到 Ruler Pod 中配合ruleNamespaceSelector可跨命名空间收集规则。若未匹配到任何规则Operator 会在日志中输出No PrometheusRule have been selected.提示见 pkg/thanos/operator.go。其余 Thanos 组件的部署建议注入 Sidecar 只是迈出 Thanos 体系的第一步。要形成完整的高可用监控链路还需独立部署以下组件Querier统一聚合各 Prometheus Sidecar 暴露的 StoreAPI提供全局查询视图Store Gateway启用对象存储备份时必需从对象存储读取历史数据块补齐离线时间范围的数据Compactor启用对象存储备份时必需在全局对象存储层面执行压缩、降采样与数据保留在旧压缩模式下它是唯一执行压缩的组件不可省略。这些组件的部署方式可参考 kube-thanos 项目它们不属于 Prometheus Operator 的托管范围需要作为独立工作负载管理。小结通过PrometheusCR 的thanos字段与ThanosRulerCRPrometheus Operator 将 Thanos Sidecar 的注入、对象存储备份、跨集群规则评估纳入了声明式管理Sidecar 侧只需提供镜像与可选的对象存储 Secret即可完成数据备份并接入全局查询ThanosRuler侧只需指定查询端点与规则选择器即可拉起独立评估集群。理解新旧版本压缩行为差异、善用queryConfig/alertmanagersConfig等 Secret 引用式配置是生产落地时保证数据一致性与告警可达性的关键。赞分享云原生可观测性【免费下载链接】prometheus-operatorPrometheus Operator creates/configures/manages Prometheus clusters atop Kubernetes项目地址https://gitcode.com/gh_mirrors/pr/prometheus-operator点击查看免费下载相关推荐终极指南如何用Prometheus与Thanos构建企业级监控系统终极指南如何用Prometheus与Thanos构建企业级监控系统 Prometheus是一个开源的监控和警报工具用于监控Kubernetes应用程序和云基可观测性指标监控时序数据库告警VictoriaMetrics 组件对接云对象存储实战指南S3 / GCS / Azure Blob 备份与规则读取VictoriaMetrics 组件对接云对象存储实战指南S3 / GCS / Azure Blob 备份与规则读取 本文是 VictoriaMetrics时序数据库数据库指标监控可观测性后端Spraykatz实战案例在企业渗透测试中的5大应用场景Spraykatz实战案例在企业渗透测试中的5大应用场景 Spraykatz是一款强大的Windows凭据收集工具它通过自动化远程procdump和解析ls上一篇四步在 yuzu 模拟器上跑通第一款 Switch 游戏新手实践教程下一篇Windhawk终极指南如何用自定义插件重新定义你的Windows体验创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

GitHub Copilot for Xcode 自定义工具实战:为 Xcode AI 助手构建并调试你的第一个专用工具

GitHub Copilot for Xcode 自定义工具实战:为 Xcode AI 助手构建并调试你的第一个专用工具

GitHub Copilot for Xcode 自定义工具实战:为 Xcode AI 助手构建并调试你的第一个专用工具 【免费下载链接】CopilotForXcode AI coding assistant for Xcode 项目地址: https://gitcode.com/GitHub_Trending/cop/CopilotForXcode 本文带你走一遍 GitHub Cop…

2026/9/24 15:12:28 阅读更多 →
EDR告警降噪实战:从日均万条到50条以内的运营指南

EDR告警降噪实战:从日均万条到50条以内的运营指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 15:11:27 阅读更多 →
Skia 用户技巧与 FAQ 全解:SKP/MSKP 抓取、硬件加速、字体 Hinting 与文本整形

Skia 用户技巧与 FAQ 全解:SKP/MSKP 抓取、硬件加速、字体 Hinting 与文本整形

图形学 【免费下载链接】skia Skia is a complete 2D graphic library for drawing Text, Geometries, and Images. See documentation for contribution instructions. 项目地址: https://gitcode.com/gh_mirrors/ski/skia 点击查看 免费下载 本指南以 Skia 官方用…

2026/9/24 15:11:27 阅读更多 →

最新新闻

Python新闻网站项目-4.数据处理和算法应用

Python新闻网站项目-4.数据处理和算法应用

基于Python、Scrapy、Gerapy、NLP以及Django框架构建的新闻采集与展示系统,旨在实现自动化新闻抓取、处理、展示和管理的一体化解决方案。本项目结合了爬虫技术、分布式部署、数据处理、前后端展示以及内容管理系统的构建,最终形成一个功能全面、用户友好的新闻网站。该系统不…

2026/9/24 15:56:06 阅读更多 →
Redwood 集成第三方 API 完整实战:从客户端直连到 GraphQL 服务端代理

Redwood 集成第三方 API 完整实战:从客户端直连到 GraphQL 服务端代理

后端前端Web框架开发工具 【免费下载链接】redwood RedwoodGraphQL 项目地址: https://gitcode.com/gh_mirrors/re/redwood 点击查看 免费下载 Redwood 应用时常需要消费非自有来源的数据,本文以「输入美国邮编查询当前天气」为例,完整演示在…

2026/9/24 15:56:06 阅读更多 →
2分钟拿到完整电子教材 PDF:免截图免拼接的 tchMaterial-parser 教程

2分钟拿到完整电子教材 PDF:免截图免拼接的 tchMaterial-parser 教程

2分钟拿到完整电子教材 PDF:免截图免拼接的 tchMaterial-parser 教程 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地获取课本内容…

2026/9/24 15:56:06 阅读更多 →
Python新闻网站项目-6.Django内容后台管理系统配置

Python新闻网站项目-6.Django内容后台管理系统配置

该项目展示了一个基于Python的Django框架所构建的新闻系统,旨在实现从新闻数据的采集、处理、展示到管理的一体化流程。通过整合Scrapy、Gerapy、NLP等技术,系统不仅具备高效的数据抓取和处理能力,还提供了前后端友好的交互界面及后台管理功能。结合Django的强大拓展性与RES…

2026/9/24 15:56:06 阅读更多 →
Yii 2 翻译工作流完全指南:框架消息提取、文档翻译与国际化协作实践

Yii 2 翻译工作流完全指南:框架消息提取、文档翻译与国际化协作实践

后端Web框架 【免费下载链接】yii2 Yii 2: The Fast, Secure and Professional PHP Framework 项目地址: https://gitcode.com/gh_mirrors/yi/yii2 点击查看 免费下载 导读 Yii 2 作为面向国际化的 PHP 框架,其核心代码、校验器与框架消息均内置了多语…

2026/9/24 15:56:06 阅读更多 →
ComfyUI-WanVideoWrapper 上手指南:5 步跑通文生视频到口型动画

ComfyUI-WanVideoWrapper 上手指南:5 步跑通文生视频到口型动画

ComfyUI-WanVideoWrapper 上手指南:5 步跑通文生视频到口型动画 【免费下载链接】ComfyUI-WanVideoWrapper 项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI-WanVideoWrapper 想给电商团队交一条 5 秒的产品宣传视频,拖入现成工作流却…

2026/9/24 15:55:06 阅读更多 →

日新闻

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:19 阅读更多 →
单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:19 阅读更多 →
C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/24 0:00:19 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →