Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.allquiet.app/llms.txt

Use this file to discover all available pages before exploring further.

Setup time: 10 Min
Integrate Observium with All Quiet in a matter of minutes. With a simple alert transport script, you can forward Observium alerts to your All Quiet inbound integration webhook URL, keeping incident handling consistent across your observability stack.

1. Create Observium Integration on All Quiet

Sign in to your All Quiet account.

Create Integration

  1. Click on the Inbound Integrations tab.
  2. Click on + Create.

Select Observium as the integration’s type

  1. Enter a Display Name for your integration, e.g. “Observium”.
  2. Select a Team.
  3. Select Observium as the integration’s type.
  4. Click Create Inbound Integration.

Copy Webhook URL

After creating the integration on All Quiet, copy the webhook URL. You will require this URL in step 2 when configuring Observium.

2. Configure the Integration with Observium

Once you’ve set up an integration of type “Observium” with All Quiet, you can configure an alert transport script on your Observium host to forward alerts to All Quiet.

Alert statuses (important)

Observium provides an alert status that indicates whether this is an alert, a recovery, or a suppressed/delayed notification.
  • alert_status = 0: alert → creates / updates an incident
  • alert_status = 1: recovery → resolves the incident
  • alert_status = 2: delayed → dropped (does not create/update incidents in All Quiet default mapping)
  • alert_status = 3: suppressed → dropped (does not create/update incidents in All Quiet default mapping)
Post-processing also supports the alias alertStatus (camelCase) for alert_status. In this guide we use alert_status.

Add an All Quiet alert script

Create a script on the Observium server, for example at /usr/local/bin/observium-allquiet.sh. This script is intentionally shaped to match the default Observium mapping shipped with All Quiet (correlation = alert_id + entity_id, status and severity mapping, title composed from host + message, plus URL, conditions, metrics, entity type).
observium-allquiet.sh
#!/usr/bin/env bash
set -euo pipefail

# Paste the webhook URL from step 1 (use the correct region, e.g. .app or .eu).
WEBHOOK="PASTE_YOUR_WEBHOOK_URL_FROM_STEP_1"

# Observium's External-program transport exports alert fields as `OBSERVIUM_*`
# environment variables and executes the configured script without arguments.
# For manual testing, you can optionally pass positional arguments.
alert_id="${1:-${OBSERVIUM_ALERT_ID:-}}"
entity_id="${2:-${OBSERVIUM_ENTITY_ID:-}}"
alert_status="${3:-${OBSERVIUM_ALERT_STATUS:-}}"          # 0=alert, 1=recovery, 2=delayed (dropped), 3=suppressed (dropped)
alert_severity_raw="${4:-${OBSERVIUM_ALERT_SEVERITY:-}}"  # Critical|Warning|Informational
device_hostname="${5:-${OBSERVIUM_DEVICE_HOSTNAME:-}}"
alert_message="${6:-${OBSERVIUM_ALERT_MESSAGE:-}}"
alert_url="${7:-${OBSERVIUM_ALERT_URL:-}}"
conditions="${8:-${OBSERVIUM_CONDITIONS:-}}"
metrics="${9:-${OBSERVIUM_METRICS:-}}"
entity_type="${10:-${OBSERVIUM_ENTITY_TYPE:-}}"

# All Quiet's default mapping expects lowercase severity values.
alert_severity=$(printf '%s' "$alert_severity_raw" | tr '[:upper:]' '[:lower:]')

curl -sS -m 10 --fail -X POST "${WEBHOOK}" \
  -H 'Content-Type: application/json' \
  -d "$(jq -n \
    --arg alert_id         "$alert_id" \
    --arg entity_id        "$entity_id" \
    --arg alert_status     "$alert_status" \
    --arg alert_severity   "$alert_severity" \
    --arg device_hostname  "$device_hostname" \
    --arg alert_message    "$alert_message" \
    --arg alert_url        "$alert_url" \
    --arg conditions       "$conditions" \
    --arg metrics          "$metrics" \
    --arg entity_type      "$entity_type" \
    '{alert_id:$alert_id, entity_id:$entity_id, alert_status:$alert_status,
      alert_severity:$alert_severity, device_hostname:$device_hostname,
      alert_message:$alert_message, alert_url:$alert_url,
      conditions:$conditions, metrics:$metrics, entity_type:$entity_type}')"
Make it executable:
chmod +x /usr/local/bin/observium-allquiet.sh

Wire the script into Observium alerting

Configure Observium to execute the script when alerts fire and recover.
Observium exports alert fields as environment variables (prefixed with OBSERVIUM_...) and then executes the configured command without positional CLI arguments. The important part is: point Observium to /usr/local/bin/observium-allquiet.sh.
Example invocation context (conceptually; Observium sets env vars and runs the script without args):
OBSERVIUM_ALERT_ID=040109
OBSERVIUM_ENTITY_ID=780431
OBSERVIUM_ALERT_STATUS=0
OBSERVIUM_ALERT_SEVERITY=Critical
OBSERVIUM_DEVICE_HOSTNAME=101.131.544.3
OBSERVIUM_ALERT_MESSAGE=status changed -> [DOWN]
OBSERVIUM_ALERT_URL=https://...
OBSERVIUM_CONDITIONS=...
OBSERVIUM_METRICS=...
OBSERVIUM_ENTITY_TYPE=port
...

# Observium then executes the script without arguments:
/usr/local/bin/observium-allquiet.sh
For recoveries, Observium should export OBSERVIUM_ALERT_STATUS=1 (the script forwards it as alert_status). Manual test (optional):
/usr/local/bin/observium-allquiet.sh 040109 780431 0 critical "host.example" "status changed -> [DOWN]" "https://example/url" "" "" port

3. Test Your Integration

Navigate back to All Quiet and open the Payload Mapping tab of the integration you just created.
  1. Trigger a test alert in Observium.
  2. Verify the payload shows up in Latest payloads.
  3. Check that the pre-built mapping creates an incident with the expected Title, Status, and Severity.
You’re ready to go. If you set up your integration this way, Observium alerts will automatically create and update All Quiet incidents.

Adjust Payload Mapping

Looking to customize the fields of your incidents by adjusting the pre-built payload mapping? Simply head over to the “Payload” tab within your integration and make the necessary edits to the mapping. For detailed guidance, you may check out our payload mapping documentation.
Using our Terraform provider? Download the default mapping template and tailor it to your needs from https://allquiet.app/api/integrations/terraform/default/Observium.tf.