Skip to main content

Turn an alert storm into the few incidents that actually matter — dedupe, correlate, rank, and (optionally) AI-explain alerts from any source, with Slack digests.

Project description

alertsift

Turn an alert storm into the few incidents that actually matter — dedupe, correlate, rank, and (optionally) AI-explain alerts from any source, then push a clean digest to Slack.

CI Python 3.9+ License: MIT

It's 2 a.m., you're on-call, and 214 alerts are firing. Your real question isn't "what fired?" — it's "what's actually broken, and where do I start?" Studies show 40–60% of alerts never even get investigated because the signal drowns in noise.

alertsift does that triage for you, in one command:

🔔 214 alert(s) → 3 incident(s)  (deduped to 60, suppressed 22)

  ● checkout-svc (critical, 47 alerts) ← start here
     types: HighLatency, High5xxRate, PodRestart
     checkout-svc is crash-looping and timing out payment calls.
     likely cause: a bad deploy or failing dependency in checkout-svc.

  ● node-7 (medium, 1 alerts)
     types: DiskUsage

Source-agnostic by design. It normalizes alerts from Prometheus/Alertmanager, generic JSON, or plain logs into one shape, then dedupes, groups related alerts into incidents, ranks them, and (optionally) has an LLM explain the likely root cause. Adding a new platform (Datadog, CloudWatch, PagerDuty…) is just one new parser.

Why alertsift

Raw alert channel alertsift
Collapses duplicate alerts
Groups related alerts into incidents
Ranks "what to look at first"
Suppresses known noise .alertsiftignore
Plain-English likely cause ✅ (optional LLM)
Works with no API key --no-ai / mock / local Ollama
Posts a clean digest to Slack

Install

git clone https://github.com/jay-tank/alertsift.git
cd alertsift
pip install .
# optional LLM providers:
pip install '.[claude]'   # or '.[openai]'

Usage

# Triage a file (auto-detects Alertmanager / JSON / logs)
alertsift alerts.json

# From a pipe — e.g. Alertmanager, kubectl, a log tail
amtool alert -o json | alertsift --stdin

# Pure/offline — no LLM, no key (dedupe + correlate + rank only)
alertsift alerts.json --no-ai

# Post a digest to Slack (webhook from env; preview first with --dry-run)
export ALERTSIFT_SLACK_WEBHOOK="https://hooks.slack.com/services/..."
alertsift alerts.json --slack --dry-run     # preview the payload
alertsift alerts.json --slack               # actually post

# Machine-readable
alertsift alerts.json --json

Exit codes: 0 = nothing actionable, 1 = actionable incident(s) found, 2 = usage/parse error — so it slots into cron or CI (only pages you when it matters).

How it works

INPUT ──► parse (pluggable) ──► normalize ──► dedupe ──► suppress ──►
correlate ──► rank ──► [AI enrich] ──► render / --json / Slack

Steps up to rank are pure and fully offline; the LLM only writes the plain-English explanation (and is skippable with --no-ai). See docs/USAGE.md and docs/PROVIDERS.md.

Safety

  • Secrets never leave your machine. Alert summaries are run through best-effort redaction before being sent to an LLM or posted to Slack.
  • Read-only. alertsift never mutates your systems; it reads alerts and reports.
  • Slack webhook comes from the environment ($ALERTSIFT_SLACK_WEBHOOK), never a flag literal, never logged.

Supported sources

Prometheus/Alertmanager, generic JSON, and plain logs today. The core is source-agnostic — Datadog, CloudWatch, and PagerDuty are drop-in parsers on the roadmap.

Limitations

  • Correlation in v1 is heuristic (groups by service/namespace) — solid and explainable, but not a full dependency-graph. Treat "likely cause" as an assist to your judgment, not gospel.
  • Log parsing is best-effort.

License

MIT — see LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

alertsift-0.1.0.tar.gz (22.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

alertsift-0.1.0-py3-none-any.whl (23.5 kB view details)

Uploaded Python 3

File details

Details for the file alertsift-0.1.0.tar.gz.

File metadata

  • Download URL: alertsift-0.1.0.tar.gz
  • Upload date:
  • Size: 22.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for alertsift-0.1.0.tar.gz
Algorithm Hash digest
SHA256 14d260fbf2dfff22d8422c007f5e0d76ae3b45deca9dd118f839c2c2bba2b3e5
MD5 cecc3fcd8999ba1a9c5afac0b34af306
BLAKE2b-256 adb5d34b4130bf0389d805d4ceaf7c42fca6aaa6c06c08b0a068ba40da1bda39

See more details on using hashes here.

File details

Details for the file alertsift-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: alertsift-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 23.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for alertsift-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ca02693fe76417725d49ad5c82561a75390c81ec39298a8ceb285ae10e4b2336
MD5 6a901c27d2e9f7d11109d1ceb53f5c1b
BLAKE2b-256 f9464825c7a5a9f688fffeb0dea596097d5e489856754b31c0334f4220fee0be

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page