ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

监控 500 节点后 Prometheus 内存去哪了:沿数据链路拆解调优路径

监控 500 节点后 Prometheus 内存去哪了:沿数据链路拆解调优路径 监控 500 节点后 Prometheus 内存去哪了沿数据链路拆解调优路径【免费下载链接】prometheusThe Prometheus monitoring system and time series database.项目地址: https://gitcode.com/GitHub_Trending/pr/prometheus监控节点数突破 500 台后你会发现 Prometheus 的内存不再随目标数线性增长而是跳着涨多接几十个服务RSS 翻倍磁盘也填得越来越快。这类问题很少是单一原因而是采集、存储、查询到自观测这条完整链路上某个小规模没问题、大规模就崩的配置在拖后腿。让采集频率跟着业务走抓取间隔怎么配才不浪费 CPU默认 scrape_interval 是 15s对通用场景是均衡值但不是每个 job 的正确答案。采样率与抓取频率成正比1000 个目标全用 5s 抓取samples/s 可能是必要值的数倍。实际跑起来你会发现多数非核心服务 15s 都嫌快更不用提 5s。改前所有目标用全局 15s改后global: scrape_interval: 30s # 默认值放宽采样量直接减半 scrape_configs: - job_name: core-payments scrape_interval: 10s # 只有真正关键的 job 保留短间隔这里有个坑scrape_timeout 必须小于间隔否则同一目标上两次抓取会重叠。改完不用重启进程发 reload 信号即可重载后看 ingested samples/s 的下降幅度和抓取耗时 P99确认生效。把高基数标签砍掉head 序列为什么降不下来Prometheus 把活跃序列存在内存head里每种唯一标签组合就是一条时间序列还没写入数据时元数据就占内存了。user_id、request_id 这类身份型标签一旦进了指标序列数能从几万飙到几百万内存自然不降反升。先用 promtool tsdb analyze 数据目录 看 top 标签取值分布定位是哪些标签在膨胀再在采集侧处理把服务导出的所有标签原样保留改为用 relabel_configs 的 drop 动作滤掉不用于告警的高基数标签或干脆用 metric_relabel_configs 过滤掉整个序列族。确认方式prometheus_tsdb_head_series 曲线走平内存不再跳涨。如果滤完标签还在涨就该认真审视指标定义本身是不是有病。把磁盘上的数据关进笼子 时间保留和大小保留选哪个默认保留 15 天且不限大小采样率高时磁盘在 15 天到来前就满了。官方给过粗算公式所需空间 ≈ 保留秒数 × 每秒采样数 × 每样本 1-2 字节先按这个算理论值再设上限。storage: tsdb: retention: 15d # 时间策略 retention_size: 500GB # 大小上限两者谁先到谁触发用大小保留时注意官方建议 retention_size 设为分配磁盘的 80-85%给压缩compaction留缓冲——压缩期间新旧 block 同时占盘磁盘占用会短暂超过上限。生效后看磁盘曲线是否变成锯齿形涨到某处回落而不是持续爬升。让远程写入接管长期数据本地只留几天行不行需要回看三个月前的数据时不如把长期存储交给 remote write 通道数据转发到 Thanos、Cortex 这类远端本地只保留最近几天。边缘节点或资源受限环境可以更极端用 Agent 模式--enable-featureagent只采集、只远程写入不本地存储不查询内存占用直接降一档。remote_write: - url: https://remote-storage.example.com/api/v1/write remote_timeout: 30s retry_on_rate_limit: true # 被限流时重试而不是丢弃确认指标prometheus_remote_storage_samples_pending 应稳定在 0 附近持续堆积说明远端接收能力跟不上得扩远端或降采样。把自观测指标摆上面板优化别靠体感盯住三个指标prometheus_tsdb_head_series序列数对应 head 内存、prometheus_tsdb_compaction_duration_seconds压缩是否耗时过长、prometheus_target_interval_length_seconds实际抓取间隔是否偏离配置。挂到 dashboard 上看一周趋势突刺就是信号。优化不是一次性配置而是观察→调整→再观察的持续过程。具体配置项参考官方文档 docs/storage.md 和 docs/configuration/configuration.md。【免费下载链接】prometheusThe Prometheus monitoring system and time series database.项目地址: https://gitcode.com/GitHub_Trending/pr/prometheus创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表