3

After applying these manifests https://github.com/prometheus-operator/kube-prometheus/blob/main/kustomization.yaml I want to create AlertManager webhook:

apiVersion: monitoring.coreos.com/v1alpha1
kind: AlertmanagerConfig
metadata:
  name: custom
spec:
  route:
    receiver: custom
    groupBy: ['job']
    groupWait: 30s
    groupInterval: 5m
    repeatInterval: 12h
  receivers:
    - name: custom
      webhook_configs:
        - send_resolved: true
          url: https://example.com

getting an error:

error: error validating "alertmanagerconfig.yaml": error validating data: ValidationError(AlertmanagerConfig.spec.receivers[0]): unknown field "webhook_configs" in com.coreos.monitoring.v1alpha1.AlertmanagerConfig.spec.receivers; if you choose to ignore these errors, turn validation off with --validate=false

How to fix that?

Jonas
  • 4,683
  • 4
  • 45
  • 81

4 Answers4

2

The problem is that you are using the configuration reference for the actual AlertManager application and not the one for the Kubernetes Custom Resource provided by the Prometheus Operator.

The Prometheus Operator takes the configuration provided in the form of custom resources like AlertManagerConfig and converts them into actual AlertManager config and updates the configuration file the application uses. That is a part of the reason why you use an operator in the first place. It makes these things convenient for you.

So the actual configuration reference you should be using here is this. This part of the Prometheus Operator's github readme lists down the available custom resources you can use with it.

aaruja
  • 371
  • 2
  • 12
1

Taking this link as reference,

apiVersion: monitoring.coreos.com/v1alpha1
kind: AlertmanagerConfig
metadata:
  name: custom
spec:
  receivers:
    - name: custom
      webhookConfigs:
        - send_resolved: true
          url: https://example.com

You can also check field using kubectl explain command

kubectl explain alertmanagerconfig.spec.receivers

Kiran
  • 311
  • 3
  • 5
1

In addition to the answer from Kiran (Thanks!) one small correction - it is actually sendResolved and not send_resolved.

apiVersion: monitoring.coreos.com/v1alpha1
kind: AlertmanagerConfig
metadata:
  name: custom
spec:
  receivers:
    - name: custom
      webhookConfigs:
        - sendResolved: true
          url: https://example.com
buLLfisH
  • 35
  • 1
  • 6
0

I solved this issue by generating Kubernetes secret named alertmanager-main using this yaml:

global:
  #skipped
route:
  group_by: ['job']
  receiver: Default
  routes:
    - receiver: Watchdog
      repeat_interval: 1m
      match:
        alertname: Watchdog  

receivers:
  - name: Watchdog
    webhook_configs:
      - url: https://my.watchdog.webhook.url

  # Other things

This is Alert Manager config.

I am answering my question after some time and probably this issue with the Prometheus Operator CRD is fixed by now.

Jonas
  • 4,683
  • 4
  • 45
  • 81