DEV Community

DevOps VN
DevOps VN

Posted on

1

Replace Opsgenie with this open-source alert router (save $2,280/year)

Tired of paying $199.5/month (10 users) for Opsgenie? Here’s how teams like yours are slashing costs by 90% while gaining full control over alert routing and templates using Versus Incident – an open-source alternative trusted by DevOps teams managing 10k+ servers.

Why Teams Are Switching

Feature Opsgenie Versus Incident
Cost $2,280/year (10 users) Free
Custom Templates Limited Go Templating
Multi-Channel Routing Add-on Fees Built-in
Lock-in Risk High None

In this guide, you’ll learn how to route Prometheus Alertmanager alerts to Slack and Telegram using the Versus Incident, while fully customizing alert messages.

Versus

Step 1: Redirect Alertmanager to Versus (5 Minutes)

Update your alertmanager.yml to bypass Opsgenie’s webhook:

route:
  receiver: 'versus-incident'
  group_wait: 10s  # Faster than Opsgenie's 30s default!

receivers:
- name: 'versus-incident'
  webhook_configs:
  - url: 'http://versus-host:3000/api/incidents' 
    send_resolved: true  # Get resolution notices for free
Enter fullscreen mode Exit fullscreen mode

Step 2: Deploy Versus Incident (With Multi-Channel Fallback)

Create a configuration folder:

mkdir -p ./config
Enter fullscreen mode Exit fullscreen mode

Create a configuration file config/config.yaml:

name: versus
host: 0.0.0.0
port: 3000

alert:
  slack:
    enable: true
    token: ${SLACK_TOKEN}
    channel_id: ${SLACK_CHANNEL_ID}
    template_path: "/app/config/slack_message.tmpl"

  telegram:
    enable: true
    bot_token: ${TELEGRAM_BOT_TOKEN}
    chat_id: ${TELEGRAM_CHAT_ID}
    template_path: "/app/config/telegram_message.tmpl"
Enter fullscreen mode Exit fullscreen mode

docker-compose.ymlAlways-on alerting with Slack + Telegram backup:

version: '3.8'
services:
  versus:
    image: ghcr.io/versuscontrol/versus-incident
    ports:
      - "3000:3000"
    volumes:
      - ./config:/app/config  # Persist templates
    environment:
      SLACK_ENABLE: "true"
      SLACK_TOKEN: "xoxb-..."
      SLACK_CHANNEL_ID: "C123"
      TELEGRAM_ENABLE: "true"  # Failover channel
      TELEGRAM_BOT_TOKEN: "123:ABC"
      TELEGRAM_CHAT_ID: "-456"
Enter fullscreen mode Exit fullscreen mode

Key Advantage: Unlike Opsgenie’s per-channel pricing, Versus lets you blast alerts to unlimited channels for $0.

Step 3: Create Context-Rich Templates

Slack Template (config/slack_message.tmpl):

🔥 {{.commonLabels.severity | upper}} ALERT: {{.commonLabels.alertname}}  
📦 *Cluster*: {{.commonLabels.cluster | default "N/A"}}  
🚨 *Status*: {{.status | title}}  

{{range .alerts}}
⏰ {{.startsAt | formatTime}}  
{{.annotations.description | indent 2}}
{{end}}

{{if .commonLabels.runbook}}📖 <{{.commonLabels.runbook}}|Runbook>{{end}}
Enter fullscreen mode Exit fullscreen mode

Telegram Template (config/telegram_message.tmpl):

🚩 <b>{{.commonLabels.alertname}}</b> ({{.status}})

{{range .alerts}}
🕒 {{.startsAt | formatTime}}
{{.annotations.summary}}
{{end}}

{{if eq .commonLabels.severity "critical"}}🔴 <i>PAGE ON-CALL</i>{{end}}
Enter fullscreen mode Exit fullscreen mode

Step 4: Advanced Routing

Route to different channels based on labels:

# Send database alerts to DBA team
curl -X POST http://versus-host:3000/api/incidents?slack_channel_id=C001DB \
  -H "Content-Type: application/json" \
  -d '{"commonLabels":{"alertname":"PostgresqlDown","team":"dba"}}'

# Send frontend alerts to web-team
curl -X POST http://versus-host:3000/api/incidents?slack_channel_id=C002FE \
  -H "Content-Type: application/json" \
  -d '{"commonLabels":{"alertname":"FrontendLatency","team":"web"}}'
Enter fullscreen mode Exit fullscreen mode

Cost Comparison:

Opsgenie charges $199.5/month (10 users) for basic routing rules – for something Versus does better for free.


Migration Checklist

  1. Redirect Alertmanager webhooks to Versus
  2. Set up multi-channel fallbacks (Slack + Telegram + Email)

Cons

Q: How do we handle on-call schedules?

Versus don't support on-call schedules now, but it's in the roadmap

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

Top comments (0)