Przejdź do treści
Biblioteka skilli
DevOps i chmura · Testowanie

e2e-alertmanager-test

/e2e-alertmanager-test

Renderuje podgląd powiadomień alertów (e-mail tekstowy i HTML, załącznik Slack, webhook JSON) przez odtworzenie oczekiwanych alertów z pliku testów jednostkowych Prometheusa na działającym Alertmanagerze.

Licencja
BSD-3-Clause
Ostatnia zmiana repozytorium
15.10.2026

Ocena i bezpieczeństwo

100/ 100Klasa: dobry
Format25 / 25
Frontmatter z nazwą i opisem, poprawna nazwa, opis do 1024 znaków, nazwa zgodna z folderem.
Odkrywalność25 / 25
Opis mówi, kiedy użyć skilla, ma sensowną długość i jest w 3. osobie.
Treść35 / 35
Co najmniej 150 słów i do 500 linii, nagłówki, listy kroków, przykłady albo kod.
Higiena15 / 15
Bez zaślepek typu TODO, bez ścieżek Windows, z licencją.
Ryzykobrak sygnałów w skanie
Pliki w paczce
1
Skrypty
0
Komentarze HTML
0
Adresy URL w SKILL.md
2
Przestarzałość

Brak sygnałów. Repozytorium zmienione 15.10.2026, bez odwołań do wycofanych modeli i API.

Licencja

BSD-3-Clause, otwarta.

Co robi i kiedy

Renderuje podgląd powiadomień alertów (e-mail tekstowy i HTML, załącznik Slack, webhook JSON) przez odtworzenie oczekiwanych alertów z pliku testów jednostkowych Prometheusa na działającym Alertmanagerze.

Wyzwalacze z opisu

print preview
Oryginalny opis (EN)

Render end-to-end previews of what an alert notification will actually look like (plain-text email, HTML email, Slack attachment JSON, raw webhook JSON) by replaying a Prometheus unit-test file's expected alerts through a live Alertmanager. Effectively a "print preview" for alerts. Use to review notification formatting/content before merging alert changes, or in CI against an ephemeral Alertmanager to produce a diffable preview artifact. Requires a reachable Alertmanager API and a promtool-style unit-test file as input. Can be made fully hermetic in CI by pointing the ephemeral Alertmanager at

Jak działa

  1. When to use this skill
  2. Prerequisites
  3. Achieving full hermeticity in CI
  4. Setup
  5. Usage
  6. Reading the output
  7. Agent workflow
Sekcje z nagłówków SKILL.md, w oryginale · 154 linii, 999 słów
Podgląd SKILL.md
---
name: e2e-alertmanager-test
description: Render end-to-end previews of what an alert notification will actually look like (plain-text email, HTML email, Slack attachment JSON, raw webhook JSON) by replaying a Prometheus unit-test file's expected alerts through a live Alertmanager. Effectively a "print preview" for alerts. Use to review notification formatting/content before merging alert changes, or in CI against an ephemeral Alertmanager to produce a diffable preview artifact. Requires a reachable Alertmanager API and a promtool-style unit-test file as input. Can be made fully hermetic in CI by pointing the ephemeral Alertmanager at a skeleton config that keeps the team's real routing/grouping/inhibition rules but overrides receiver connection details, so no real notification ever leaves the runner.
license: BSD-3-Clause
---

# e2e-alertmanager-test

Takes the `exp_alerts` fixtures out of a Prometheus `promtool`-style unit
test file, POSTs each one to a real Alertmanager's `/api/v2/alerts`
endpoint, and renders what the resulting notification would look like in
several formats. It does not test routing/inhibition logic inside this
tool itself — it exercises whatever routing your target Alertmanager
instance is actually configured with, and shows you the rendered output.

## When to use this skill

- Before merging an alert change, to see the actual notification content
  (subject line, body, Slack attachment) a human on-call would receive —
  not just "does it fire," but "does it read well."
- As a CI step against a **throwaway/ephemeral** Alertmanager container,
  producing a rendered-output artifact that reviewers can diff between
  runs, the same way a UI snapshot test is diffed. Fed a skeleton config
  (see below), this run is fully hermetic — see [Achieving full
  hermeticity in CI](#achieving-full-hermeticity-in-ci).
- This tool's own external dependency is the Alertmanager instance, not
  historical data — unlike `alert-hysteresis`/`stale-alerts-analyzer`, it
  needs no real production history, so a fresh, disposable Alertmanager
  instance is sufficient and the run is fully reproducible.

## Prerequisites

1. **A Prometheus unit-test file** with `exp_alerts` fixtures — typically
   the output of `autogen-promql-tests` (see that skill) with real,
   filled-in labels/annotations, or a hand-written `promtool` test file.
   Test cases whose `exp_alerts` is empty (asserting "does not fire") are
   silently skipped — there's nothing to render for those.
2. **A running Alertmanager** reachable over HTTP, defaulting to
   `http://localhost:9093`. For CI or local preview, run one disposably:
   ```bash
   docker run -d -p 9093:9093 prom/alertmanager
   ```

## Achieving full hermeticity in CI

The `e2e-alertmanager-test` binary itself is never hermetic on its own —
it always needs to POST to a real, reachable Alertmanager. But the
routing config *that Alertmanager instance loads* is entirely under your
control, and that's where every external dependency can be removed:

1. Treat the team's real `alertmanager.yml` — the one that governs
   production `route:` and `inhibit_rules:` — as the source of truth for
   routing/grouping/inhibition logic. That's the logic worth exercising
   in a test.
2. Build a **skeleton config** for CI that keeps that routing tree intact
   but overrides every receiver's connection details — `smtp_smarthost`,
   Slack `api_url`, PagerDuty/webhook URLs and keys — with local, no-op
   values. For example, point `smtp_smarthost` at a local SMTP catcher
   (e.g. MailHog/smtp4dev) instead of the real relay, so the receiver
   still accepts a connection and the message headers can be rendered and
   diffed, but no mail actually leaves the runner.
3. Start the ephemeral Alertmanager for the CI job with the skeleton
   config, not the real one, and point `--alertmanager-url` at it.

With this setup, the Alertmanager under test still runs the real
routing/grouping/inhibition rules — so a routing regression still
surfaces in the diff — but delivery stops at the local catcher: no real
email, Slack message, or PagerDuty incident is ever created. That's what
makes this tool's CI output (rendered notification content, including
SMTP headers) safe to treat as a fully hermetic, deterministic artifact.
Generating and maintaining the skeleton config (importing the team's
routing tree while stripping receiver secrets) is on you — this repo
doesn't ship tooling for that merge/override step, and `--alertmanager-config`
(below) does not perform it either; it only enriches this tool's own
rendered output text.

Keep the skeleton config's routing tree in sync with the real one, ideally
generated from it rather than hand-maintained — if it drifts, a green CI
run stops guaranteeing anything about production routing.

## Setup

```bash
go build -o bin/e2e-alertmanager-test ./cmd/e2e-alertmanager-test
# or: go install github.com/conallob/o11y-analysis-tools/cmd/e2e-alertmanager-test@latest
```

## Usage

```
e2e-alertmanager-test [options]
```

| Flag | Default | Effect |
|---|---|---|
| `--tests` | *(required)* | Path to the Prometheus unit-test YAML file to replay. |
| `--alertmanager-url` | `http://localhost:9093` | Alertmanager API base URL to POST alerts to. |
| `--alertmanager-config` | `""` | Optional path to `alertmanager.yml` — used only to enrich rendered output (e.g. `smtp_from`, receiver name in the routing-info footer), not to actually apply routing rules locally. |
| `--output` | `email` | One of `email`, `email-html`, `slack`, `json`, `full`. |
| `--full` | `false` | Also render the HTML body inside `email`/`email-html` output. |
| `--verbose` | `false` | Print the Alertmanager URL being posted to per alert. |

### Typical invocations

```bash
# Plain-text email preview
e2e-alertmanager-test --tests=./alerts_test.yml --output=email

# Full HTML email rendering
e2e-alertmanager-test --tests=./alerts_test.yml --output=email-html --full

# Slack attachment JSON preview
e2e-alertmanager-test --tests=./alerts_test.yml --output=slack

# Everything, redirected to a diffable artifact for CI
e2e-alertmanager-test --tests=./alerts_test.yml --output=full > notifications.txt
```

## Reading the output

Each test case with non-empty `exp_alerts` becomes one numbered "Test #N",
printing the alert name and then the rendered output in the requested
format(s), followed by a summary:

```
═══════════════════════════════════════════════════════════
Summary
═══════════════════════════════════════════════════════════
Total test cases: 3
Successful: 3
Failed: 0
```

Exit code `1` if any alert failed to POST successfully (e.g. Alertmanager
unreachable or returned non-200), `0` otherwise. Note: "successful" here
means the POST to Alertmanager succeeded, not that routing/inhibition
matched any particular expectation — this tool doesn't assert routing
outcomes, it only renders notification content.

## Agent workflow

1. Confirm a unit-test file with real (non-`TODO`) `exp_alerts` exists —
   if not, point the user at `autogen-promql-tests` first.
2. Confirm an Alertmanager is reachable at `--alertmanager-url` (start a
   disposable one via Docker if none is running and this is a local/CI
   context). **Never point this at a production Alertmanager** — it really
   posts alerts, and a receiver with live connection details will really
   dispatch them. For CI, load the disposable instance with a [skeleton
   config](#achieving-full-hermeticity-in-ci) that keeps real
   routing/grouping/inhibition but swaps receiver connection details for
   local no-op ones, so the run stays hermetic even though it exercises
   real routing logic.
3. Run with `--output=full` to capture every rendering for a
   comprehensive review, or `--output=slack`/`--output=email-html` when a
   user specifically wants to review one channel's format.
4. For CI: redirect output to a file and store it as a build artifact so
   subsequent runs can be diffed to catch unintended notification-content
   regressions from template/label changes.

Wersje

W bazie nie ma innych skilli o nazwie e2e-alertmanager-test.

Migawka bazy z 28.10.2026 · wersja paczki fb707142ae49 (skrót SHA-256 całej paczki)

Pobrania w ostatnich 30 dniach: 0 · ranking

Zgłoś problem z tym skillem: szkodliwa treść, błędny opis albo prośba autora o usunięcie.

Podobne skille

  • 100prometheus-alertmanager
    Konfiguruje Prometheus Alertmanager: routing, grupowanie, wyciszanie i dostarczanie powiadomień do Slacka, PagerDuty i e-maila, reguły inhibicji oraz diagnozę potoku alertów.
  • 100alerting
    Pomaga w regułach alertów, Alertmanagerze, Prometheusie i Grafanie, routingu powiadomień, PagerDuty, dyżurach, eskalacji i strojeniu progów.
  • 100promql-cody
    Łączy sześć narzędzi CLI o11y-analysis-tools do PromQL i Alertmanagera w jeden przepływ dla repozytorium reguł: rozdziela narzędzia bezpieczne dla CI od interaktywnych i ustala kolejność uruchamiania.
  • 100alertmanager-query
    Odpytuje AlertManager przez curl i API v2: aktywne i wyciszone alerty, tworzenie oraz usuwanie silences i sprawdzanie stanu inhibicji.
  • 100robusta-dev
    Pomaga w platformie Robusta do obserwowalności Kubernetes: instalacja, playbooki, ujścia powiadomień, własne akcje, integracja z Prometheus i AlertManager oraz automatyczna naprawa incydentów.
  • 100alertmanager-rules-config
    Prawdopodobnie zarządza konfiguracją reguł Alertmanagera w kategorii DevOps, na podstawie nazwy skilla.

Uwagi i zgłoszenia

Wiadomość trafi do Bartosza Sokolińskiego. Adres e-mail jest potrzebny tylko do odpowiedzi. Szczegóły w polityce prywatności.