Prometheus yaml 文件中的变量替换
Posted
技术标签:
【中文标题】Prometheus yaml 文件中的变量替换【英文标题】:Variable substitution in Prometheus yaml file 【发布时间】:2019-11-21 16:14:32 【问题描述】:我正在使用给定的配置将 Prometheus 与 Thanos 一起部署:
global:
scrape_interval: 15s # By default, scrape targets every 15 seconds.
# Attach these labels to any time series or alerts when communicating with
# external systems (federation, remote storage, Alertmanager).
external_labels:
monitor: %%CLUSTER%%
replica: $(HOSTNAME)
我从 Thanos 示例文档中得到了这个,但我无法完成这个工作。 "%%CLUSTER%% 给出 "cannot start with the given token" 错误,而 HOSTNAME 替换永远不会发生。
我在这个问题上读到不支持变量替换,但 Thanos 文档另有说明。 https://github.com/prometheus/prometheus/issues/2357
还有其他方法可以实现吗?
【问题讨论】:
【参考方案1】:更新:
看起来 Thanos 开箱即用。 我们必须配置 Thanos 以监视具有此模板化变量的配置文件并将输出生成到目录。然后 Prometheus 选择这个文件作为它的配置文件。该文件将包含来自 Thanos sidecar 的“替换值”。
【讨论】:
目前尚不清楚您要实现什么,但您最初的问题失败了,不是因为这些是 Thanos 的一些特殊模板变量,而是因为它们应该被 github.com/improbable-eng/thanos/blob/… 的教程设置脚本替换。 我认为灭霸也将其设置为边车的一部分。因为,当我将标签指定为 '$(HOSTNAME)' 并将该配置文件指向 sidecar 的重新加载器配置时,它会自动将其替换为输出文件中的 pod 名称。如果我理解有误,请告诉我!【参考方案2】:从 Prometheus 2.27 开始就有一种标准的方法。
见disabled_features
--enable-feature=expand-external-labels
根据当前环境变量的值替换external_labels值中的$var
或$var
。对未定义变量的引用被空字符串替换。
还有这个replyroidelaplui
【讨论】:
以上是关于Prometheus yaml 文件中的变量替换的主要内容,如果未能解决你的问题,请参考以下文章
Google Cloud Build 不会替换 cloudbuild.yaml 的机密部分中的值
helm Prometheus values.yaml 的 alertmanager.yml 部分中的 external_labels 配置出错