helm Prometheus values.yaml 的 alertmanager.yml 部分中的 external_labels 配置出错

Posted

技术标签:

【中文标题】helm Prometheus values.yaml 的 alertmanager.yml 部分中的 external_labels 配置出错【英文标题】:Error with external_labels config in alertmanager.yml section of helm Prometheus values.yaml 【发布时间】:2021-11-03 21:16:02 【问题描述】:

我已经使用 helm 将 prometheus 安装到我的 kubernetes 集群中,如下所示;

helm list
NAME        NAMESPACE   REVISION    UPDATED                                 STATUS      CHART               APP VERSION
prometheus  prometheus  9           2021-09-07 08:54:54.262013 +0100 +01    deployed    prometheus-14.6.0   2.26.0

我正在尝试在 values.yaml 中应用 external_labels 来识别发送到 Alertmanager 的时间序列。我已经使用 prometheus 文档来获得我认为正确的配置,如下所示;

alertmanagerFiles:
  alertmanager.yml:
    global:
      external_labels:
        environment: 'perf'

我的安装没问题;

helm upgrade --install prometheus .

但是由于以下错误,我的 prometheus-server pod 崩溃了;

level=error ts=2021-09-06T18:49:25.059Z caller=coordinator.go:124 component=configuration msg="Loading configuration file failed" file=/etc/config/alertmanager.yml err="yaml: unmarshal errors:\n  line 2: fie │
│ ld external_labels not found in type config.plain"

这里的许多答案都指向缩进问题,但是我看不出我做错了什么……来自 Prometheus 文档;

global:
  # The labels to add to any time series or alerts when communicating with
  # external systems (federation, remote storage, Alertmanager).
  external_labels:
    [ <labelname>: <labelvalue> ... ]

一两个星期以来,我一直在摸不着头脑 - 希望能有第二双更有经验的眼睛,谢谢! ????

【问题讨论】:

【参考方案1】:

我已经设法让这个工作..首先我把配置放在完全错误的地方。我在查看 prometheus alertmanager 的 github 页面时发现了这一点,但我看不到“良好配置测试”中定义的字段,因此必须在其他地方进行配置..

确实 prometheus 配置 page 这么说 - 所以我在 ## Prometheus 服务器 ConfigMap 条目下添加了一个部分;

serverFiles:
  prometheus.yml:
    global:
      external_labels:
        environment: perf

这也不起作用,吊舱崩溃了。事实证明,这应该在 values.yaml 中配置 prometheus-server 容器本身的部分中进行配置 - 其中***字段 = 服务器,我们可以看到这里也配置了默认的全局值。所以我在这个部分添加了 external_labels;

server: 
  global:
    scrape_interval: 1m
    scrape_timeout: 10s
    evaluation_interval: 1m
    external_labels:
      environment: perf

当我使用helm upgrade --install prometheus . 升级时,我现在可以在kubectl get cm prometheus-server -o yaml 中看到正确的配置,而且我的寻呼机职责警报现在会在摘要中显示环境名称。

关于如何在不必杀死 pod/创建 OOM 等的情况下测试警报的一个小技巧是创建一个警报 expr:它会不断触发(例如 kube_pod_container_status_restarts_total &gt; 3),这是我偶然做的,但被证明非常有用。

【讨论】:

以上是关于helm Prometheus values.yaml 的 alertmanager.yml 部分中的 external_labels 配置出错的主要内容,如果未能解决你的问题,请参考以下文章

k8s实践17:监控利器prometheus helm方式部署配置测试

helm 安装prometheus operator 并监控ingress

k8s Helm安装Prometheus Operator

helm v3 部署prometheus 与 grafana

使用 helm 将 prometheus 配置到 kubernetes 中的特定节点上

如何用helm为grafana添加prometheus数据源?