Skip to content

Slack

Setup

1. Create Slack app

api.slack.comCreate New AppFrom Scratch.

Name: „Vesana Alerts".

2. Activate Incoming Webhooks

App settings → Incoming Webhooks → toggle „Activate Incoming Webhooks".

3. Generate webhook URL

Add New Webhook to Workspace → pick channel → Allow.

Slack shows a URL like https://hooks.slack.com/services/T.../B.../....

4. Configure in Vesana

/notification-channelsNew channel → type Slack:

Field Value
Name „Slack #alerts"
Webhook URL from step 3
Severity filter only CRIT / WARN+ / all
Recovery notifications yes / no

Format

Vesana sends structured Slack messages with:

  • Severity color (red/yellow/green as attachment color)
  • Host name and service name as header
  • Plugin output as body
  • Buttons:
    • Ack — direct acknowledge without browser
    • Open host — deep link
🔴 CRITICAL — web01.acme.local — Disk /var
─────────────────────────────────────────
Disk usage 96.4% (Threshold 95%)
─────────────────────────────────────────
[Ack]  [Open host]
─────────────────────────────────────────
Tenant: Acme · Profile: Linux Web Server

Interactive actions

For „Ack" to work directly from Slack, Slack needs a callback endpoint:

  • Activate Interactivity & Shortcuts in the Slack app
  • Request URL: https://your-domain.tld/api/v1/integrations/slack/interaction
  • Set the signing secret from the Slack app in the Vesana channel

Without signing secret, integration is read-only (buttons just open the browser).

Multiple channels

A Slack channel per severity is common:

  • #alerts-critical — CRIT only
  • #alerts-warn — WARN+
  • #alerts-recovery — recovery notifications

Alert rules reference the appropriate channels.

Threading

No threading currently — each alert is its own message. With grouping (see Alert rules), the group is sent as one message block.

Next