prometheus / alertmanager

Prometheus Alertmanager
https://prometheus.io
Apache License 2.0
6.61k stars 2.14k forks source link

Alertmanager HA external URL #1260

Open nelsonfassis opened 6 years ago

nelsonfassis commented 6 years ago

What did you do? This is my Alertmanager Statefulset so far.

spec:
      containers:
      - name: alertmanager
        image: prom/alertmanager:v0.12.0
        args:
          - '--config.file=/etc/alertmanager/config.yml'
          - '--storage.path=/alertmanager'
          - '--web.external-url=http://myk8sdomain.com:31080/alertmanager'
          - '--mesh.listen-address=:6783'
          - '--mesh.peer=alertmanager-mesh'

Alertmanager service:

apiVersion: v1
kind: Service
metadata:
  name: alertmanager
  labels:
    app: alertmanager
spec:
  ports:
  - port: 9093
    name: alertmanager
  clusterIP: None
  selector:
    app: alertmanager

Prometheus configuration:

      alerting:
        alertmanagers:
        - scheme: http
          static_configs:
          - targets:
             - alertmanager-0.alertmanager:9093
             - alertmanager-1.alertmanager:9093

What did you expect to see? I expected Prometheus (as many instances as needed) to fire alerts to Alertmanager that would dedup those alerts and fire alerts to my slack. What did you see instead? Under which circumstances? If I have --web.external-url set:

level=error ts=2018-02-26T20:22:13.937418135Z caller=notifier.go:444 component=notifier alertmanager=http://alertmanager-0.alertmanager:9093/api/v1/alerts count=1 msg="Error sending alert" err="bad response status 404 Not Found"

If I comment out --web.external-url: Alerts are properly sent to Alertmanager which fires to my Slack. But when I click on the link in the slack alert, it opens ( http://alertmanager-1:9093/#/alerts?receiver=slack_alert ) instead of (http://myk8sdomain.com:31080/alertmanager/alerts?receiver=slack_alert').

I've also tried using nodePort as service to make sure Ingress wasn't the problem here, same result.

Environment

0.12.0

nelsonfassis commented 6 years ago

Execing into my pod and doing a wget http://alertmanager-1.alertmanager:9093/alertmanager/api/v1/alerts works, using path_prefix on my prometheus configmap didn't help at all: `

alerting:
        alertmanagers:
        - scheme: http
          path_prefix: "/alertmanager"
          static_configs:
          - targets:
              - alertmanager-0.alertmanager:9093
              - alertmanager-1.alertmanager:9093

`

simonpasquier commented 5 years ago

Have you tried adding --web.route-prefix="/" to AlertManager flags? When setting --web.external-url=http://myk8sdomain.com:31080/alertmanager, AlertManager will default web.route-prefix to the external URL's path (eg /alertmanager).

pathania29 commented 4 years ago

Any Answer for above problem. I am getting same error

abhigupta1207 commented 3 years ago

@pathania29 Can you help me in configuring alertmanager HA on Kubernetes?