为 PagerDuty 配置 alertmanager 配置时的 prometheus-operator

为 PagerDuty 配置 alertmanager 配置时的 prometheus-operator

有下一个问题:尝试通过 CRD 设置警报管理器配置时,pod 上的配置错误。问题如下:

- routing_key: |
      *****

毕竟 CD 使用的是多行字符串类型,它会导致配置崩溃 - alertmanager 无法将其理解为 pagerduty 配置,并且不使用默认模板进行自定义配置。它没有为 PD 生成预期的 json,并且 PD 返回状态代码 400。预期配置如下所示:

- routing_key: ****

但只有当我使用 CRD 时才会这样。如果我不使用 CRD(在全局值中)进行设置,它就可以正常工作。

更多信息:

配置.yaml:

route:
  groupBy: ['alertname', 'namespace']
  groupWait: 10s
  groupInterval: 30s
  repeatInterval: 30m
  receiver: 'pagerDuty'
  continue: true
receivers:
- name: 'pagerDuty'
  pagerdutyConfigs:
  - url: 'https://events.eu.pagerduty.com/v2/enqueue'
    routingKey: { name: name_of_secret, key: ke_of_secret }

用于将其构建为 CRD 的 Helm 图表模板:

{{- $files := .Files.Glob "alerting/**/config.yaml" }}
{{- if $files }}
{{- range $path, $fileContents := $files }}
---
{{- $namespace := regexReplaceAll "^.*/(.*?)/.*" $path "${1}"}}
apiVersion: monitoring.coreos.com/v1alpha1
kind: AlertmanagerConfig
metadata:
  name: {{ printf "%s-%s" $namespace "alertmanager-config" }}
  namespace: {{ $namespace }}
spec: {{ $.Files.Get $path | nindent 2}}
{{- end }}
{{- end }}

之后转到 ArgoCD 并与错误类型的 routing_key 同步。

尝试使用 v1 API(使用 service_key),同样的问题。

有人有同样的问题吗?怎么解决?试了很多次,但想想——这是一个错误。

答案1

我对 emailConfig 也遇到了同样的问题。

这是因为我的密码在\n最后的秘密中进行了 base64 编码。

您应该尝试使用以下命令生成秘密的 base64 字符串-n

echo -n "secretstring" | base64

我希望这会有所帮助。

相关内容