From 412042fc08be2ee550fbadfc871ba861d87cd414 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 10 May 2026 09:05:28 +0000 Subject: [PATCH 01/14] Reorganize alerts/events docs: move Send Alerts API to Classic, add Send Events API - Move "Send Alerts API" out of HTTP APIs and into "Robusta Classic / Send Alerts to Robusta" as the first entry, with a card on the landing page. - Add a new "Send Events API" page documenting the unified /webhooks ingestion endpoint described in relay's 2026-05-10_webhooks design doc. - Add per-origin integration pages for AlertManager, PagerDuty, Datadog, New Relic, Dynatrace, Grafana, GCP Monitoring, Azure Monitor, Splunk, Sentry, LaunchDarkly, Argo CD, GitHub, Opsgenie, Rootly, Incident.io, Nagios, SolarWinds, and AWS CloudWatch. - Link the per-origin pages from the Send Events API page in the same grid-card layout used by Send Alerts to Robusta. --- .../exporting/robusta-pro-features.rst | 2 +- .../exporting/send-events-api.rst | 253 ++++++++++++++++++ .../exporting/send-events/alertmanager.rst | 48 ++++ .../exporting/send-events/argocd.rst | 52 ++++ .../exporting/send-events/aws-cloudwatch.rst | 58 ++++ .../exporting/send-events/azure-monitor.rst | 38 +++ .../exporting/send-events/datadog.rst | 38 +++ .../exporting/send-events/dynatrace.rst | 38 +++ .../exporting/send-events/gcp-monitoring.rst | 40 +++ .../exporting/send-events/github.rst | 38 +++ .../exporting/send-events/grafana.rst | 38 +++ .../exporting/send-events/incidentio.rst | 37 +++ .../exporting/send-events/launchdarkly.rst | 32 +++ .../exporting/send-events/nagios.rst | 60 +++++ .../exporting/send-events/newrelic.rst | 38 +++ .../exporting/send-events/opsgenie.rst | 37 +++ .../exporting/send-events/pagerduty.rst | 47 ++++ .../exporting/send-events/rootly.rst | 37 +++ .../exporting/send-events/sentry.rst | 35 +++ .../exporting/send-events/solarwinds.rst | 39 +++ .../exporting/send-events/splunk.rst | 39 +++ docs/configuration/index.rst | 14 + docs/index.rst | 2 +- 23 files changed, 1058 insertions(+), 2 deletions(-) create mode 100644 docs/configuration/exporting/send-events-api.rst create mode 100644 docs/configuration/exporting/send-events/alertmanager.rst create mode 100644 docs/configuration/exporting/send-events/argocd.rst create mode 100644 docs/configuration/exporting/send-events/aws-cloudwatch.rst create mode 100644 docs/configuration/exporting/send-events/azure-monitor.rst create mode 100644 docs/configuration/exporting/send-events/datadog.rst create mode 100644 docs/configuration/exporting/send-events/dynatrace.rst create mode 100644 docs/configuration/exporting/send-events/gcp-monitoring.rst create mode 100644 docs/configuration/exporting/send-events/github.rst create mode 100644 docs/configuration/exporting/send-events/grafana.rst create mode 100644 docs/configuration/exporting/send-events/incidentio.rst create mode 100644 docs/configuration/exporting/send-events/launchdarkly.rst create mode 100644 docs/configuration/exporting/send-events/nagios.rst create mode 100644 docs/configuration/exporting/send-events/newrelic.rst create mode 100644 docs/configuration/exporting/send-events/opsgenie.rst create mode 100644 docs/configuration/exporting/send-events/pagerduty.rst create mode 100644 docs/configuration/exporting/send-events/rootly.rst create mode 100644 docs/configuration/exporting/send-events/sentry.rst create mode 100644 docs/configuration/exporting/send-events/solarwinds.rst create mode 100644 docs/configuration/exporting/send-events/splunk.rst diff --git a/docs/configuration/exporting/robusta-pro-features.rst b/docs/configuration/exporting/robusta-pro-features.rst index 5aa584a57..5b1ff8d49 100644 --- a/docs/configuration/exporting/robusta-pro-features.rst +++ b/docs/configuration/exporting/robusta-pro-features.rst @@ -17,7 +17,7 @@ Data Export and Reporting * :doc:`Alert Export API `: Export historical alert data with filtering by time range, alert name, and account * :doc:`Alert Reporting API `: Get aggregated statistics and counts for different alert types -* :doc:`Send Alerts API `: Send alerts programmatically from external systems +* :doc:`Send Events API `: Send alerts, incidents, and changes from any monitoring source via a single webhook endpoint * :doc:`Configuration Changes API `: Track configuration changes in your environment * :doc:`RBAC Configuration API `: Programmatically manage role-based access control configurations diff --git a/docs/configuration/exporting/send-events-api.rst b/docs/configuration/exporting/send-events-api.rst new file mode 100644 index 000000000..2659506a3 --- /dev/null +++ b/docs/configuration/exporting/send-events-api.rst @@ -0,0 +1,253 @@ +Send Events API +================ + +Send alerts, incidents, and changes from any monitoring system to Robusta through a single webhook endpoint. HolmesGPT investigates each event against your live cluster state, logs, metrics, and connected data sources, and attaches its findings to help accelerate triage. + +This is the recommended ingestion path for new integrations. The legacy :doc:`Send Alerts API ` remains available for existing customers. + +.. toctree:: + :maxdepth: 1 + :hidden: + + send-events/alertmanager + send-events/pagerduty + send-events/datadog + send-events/newrelic + send-events/dynatrace + send-events/grafana + send-events/gcp-monitoring + send-events/azure-monitor + send-events/splunk + send-events/sentry + send-events/launchdarkly + send-events/argocd + send-events/github + send-events/opsgenie + send-events/rootly + send-events/incidentio + send-events/nagios + send-events/solarwinds + send-events/aws-cloudwatch + +Overview +-------- + +The endpoint accepts any JSON payload. The request is parameterized by query string: + +.. code-block:: + + POST https://api.robusta.dev/webhooks?account_id=&origin=&type=&labels= + +Robusta stores every payload verbatim, then asynchronously parses it into the Robusta UI timeline. If a per-origin parser is registered for ``origin``, it is used; otherwise a generic JSON parser handles the payload. Parse failures are visible in the **Delivery Log** UI page so you can self-debug. + +Query Parameters +---------------- + +.. list-table:: + :widths: 20 10 60 10 + :header-rows: 1 + + * - Parameter + - Type + - Description + - Required + * - ``account_id`` + - string + - Your Robusta account ID, found in ``generated_values.yaml``. + - Yes + * - ``origin`` + - string + - Identifies the monitoring product (for example ``alertmanager``, ``pagerduty``, ``datadog``). Free-form; selects the per-origin parser when one exists. + - Yes + * - ``type`` + - string + - One of ``alert``, ``incident``, or ``change``. + - Yes + * - ``labels`` + - string + - Comma-separated list of free-form tags. Forwarded to the parsed event for use in workflows, routing, and AI investigation policies. + - No + +Authentication +-------------- + +Send your Robusta API key as a Bearer token. Generate keys in the Robusta UI under **Settings → API Keys → New API Key**. + +.. code-block:: + + Authorization: Bearer + +The key must be scoped to the ``account_id`` query parameter. Mismatches return ``401``. + +Example Request +--------------- + +.. code-block:: bash + + curl --location --request POST \ + 'https://api.robusta.dev/webhooks?account_id=ACCOUNT_ID&origin=datadog&type=alert&labels=env=prod,team=payments' \ + --header 'Authorization: Bearer API_KEY' \ + --header 'Content-Type: application/json' \ + --data-raw '{ "title": "High error rate", "severity": "high" }' + +Response +-------- + +A successful request returns ``200`` with the ID of the stored event: + +.. code-block:: json + + { "id": "8f1b...e21" } + +Errors: + +* ``400`` — missing or empty ``account_id``, ``origin``, or ``type``; invalid ``type`` value. +* ``401`` — invalid or out-of-scope API key. +* ``429`` — rate limit exceeded (300 requests per 5-minute window per account). +* ``503`` — transient storage failure; vendors should retry. + +Integrations +------------ + +Pick your monitoring system below for step-by-step instructions. Each page provides the URL to paste into your vendor's webhook configuration along with the API key. + +Prometheus & AlertManager +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. grid:: 1 1 2 3 + :gutter: 3 + + .. grid-item-card:: :octicon:`pulse;1em;` AlertManager + :class-card: sd-bg-light sd-bg-text-light + :link: send-events/alertmanager + :link-type: doc + + .. grid-item-card:: :octicon:`pulse;1em;` Grafana + :class-card: sd-bg-light sd-bg-text-light + :link: send-events/grafana + :link-type: doc + +APM & Observability +~~~~~~~~~~~~~~~~~~~~ + +.. grid:: 1 1 2 3 + :gutter: 3 + + .. grid-item-card:: :octicon:`pulse;1em;` Datadog + :class-card: sd-bg-light sd-bg-text-light + :link: send-events/datadog + :link-type: doc + + .. grid-item-card:: :octicon:`pulse;1em;` New Relic + :class-card: sd-bg-light sd-bg-text-light + :link: send-events/newrelic + :link-type: doc + + .. grid-item-card:: :octicon:`pulse;1em;` Dynatrace + :class-card: sd-bg-light sd-bg-text-light + :link: send-events/dynatrace + :link-type: doc + + .. grid-item-card:: :octicon:`pulse;1em;` Splunk + :class-card: sd-bg-light sd-bg-text-light + :link: send-events/splunk + :link-type: doc + + .. grid-item-card:: :octicon:`pulse;1em;` Sentry + :class-card: sd-bg-light sd-bg-text-light + :link: send-events/sentry + :link-type: doc + +Cloud Provider Monitoring +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. grid:: 1 1 2 3 + :gutter: 3 + + .. grid-item-card:: :octicon:`cloud;1em;` GCP Cloud Monitoring + :class-card: sd-bg-light sd-bg-text-light + :link: send-events/gcp-monitoring + :link-type: doc + + .. grid-item-card:: :octicon:`cloud;1em;` Azure Monitor + :class-card: sd-bg-light sd-bg-text-light + :link: send-events/azure-monitor + :link-type: doc + + .. grid-item-card:: :octicon:`cloud;1em;` AWS CloudWatch + :class-card: sd-bg-light sd-bg-text-light + :link: send-events/aws-cloudwatch + :link-type: doc + +Incident Management +~~~~~~~~~~~~~~~~~~~~ + +.. grid:: 1 1 2 3 + :gutter: 3 + + .. grid-item-card:: :octicon:`bell;1em;` PagerDuty + :class-card: sd-bg-light sd-bg-text-light + :link: send-events/pagerduty + :link-type: doc + + .. grid-item-card:: :octicon:`bell;1em;` Opsgenie + :class-card: sd-bg-light sd-bg-text-light + :link: send-events/opsgenie + :link-type: doc + + .. grid-item-card:: :octicon:`bell;1em;` Rootly + :class-card: sd-bg-light sd-bg-text-light + :link: send-events/rootly + :link-type: doc + + .. grid-item-card:: :octicon:`bell;1em;` Incident.io + :class-card: sd-bg-light sd-bg-text-light + :link: send-events/incidentio + :link-type: doc + +Changes & Deployments +~~~~~~~~~~~~~~~~~~~~~~ + +.. grid:: 1 1 2 3 + :gutter: 3 + + .. grid-item-card:: :octicon:`git-branch;1em;` Argo CD + :class-card: sd-bg-light sd-bg-text-light + :link: send-events/argocd + :link-type: doc + + .. grid-item-card:: :octicon:`mark-github;1em;` GitHub + :class-card: sd-bg-light sd-bg-text-light + :link: send-events/github + :link-type: doc + + .. grid-item-card:: :octicon:`flame;1em;` LaunchDarkly + :class-card: sd-bg-light sd-bg-text-light + :link: send-events/launchdarkly + :link-type: doc + +Other +~~~~~~ + +.. grid:: 1 1 2 3 + :gutter: 3 + + .. grid-item-card:: :octicon:`pulse;1em;` Nagios + :class-card: sd-bg-light sd-bg-text-light + :link: send-events/nagios + :link-type: doc + + .. grid-item-card:: :octicon:`pulse;1em;` SolarWinds + :class-card: sd-bg-light sd-bg-text-light + :link: send-events/solarwinds + :link-type: doc + +Unsupported sources +------------------- + +Any monitoring system that can POST JSON to a URL works. Pick a free-form ``origin`` value, paste the URL into the vendor's webhook configuration, and Robusta's generic parser will handle the payload. The AI investigator reads the raw payload along with the structured event, so source-specific fields are preserved even without a dedicated parser. + +Delivery Log +------------ + +Every received payload — parsed, pending, or failed — is visible in the Robusta UI under **Settings → Delivery Log**, scoped to your account and sorted by recency. Use it to confirm that a vendor is reaching Robusta, view the original request body, and inspect parser errors. diff --git a/docs/configuration/exporting/send-events/alertmanager.rst b/docs/configuration/exporting/send-events/alertmanager.rst new file mode 100644 index 000000000..e27e0955f --- /dev/null +++ b/docs/configuration/exporting/send-events/alertmanager.rst @@ -0,0 +1,48 @@ +AlertManager +============= + +Forward Prometheus alerts from AlertManager directly to Robusta. Robusta's per-origin parser maps AlertManager labels and annotations onto the timeline; the original payload is preserved for HolmesGPT. + +Prerequisites +------------- + +* A Robusta account with API access. +* Your Robusta ``account_id``, found in ``generated_values.yaml``. +* A Robusta API key with ``Read/Write`` access to alerts, generated under **Settings → API Keys → New API Key**. + +Webhook URL +----------- + +.. code-block:: + + https://api.robusta.dev/webhooks?account_id=&origin=alertmanager&type=alert + +Append ``&labels=`` to attach routing tags to every event from this receiver. + +Configure AlertManager +---------------------- + +Add a webhook receiver to ``alertmanager.yml``: + +.. code-block:: yaml + + receivers: + - name: robusta + webhook_configs: + - url: 'https://api.robusta.dev/webhooks?account_id=&origin=alertmanager&type=alert' + send_resolved: true + http_config: + authorization: + type: Bearer + credentials: + + route: + receiver: robusta + continue: true + +Set ``continue: true`` if Robusta is not your only receiver, so alerts also reach your other destinations. + +Verify +------ + +Open **Settings → Delivery Log** in the Robusta UI to see the request arrive, then check the timeline for the parsed alert. diff --git a/docs/configuration/exporting/send-events/argocd.rst b/docs/configuration/exporting/send-events/argocd.rst new file mode 100644 index 000000000..f5524bef4 --- /dev/null +++ b/docs/configuration/exporting/send-events/argocd.rst @@ -0,0 +1,52 @@ +Argo CD +======== + +Forward Argo CD sync and health events to Robusta as ``change`` events. + +Prerequisites +------------- + +* A Robusta account with API access. +* Your Robusta ``account_id``, found in ``generated_values.yaml``. +* A Robusta API key with ``Read/Write`` access to alerts. +* Argo CD with the ``argocd-notifications`` controller (built into Argo CD 2.3+). + +Webhook URL +----------- + +.. code-block:: + + https://api.robusta.dev/webhooks?account_id=&origin=argocd&type=change + +Configure Argo CD Notifications +-------------------------------- + +Add a webhook service and a template to ``argocd-notifications-cm``: + +.. code-block:: yaml + + service.webhook.robusta: | + url: https://api.robusta.dev/webhooks?account_id=&origin=argocd&type=change + headers: + - name: Authorization + value: Bearer + + template.app-event: | + webhook: + robusta: + method: POST + body: | + { + "app": "{{.app.metadata.name}}", + "namespace": "{{.app.metadata.namespace}}", + "syncStatus": "{{.app.status.sync.status}}", + "healthStatus": "{{.app.status.health.status}}", + "operationState": "{{.app.status.operationState.phase}}" + } + +Subscribe applications to the trigger using the ``notifications.argoproj.io/subscribe..robusta`` annotation. + +Verify +------ + +Trigger a sync on a subscribed application. The event should appear in **Settings → Delivery Log** and on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/aws-cloudwatch.rst b/docs/configuration/exporting/send-events/aws-cloudwatch.rst new file mode 100644 index 000000000..517da53f1 --- /dev/null +++ b/docs/configuration/exporting/send-events/aws-cloudwatch.rst @@ -0,0 +1,58 @@ +AWS CloudWatch +=============== + +Forward CloudWatch alarms to Robusta. CloudWatch cannot POST to arbitrary HTTPS endpoints directly, so the recipe is **CloudWatch → SNS → Lambda → Robusta**. + +Prerequisites +------------- + +* A Robusta account with API access. +* Your Robusta ``account_id``, found in ``generated_values.yaml``. +* A Robusta API key with ``Read/Write`` access to alerts. +* AWS account permissions to create Lambda functions and SNS topics. + +Webhook URL +----------- + +.. code-block:: + + https://api.robusta.dev/webhooks?account_id=&origin=awscloudwatch&type=alert + +Recipe +------ + +1. Create an SNS topic named ``robusta``. Add it as a notification action on the CloudWatch alarms you want forwarded. +2. Create a Lambda function (Python 3.12) and subscribe it to the ``robusta`` SNS topic. Store the Robusta API key in **Lambda → Configuration → Environment variables** as ``ROBUSTA_API_KEY``. +3. Use the following handler: + + .. code-block:: python + + import json + import os + import urllib.request + + URL = "https://api.robusta.dev/webhooks?account_id=&origin=awscloudwatch&type=alert" + + def lambda_handler(event, context): + for record in event["Records"]: + body = record["Sns"]["Message"] + req = urllib.request.Request( + URL, + data=body.encode("utf-8"), + method="POST", + headers={ + "Content-Type": "application/json", + "Authorization": f"Bearer {os.environ['ROBUSTA_API_KEY']}", + }, + ) + urllib.request.urlopen(req).read() + return {"ok": True} + +4. Replace ```` with your Robusta account ID and deploy. + +Alternatively, if you already use **Amazon EventBridge → API destination**, point the destination at the same URL with a Bearer token connection — no Lambda required. + +Verify +------ + +Use the **Test alarm** action in CloudWatch. The event should appear in **Settings → Delivery Log** and on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/azure-monitor.rst b/docs/configuration/exporting/send-events/azure-monitor.rst new file mode 100644 index 000000000..70739637b --- /dev/null +++ b/docs/configuration/exporting/send-events/azure-monitor.rst @@ -0,0 +1,38 @@ +Azure Monitor +============== + +Forward Azure Monitor alerts to Robusta via an Action Group webhook receiver. + +Prerequisites +------------- + +* A Robusta account with API access. +* Your Robusta ``account_id``, found in ``generated_values.yaml``. +* A Robusta API key with ``Read/Write`` access to alerts. +* Azure ``Contributor`` access to the resource group hosting the Action Group. + +Webhook URL +----------- + +.. code-block:: + + https://api.robusta.dev/webhooks?account_id=&origin=azure&type=alert + +Configure Azure +--------------- + +Action Group webhook receivers do not allow custom headers, so authenticate via the URL: + +.. code-block:: + + https://api.robusta.dev/webhooks?account_id=&origin=azure&type=alert&token= + +1. In the Azure Portal, open **Monitor → Action groups** and either create a new group or edit an existing one. +2. Under **Actions**, add an action of type **Webhook**. +3. Name it ``Robusta`` and set the **URI** to the URL above. Leave **Enable the common alert schema** on — Robusta's parser is built against it. +4. Save the action group and attach it to the alert rules you want to forward. + +Verify +------ + +Use the action group's **Test** option. The event should appear in **Settings → Delivery Log** and on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/datadog.rst b/docs/configuration/exporting/send-events/datadog.rst new file mode 100644 index 000000000..2562b0e50 --- /dev/null +++ b/docs/configuration/exporting/send-events/datadog.rst @@ -0,0 +1,38 @@ +Datadog +======== + +Forward Datadog monitor alerts to Robusta via a Datadog webhook integration. + +Prerequisites +------------- + +* A Robusta account with API access. +* Your Robusta ``account_id``, found in ``generated_values.yaml``. +* A Robusta API key with ``Read/Write`` access to alerts. +* A Datadog admin able to create webhook integrations. + +Webhook URL +----------- + +.. code-block:: + + https://api.robusta.dev/webhooks?account_id=&origin=datadog&type=alert + +Configure Datadog +----------------- + +1. In Datadog, go to **Integrations → Webhooks → New** and name the webhook ``robusta``. +2. Set the URL to the webhook URL above. +3. Under **Custom Headers**, add: + + .. code-block:: json + + { "Authorization": "Bearer " } + +4. Leave the default payload, or customize it. Robusta's per-origin parser handles the standard Datadog payload shape. +5. Save. In any monitor, set the **Notify** field to ``@webhook-robusta`` to forward its alerts to Robusta. + +Verify +------ + +Trigger a test alert from a Datadog monitor. The event should appear in **Settings → Delivery Log** and on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/dynatrace.rst b/docs/configuration/exporting/send-events/dynatrace.rst new file mode 100644 index 000000000..b2c121bbf --- /dev/null +++ b/docs/configuration/exporting/send-events/dynatrace.rst @@ -0,0 +1,38 @@ +Dynatrace +========== + +Forward Dynatrace problems to Robusta via a Dynatrace custom webhook integration. + +Prerequisites +------------- + +* A Robusta account with API access. +* Your Robusta ``account_id``, found in ``generated_values.yaml``. +* A Robusta API key with ``Read/Write`` access to alerts. +* A Dynatrace admin able to add problem notifications. + +Webhook URL +----------- + +.. code-block:: + + https://api.robusta.dev/webhooks?account_id=&origin=dynatrace&type=alert + +Configure Dynatrace +------------------- + +1. In Dynatrace, go to **Settings → Integration → Problem notifications** and **Set up notifications** → **Custom integration**. +2. Set the **Webhook URL** to the URL above. +3. Add a custom HTTP header: + + .. code-block:: + + Authorization: Bearer + +4. Use the default JSON payload template, or customize it. Robusta's generic parser handles arbitrary fields. +5. Save and assign the integration to your alerting profile. + +Verify +------ + +Use the **Send test notification** button. The event should appear in **Settings → Delivery Log** and on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/gcp-monitoring.rst b/docs/configuration/exporting/send-events/gcp-monitoring.rst new file mode 100644 index 000000000..134e23ab6 --- /dev/null +++ b/docs/configuration/exporting/send-events/gcp-monitoring.rst @@ -0,0 +1,40 @@ +GCP Cloud Monitoring +===================== + +Forward Cloud Monitoring alerting policies to Robusta via a GCP webhook notification channel. + +Prerequisites +------------- + +* A Robusta account with API access. +* Your Robusta ``account_id``, found in ``generated_values.yaml``. +* A Robusta API key with ``Read/Write`` access to alerts. +* A GCP project with the ``Monitoring Notification Channel Editor`` role. + +Webhook URL +----------- + +.. code-block:: + + https://api.robusta.dev/webhooks?account_id=&origin=gcp&type=alert + +Configure GCP +------------- + +GCP webhook notification channels do not support custom headers in the console, so include the API key in the URL: + +.. code-block:: + + https://api.robusta.dev/webhooks?account_id=&origin=gcp&type=alert&token= + +The relay accepts ``token`` as an alternate to the ``Authorization`` header. + +1. In the GCP Console, go to **Monitoring → Alerting → Edit Notification Channels**. +2. Click **Add new** under **Webhooks**. +3. Set the **Endpoint URL** to the URL above and name it ``Robusta``. +4. Save and attach the channel to the alerting policies you want to forward. + +Verify +------ + +Use **Send test notification** on the channel. The event should appear in **Settings → Delivery Log** and on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/github.rst b/docs/configuration/exporting/send-events/github.rst new file mode 100644 index 000000000..ba30d4a29 --- /dev/null +++ b/docs/configuration/exporting/send-events/github.rst @@ -0,0 +1,38 @@ +GitHub +======= + +Forward GitHub repository events (deployments, releases, workflow runs) to Robusta as ``change`` events. + +Prerequisites +------------- + +* A Robusta account with API access. +* Your Robusta ``account_id``, found in ``generated_values.yaml``. +* A Robusta API key with ``Read/Write`` access to alerts. +* GitHub admin access to the repository or organization. + +Webhook URL +----------- + +.. code-block:: + + https://api.robusta.dev/webhooks?account_id=&origin=github&type=change + +Configure GitHub +---------------- + +1. In your repository or organization, go to **Settings → Webhooks → Add webhook**. +2. Set **Payload URL** to the URL above. +3. Set **Content type** to ``application/json``. +4. GitHub webhooks support a single ``X-Hub-Signature-256`` header but no custom ``Authorization`` header. Authenticate by appending the API key to the URL: + + .. code-block:: + + https://api.robusta.dev/webhooks?account_id=&origin=github&type=change&token= + +5. Choose the events to deliver (``Deployments``, ``Workflow runs``, ``Releases``, etc.) and save. + +Verify +------ + +Trigger a workflow run or push a release. The event should appear in **Settings → Delivery Log** and on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/grafana.rst b/docs/configuration/exporting/send-events/grafana.rst new file mode 100644 index 000000000..7204b316b --- /dev/null +++ b/docs/configuration/exporting/send-events/grafana.rst @@ -0,0 +1,38 @@ +Grafana +======== + +Forward alerts from Grafana (Cloud or self-hosted) to Robusta via a Grafana contact point of type ``Webhook``. + +Prerequisites +------------- + +* A Robusta account with API access. +* Your Robusta ``account_id``, found in ``generated_values.yaml``. +* A Robusta API key with ``Read/Write`` access to alerts. +* Grafana 9.0+ with Grafana-managed alerting enabled. + +Webhook URL +----------- + +.. code-block:: + + https://api.robusta.dev/webhooks?account_id=&origin=grafana&type=alert + +Configure Grafana +----------------- + +1. In Grafana, go to **Alerting → Contact points → Add contact point**. +2. Set the integration to **Webhook** and name it ``Robusta``. +3. Set the **URL** to the webhook URL above. +4. Under **Optional Webhook settings → HTTP method**, leave ``POST``. Under **Authorization Header**, set: + + * **Scheme**: ``Bearer`` + * **Credentials**: ```` + +5. Save the contact point. +6. Update your **Notification policy** so the desired alert rules route to ``Robusta``. + +Verify +------ + +Use Grafana's **Test** button on the contact point. The event should appear in **Settings → Delivery Log** and on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/incidentio.rst b/docs/configuration/exporting/send-events/incidentio.rst new file mode 100644 index 000000000..15cf17b2d --- /dev/null +++ b/docs/configuration/exporting/send-events/incidentio.rst @@ -0,0 +1,37 @@ +Incident.io +============ + +Forward Incident.io incidents to Robusta via an Incident.io outgoing webhook. + +Prerequisites +------------- + +* A Robusta account with API access. +* Your Robusta ``account_id``, found in ``generated_values.yaml``. +* A Robusta API key with ``Read/Write`` access to alerts. +* Incident.io admin access. + +Webhook URL +----------- + +.. code-block:: + + https://api.robusta.dev/webhooks?account_id=&origin=incidentio&type=incident + +Configure Incident.io +--------------------- + +1. In Incident.io, go to **Settings → Webhooks → New webhook**. +2. Set the **URL** to the URL above. +3. Add a custom HTTP header: + + .. code-block:: + + Authorization: Bearer + +4. Subscribe to the events you want forwarded (``incident.created``, ``incident.updated``, ``incident.resolved``, …) and save. Incident.io will sign the payload — Robusta ignores the signature and authenticates on the bearer token. + +Verify +------ + +Declare a test incident. The event should appear in **Settings → Delivery Log** and on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/launchdarkly.rst b/docs/configuration/exporting/send-events/launchdarkly.rst new file mode 100644 index 000000000..98dc80fac --- /dev/null +++ b/docs/configuration/exporting/send-events/launchdarkly.rst @@ -0,0 +1,32 @@ +LaunchDarkly +============= + +Forward LaunchDarkly flag and segment changes to Robusta as ``change`` events. + +Prerequisites +------------- + +* A Robusta account with API access. +* Your Robusta ``account_id``, found in ``generated_values.yaml``. +* A Robusta API key with ``Read/Write`` access to alerts. +* LaunchDarkly admin access. + +Webhook URL +----------- + +.. code-block:: + + https://api.robusta.dev/webhooks?account_id=&origin=launchdarkly&type=change + +Configure LaunchDarkly +---------------------- + +1. In LaunchDarkly, go to **Integrations → Webhooks → Add integration**. +2. Set the **URL** to the URL above. +3. Optionally restrict the events with a **Policy filter** (for example, only flag updates in production). +4. LaunchDarkly does not let you add an ``Authorization`` header; instead enable **HMAC signing** (Robusta ignores it) and append ``&token=`` to the URL. + +Verify +------ + +Toggle a feature flag in LaunchDarkly. The event should appear in **Settings → Delivery Log** and on the Robusta timeline as a ``change`` event. diff --git a/docs/configuration/exporting/send-events/nagios.rst b/docs/configuration/exporting/send-events/nagios.rst new file mode 100644 index 000000000..f7b9b18ea --- /dev/null +++ b/docs/configuration/exporting/send-events/nagios.rst @@ -0,0 +1,60 @@ +Nagios +======= + +Forward Nagios host and service problems to Robusta from a Nagios notification command. + +Prerequisites +------------- + +* A Robusta account with API access. +* Your Robusta ``account_id``, found in ``generated_values.yaml``. +* A Robusta API key with ``Read/Write`` access to alerts. +* Shell access to your Nagios host with permission to edit ``commands.cfg`` and ``contacts.cfg``. + +Webhook URL +----------- + +.. code-block:: + + https://api.robusta.dev/webhooks?account_id=&origin=nagios&type=alert + +Configure Nagios +---------------- + +Nagios delivers notifications by running shell commands. Define a command that POSTs the alert as JSON: + +.. code-block:: + + define command { + command_name notify-robusta-service + command_line /usr/bin/curl -sS -X POST \ + -H 'Authorization: Bearer ' \ + -H 'Content-Type: application/json' \ + --data '{ + "host": "$HOSTNAME$", + "service": "$SERVICEDESC$", + "state": "$SERVICESTATE$", + "type": "$NOTIFICATIONTYPE$", + "output": "$SERVICEOUTPUT$" + }' \ + 'https://api.robusta.dev/webhooks?account_id=&origin=nagios&type=alert' + } + +Define an analogous ``notify-robusta-host`` command, then attach both to a Nagios contact: + +.. code-block:: + + define contact { + contact_name robusta + service_notification_commands notify-robusta-service + host_notification_commands notify-robusta-host + service_notification_options w,u,c,r + host_notification_options d,u,r + } + +Add ``robusta`` to the ``contact_groups`` you want to forward. + +Verify +------ + +Acknowledge a test problem to fire a notification. The event should appear in **Settings → Delivery Log** and on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/newrelic.rst b/docs/configuration/exporting/send-events/newrelic.rst new file mode 100644 index 000000000..7451995bd --- /dev/null +++ b/docs/configuration/exporting/send-events/newrelic.rst @@ -0,0 +1,38 @@ +New Relic +========== + +Forward New Relic alerts to Robusta via a New Relic webhook destination. + +Prerequisites +------------- + +* A Robusta account with API access. +* Your Robusta ``account_id``, found in ``generated_values.yaml``. +* A Robusta API key with ``Read/Write`` access to alerts. +* A New Relic admin able to create webhook destinations. + +Webhook URL +----------- + +.. code-block:: + + https://api.robusta.dev/webhooks?account_id=&origin=newrelic&type=alert + +Configure New Relic +------------------- + +1. In New Relic, go to **Alerts & AI → Destinations** and add a **Webhook** destination named ``Robusta``. +2. Set the **Endpoint URL** to the webhook URL above. +3. Add a custom header: + + .. code-block:: + + Authorization: Bearer + +4. Use the default payload template. Robusta preserves the original ``aggregationKeys`` field as the dedup key. +5. Create a **Workflow** that routes the desired policy to this destination. + +Verify +------ + +Trigger a test incident in New Relic. The event should appear in **Settings → Delivery Log** and on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/opsgenie.rst b/docs/configuration/exporting/send-events/opsgenie.rst new file mode 100644 index 000000000..e31f8608b --- /dev/null +++ b/docs/configuration/exporting/send-events/opsgenie.rst @@ -0,0 +1,37 @@ +Opsgenie +========= + +Forward Opsgenie alerts to Robusta via the Opsgenie outgoing webhook integration. + +Prerequisites +------------- + +* A Robusta account with API access. +* Your Robusta ``account_id``, found in ``generated_values.yaml``. +* A Robusta API key with ``Read/Write`` access to alerts. +* Opsgenie admin access. + +Webhook URL +----------- + +.. code-block:: + + https://api.robusta.dev/webhooks?account_id=&origin=opsgenie&type=alert + +Configure Opsgenie +------------------ + +1. In Opsgenie, go to **Settings → Integrations → Add Integration → Webhook**. +2. Set the **Webhook URL** to the URL above. +3. Add a custom **Header**: + + .. code-block:: + + Authorization: Bearer + +4. Choose which alert actions (``Create``, ``Acknowledge``, ``Close``, …) trigger the webhook and save. + +Verify +------ + +Create a test alert in Opsgenie. The event should appear in **Settings → Delivery Log** and on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/pagerduty.rst b/docs/configuration/exporting/send-events/pagerduty.rst new file mode 100644 index 000000000..8370289a9 --- /dev/null +++ b/docs/configuration/exporting/send-events/pagerduty.rst @@ -0,0 +1,47 @@ +PagerDuty +========== + +Forward PagerDuty incidents (and AIOps alerts) to Robusta via Generic Webhooks v3. + +Prerequisites +------------- + +* A Robusta account with API access. +* Your Robusta ``account_id``, found in ``generated_values.yaml``. +* A Robusta API key with ``Read/Write`` access to alerts, generated under **Settings → API Keys → New API Key**. +* A PagerDuty admin able to create webhooks. AIOps Event Orchestration is required to forward full alert-level data. + +Webhook URL +----------- + +For incidents: + +.. code-block:: + + https://api.robusta.dev/webhooks?account_id=&origin=pagerduty&type=incident + +For AIOps-forwarded alerts: + +.. code-block:: + + https://api.robusta.dev/webhooks?account_id=&origin=pagerduty&type=alert + +Configure PagerDuty +------------------- + +1. In PagerDuty, go to **Integrations → Generic Webhooks v3** and click **New Webhook**. +2. Set the **Webhook URL** to the URL above. +3. Add a custom header: + + .. code-block:: + + Authorization: Bearer + +4. Save. PagerDuty will sign the payload, but Robusta authenticates on the API key alone — the signature is ignored. + +For AIOps event-level forwarding, repeat the same steps inside **AIOps → Event Orchestration → Webhook Action** and target the ``type=alert`` URL. + +Verify +------ + +Trigger a test incident in PagerDuty. It should appear in **Settings → Delivery Log** and on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/rootly.rst b/docs/configuration/exporting/send-events/rootly.rst new file mode 100644 index 000000000..67c8332f4 --- /dev/null +++ b/docs/configuration/exporting/send-events/rootly.rst @@ -0,0 +1,37 @@ +Rootly +======= + +Forward Rootly incidents to Robusta via a Rootly outgoing webhook. + +Prerequisites +------------- + +* A Robusta account with API access. +* Your Robusta ``account_id``, found in ``generated_values.yaml``. +* A Robusta API key with ``Read/Write`` access to alerts. +* Rootly admin access. + +Webhook URL +----------- + +.. code-block:: + + https://api.robusta.dev/webhooks?account_id=&origin=rootly&type=incident + +Configure Rootly +---------------- + +1. In Rootly, go to **Integrations → Outgoing Webhooks → New webhook**. +2. Set the **URL** to the URL above and name it ``Robusta``. +3. Add a custom header: + + .. code-block:: + + Authorization: Bearer + +4. Subscribe to the incident events you want forwarded (``incident.created``, ``incident.updated``, ``incident.resolved``, …) and save. + +Verify +------ + +Create a test incident in Rootly. The event should appear in **Settings → Delivery Log** and on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/sentry.rst b/docs/configuration/exporting/send-events/sentry.rst new file mode 100644 index 000000000..902ca9469 --- /dev/null +++ b/docs/configuration/exporting/send-events/sentry.rst @@ -0,0 +1,35 @@ +Sentry +======= + +Forward Sentry issues to Robusta via Sentry's webhook integration. + +Prerequisites +------------- + +* A Robusta account with API access. +* Your Robusta ``account_id``, found in ``generated_values.yaml``. +* A Robusta API key with ``Read/Write`` access to alerts. +* Sentry org-level access to install internal integrations. + +Webhook URL +----------- + +.. code-block:: + + https://api.robusta.dev/webhooks?account_id=&origin=sentry&type=alert + +Configure Sentry +---------------- + +Sentry's webhook destinations support custom headers via Internal Integrations: + +1. In Sentry, go to **Settings → Developer Settings → New Internal Integration**. +2. Name it ``Robusta`` and grant **Issue & Event: Read** permissions. +3. Subscribe to the **issue** webhook events. +4. Set the **Webhook URL** to the URL above. +5. Add the bearer token to a **Custom Outgoing Header** named ``Authorization`` with value ``Bearer `` if your Sentry plan supports it; otherwise append ``&token=`` to the URL. + +Verify +------ + +Resolve and re-open a Sentry issue, or trigger an issue alert rule that points at this integration. The event should appear in **Settings → Delivery Log** and on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/solarwinds.rst b/docs/configuration/exporting/send-events/solarwinds.rst new file mode 100644 index 000000000..8b40a2929 --- /dev/null +++ b/docs/configuration/exporting/send-events/solarwinds.rst @@ -0,0 +1,39 @@ +SolarWinds +=========== + +Forward SolarWinds Orion alerts to Robusta from an alert action. + +Prerequisites +------------- + +* A Robusta account with API access. +* Your Robusta ``account_id``, found in ``generated_values.yaml``. +* A Robusta API key with ``Read/Write`` access to alerts. +* SolarWinds Orion admin access. + +Webhook URL +----------- + +.. code-block:: + + https://api.robusta.dev/webhooks?account_id=&origin=solarwinds&type=alert + +Configure SolarWinds +-------------------- + +SolarWinds does not ship a native bearer-token webhook action. Use the **Execute an external program** action with ``curl``: + +.. code-block:: + + curl -sS -X POST ^ + -H "Authorization: Bearer " ^ + -H "Content-Type: application/json" ^ + --data "{ \"alertName\": \"${N=Alerting;M=AlertName}\", \"node\": \"${N=SwisEntity;M=Caption}\", \"severity\": \"${N=Alerting;M=Severity}\", \"message\": \"${N=Alerting;M=AlertMessage}\" }" ^ + "https://api.robusta.dev/webhooks?account_id=&origin=solarwinds&type=alert" + +Save the action and attach it to the alerts you want forwarded. + +Verify +------ + +Manually trigger the alert from the **Alert Manager** UI. The event should appear in **Settings → Delivery Log** and on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/splunk.rst b/docs/configuration/exporting/send-events/splunk.rst new file mode 100644 index 000000000..c44c99fd8 --- /dev/null +++ b/docs/configuration/exporting/send-events/splunk.rst @@ -0,0 +1,39 @@ +Splunk +======= + +Forward Splunk alerts to Robusta via a Splunk webhook alert action. + +Prerequisites +------------- + +* A Robusta account with API access. +* Your Robusta ``account_id``, found in ``generated_values.yaml``. +* A Robusta API key with ``Read/Write`` access to alerts. +* Splunk admin access to define alert actions. + +Webhook URL +----------- + +.. code-block:: + + https://api.robusta.dev/webhooks?account_id=&origin=splunk&type=alert + +Splunk's built-in **Webhook** alert action does not support custom headers. Authenticate via the URL: + +.. code-block:: + + https://api.robusta.dev/webhooks?account_id=&origin=splunk&type=alert&token= + +Configure Splunk +---------------- + +1. Open or create a Splunk saved search and choose **Add Actions → Webhook**. +2. Set the **URL** to the URL above. +3. Save the search. Splunk will POST the search results to Robusta whenever the alert fires. + +For environments where you control the Splunk app, use the **Webhook Alert Action** plugin to send an ``Authorization: Bearer `` header instead of the URL token. + +Verify +------ + +Trigger the saved search manually. The event should appear in **Settings → Delivery Log** and on the Robusta timeline. diff --git a/docs/configuration/index.rst b/docs/configuration/index.rst index fa72ec326..081cb5edd 100644 --- a/docs/configuration/index.rst +++ b/docs/configuration/index.rst @@ -5,10 +5,24 @@ Send Alerts to Robusta Connect your monitoring system to Robusta, to enrich alerts and apply automation rules. +Programmatic Integration +------------------------- + +.. grid:: 1 1 2 3 + :gutter: 3 + + .. grid-item-card:: :octicon:`code;1em;` Send Alerts API + :class-card: sd-bg-light sd-bg-text-light + :link: exporting/send-alerts-api + :link-type: doc + + Send alerts programmatically via the legacy ``/api/alerts`` REST endpoint. + .. toctree:: :maxdepth: 1 :hidden: + exporting/send-alerts-api alertmanager-integration/outofcluster-prometheus alertmanager-integration/alert-manager alertmanager-integration/eks-managed-prometheus diff --git a/docs/index.rst b/docs/index.rst index 0e852fe7c..c003e3c2d 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -23,7 +23,7 @@ Overview Holmes Chat API - configuration/exporting/send-alerts-api + configuration/exporting/send-events-api configuration/exporting/configuration-changes-api configuration/exporting/alert-export-api configuration/exporting/alert-statistics-api From 9889a91761f55937884af06062895f62e82899a7 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 10 May 2026 09:24:06 +0000 Subject: [PATCH 02/14] Address review on send-events docs - argocd: add a concrete Application annotation snippet showing notifications.argoproj.io/subscribe.on-sync-failed.robusta and related triggers so the example is copy/paste-ready. - aws-cloudwatch: pass an explicit timeout to urllib.request.urlopen and catch URLError so the Lambda fails fast and surfaces network errors in CloudWatch logs. - github: add a security warning under the URL-token example covering log/history exposure and recommending scoped, rotated keys. - nagios: stop inlining the API key in commands.cfg; instead store it as $USER20$ in resource.cfg with file permissions and ownership guidance. - launchdarkly: add a security warning next to the URL-token guidance recommending HMAC signing and scoped, rotated keys. --- .../exporting/send-events/argocd.rst | 18 ++++++++++++++++- .../exporting/send-events/aws-cloudwatch.rst | 8 +++++++- .../exporting/send-events/github.rst | 4 ++++ .../exporting/send-events/launchdarkly.rst | 4 ++++ .../exporting/send-events/nagios.rst | 20 +++++++++++++++++-- 5 files changed, 50 insertions(+), 4 deletions(-) diff --git a/docs/configuration/exporting/send-events/argocd.rst b/docs/configuration/exporting/send-events/argocd.rst index f5524bef4..13b1bccd9 100644 --- a/docs/configuration/exporting/send-events/argocd.rst +++ b/docs/configuration/exporting/send-events/argocd.rst @@ -44,7 +44,23 @@ Add a webhook service and a template to ``argocd-notifications-cm``: "operationState": "{{.app.status.operationState.phase}}" } -Subscribe applications to the trigger using the ``notifications.argoproj.io/subscribe..robusta`` annotation. +Subscribe applications to the trigger using the ``notifications.argoproj.io/subscribe..robusta`` annotation. Replace ```` with the trigger name you want to forward — for example, ``on-sync-failed``: + +.. code-block:: yaml + + apiVersion: argoproj.io/v1alpha1 + kind: Application + metadata: + name: my-app + namespace: argocd + annotations: + notifications.argoproj.io/subscribe.on-sync-failed.robusta: "" + notifications.argoproj.io/subscribe.on-deployed.robusta: "" + notifications.argoproj.io/subscribe.on-health-degraded.robusta: "" + spec: + # ... + +The annotation value can be left empty (any non-null value subscribes the receiver) or set to a comma-separated list of recipients if you have configured multiple Robusta receivers. Verify ------ diff --git a/docs/configuration/exporting/send-events/aws-cloudwatch.rst b/docs/configuration/exporting/send-events/aws-cloudwatch.rst index 517da53f1..2cdbf7e63 100644 --- a/docs/configuration/exporting/send-events/aws-cloudwatch.rst +++ b/docs/configuration/exporting/send-events/aws-cloudwatch.rst @@ -29,9 +29,11 @@ Recipe import json import os + import urllib.error import urllib.request URL = "https://api.robusta.dev/webhooks?account_id=&origin=awscloudwatch&type=alert" + TIMEOUT_SECONDS = 5 def lambda_handler(event, context): for record in event["Records"]: @@ -45,7 +47,11 @@ Recipe "Authorization": f"Bearer {os.environ['ROBUSTA_API_KEY']}", }, ) - urllib.request.urlopen(req).read() + try: + urllib.request.urlopen(req, timeout=TIMEOUT_SECONDS).read() + except urllib.error.URLError as exc: + print(f"failed to forward CloudWatch alarm to Robusta: {exc}") + raise return {"ok": True} 4. Replace ```` with your Robusta account ID and deploy. diff --git a/docs/configuration/exporting/send-events/github.rst b/docs/configuration/exporting/send-events/github.rst index ba30d4a29..0ea4e30ea 100644 --- a/docs/configuration/exporting/send-events/github.rst +++ b/docs/configuration/exporting/send-events/github.rst @@ -30,6 +30,10 @@ Configure GitHub https://api.robusta.dev/webhooks?account_id=&origin=github&type=change&token= + .. warning:: + + Tokens embedded in URLs can leak via browser history, server access logs, proxy logs, and HTTP ``Referer`` headers. Prefer header-based authentication when the vendor supports it. When a query-string token is the only option, mitigate exposure by using a dedicated, narrowly scoped API key with the minimum required permissions, rotating it on a regular cadence, and revoking it immediately if a leak is suspected. + 5. Choose the events to deliver (``Deployments``, ``Workflow runs``, ``Releases``, etc.) and save. Verify diff --git a/docs/configuration/exporting/send-events/launchdarkly.rst b/docs/configuration/exporting/send-events/launchdarkly.rst index 98dc80fac..97ad7a653 100644 --- a/docs/configuration/exporting/send-events/launchdarkly.rst +++ b/docs/configuration/exporting/send-events/launchdarkly.rst @@ -26,6 +26,10 @@ Configure LaunchDarkly 3. Optionally restrict the events with a **Policy filter** (for example, only flag updates in production). 4. LaunchDarkly does not let you add an ``Authorization`` header; instead enable **HMAC signing** (Robusta ignores it) and append ``&token=`` to the URL. + .. warning:: + + Query-parameter tokens can be exposed in proxy and server access logs and in browser history. Prefer HMAC signing where it is supported end-to-end. If you must use a URL token, use a dedicated, narrowly scoped Robusta API key with only the permissions this integration requires, and rotate it on a regular cadence so a leaked URL has a bounded blast radius. + Verify ------ diff --git a/docs/configuration/exporting/send-events/nagios.rst b/docs/configuration/exporting/send-events/nagios.rst index f7b9b18ea..a45c0c88e 100644 --- a/docs/configuration/exporting/send-events/nagios.rst +++ b/docs/configuration/exporting/send-events/nagios.rst @@ -21,14 +21,30 @@ Webhook URL Configure Nagios ---------------- -Nagios delivers notifications by running shell commands. Define a command that POSTs the alert as JSON: +Nagios delivers notifications by running shell commands. Define a command that POSTs the alert as JSON. + +Store the API key in ``resource.cfg`` rather than inlining it in ``commands.cfg`` so that it does not appear in command definitions, command-line process listings, or backups of the main configuration: + +.. code-block:: + + # /etc/nagios/resource.cfg + $USER20$= + +Nagios resource macros are intentionally not exposed to the CGIs and can hold secrets. Tighten the file permissions so only the Nagios user can read it, and exclude ``resource.cfg`` from any unprotected backup or config-management bundle: + +.. code-block:: bash + + chown root:nagios /etc/nagios/resource.cfg + chmod 640 /etc/nagios/resource.cfg + +Then reference ``$USER20$`` from the notification command: .. code-block:: define command { command_name notify-robusta-service command_line /usr/bin/curl -sS -X POST \ - -H 'Authorization: Bearer ' \ + -H 'Authorization: Bearer $USER20$' \ -H 'Content-Type: application/json' \ --data '{ "host": "$HOSTNAME$", From 88af105fa87c1d7b6be220a0b32c667f39675df5 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 10 May 2026 11:42:29 +0000 Subject: [PATCH 03/14] Remove labels query parameter from Send Events API docs --- docs/configuration/exporting/send-events-api.rst | 8 ++------ docs/configuration/exporting/send-events/alertmanager.rst | 2 -- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/docs/configuration/exporting/send-events-api.rst b/docs/configuration/exporting/send-events-api.rst index 2659506a3..188b67154 100644 --- a/docs/configuration/exporting/send-events-api.rst +++ b/docs/configuration/exporting/send-events-api.rst @@ -36,7 +36,7 @@ The endpoint accepts any JSON payload. The request is parameterized by query str .. code-block:: - POST https://api.robusta.dev/webhooks?account_id=&origin=&type=&labels= + POST https://api.robusta.dev/webhooks?account_id=&origin=&type= Robusta stores every payload verbatim, then asynchronously parses it into the Robusta UI timeline. If a per-origin parser is registered for ``origin``, it is used; otherwise a generic JSON parser handles the payload. Parse failures are visible in the **Delivery Log** UI page so you can self-debug. @@ -63,10 +63,6 @@ Query Parameters - string - One of ``alert``, ``incident``, or ``change``. - Yes - * - ``labels`` - - string - - Comma-separated list of free-form tags. Forwarded to the parsed event for use in workflows, routing, and AI investigation policies. - - No Authentication -------------- @@ -85,7 +81,7 @@ Example Request .. code-block:: bash curl --location --request POST \ - 'https://api.robusta.dev/webhooks?account_id=ACCOUNT_ID&origin=datadog&type=alert&labels=env=prod,team=payments' \ + 'https://api.robusta.dev/webhooks?account_id=ACCOUNT_ID&origin=datadog&type=alert' \ --header 'Authorization: Bearer API_KEY' \ --header 'Content-Type: application/json' \ --data-raw '{ "title": "High error rate", "severity": "high" }' diff --git a/docs/configuration/exporting/send-events/alertmanager.rst b/docs/configuration/exporting/send-events/alertmanager.rst index e27e0955f..eb8fa4f6e 100644 --- a/docs/configuration/exporting/send-events/alertmanager.rst +++ b/docs/configuration/exporting/send-events/alertmanager.rst @@ -17,8 +17,6 @@ Webhook URL https://api.robusta.dev/webhooks?account_id=&origin=alertmanager&type=alert -Append ``&labels=`` to attach routing tags to every event from this receiver. - Configure AlertManager ---------------------- From fec0efe08798f5fea95bf8791418079d2603364e Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 10 May 2026 11:49:27 +0000 Subject: [PATCH 04/14] Move Configuration Changes API to Robusta Classic under Send Alerts API --- docs/configuration/exporting/robusta-pro-features.rst | 1 - docs/configuration/index.rst | 8 ++++++++ docs/index.rst | 1 - 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/docs/configuration/exporting/robusta-pro-features.rst b/docs/configuration/exporting/robusta-pro-features.rst index 5b1ff8d49..ae1b3404f 100644 --- a/docs/configuration/exporting/robusta-pro-features.rst +++ b/docs/configuration/exporting/robusta-pro-features.rst @@ -18,7 +18,6 @@ Data Export and Reporting * :doc:`Alert Export API `: Export historical alert data with filtering by time range, alert name, and account * :doc:`Alert Reporting API `: Get aggregated statistics and counts for different alert types * :doc:`Send Events API `: Send alerts, incidents, and changes from any monitoring source via a single webhook endpoint -* :doc:`Configuration Changes API `: Track configuration changes in your environment * :doc:`RBAC Configuration API `: Programmatically manage role-based access control configurations Getting Started diff --git a/docs/configuration/index.rst b/docs/configuration/index.rst index 081cb5edd..7e9b634be 100644 --- a/docs/configuration/index.rst +++ b/docs/configuration/index.rst @@ -18,11 +18,19 @@ Programmatic Integration Send alerts programmatically via the legacy ``/api/alerts`` REST endpoint. + .. grid-item-card:: :octicon:`code;1em;` Configuration Changes API + :class-card: sd-bg-light sd-bg-text-light + :link: exporting/configuration-changes-api + :link-type: doc + + Send configuration changes programmatically via the legacy REST endpoint. + .. toctree:: :maxdepth: 1 :hidden: exporting/send-alerts-api + exporting/configuration-changes-api alertmanager-integration/outofcluster-prometheus alertmanager-integration/alert-manager alertmanager-integration/eks-managed-prometheus diff --git a/docs/index.rst b/docs/index.rst index c003e3c2d..7ecbafbfa 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -24,7 +24,6 @@ Overview Holmes Chat API configuration/exporting/send-events-api - configuration/exporting/configuration-changes-api configuration/exporting/alert-export-api configuration/exporting/alert-statistics-api configuration/exporting/rbac-api From f398591ebf6d63c0c886f6f6dfcb002dc162e51c Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 12 May 2026 10:40:48 +0000 Subject: [PATCH 05/14] Tighten Send Events API docs: customer-facing wording and param order - Replace 'accepts any JSON payload' with 'accepts the default payload structure of the supported origins'. - Remove paragraph describing internal storage/parsing behavior. - Replace the 'Unsupported sources' section with a brief 'Other sources' note that does not mention parsers. - Drop incidental references to internal terminology in per-origin pages (per-origin/generic parser, the relay, dedup-key preservation). - Reorder all webhook URL examples to type, origin, account_id. --- .../exporting/send-events-api.rst | 29 +++++++------------ .../exporting/send-events/alertmanager.rst | 6 ++-- .../exporting/send-events/argocd.rst | 4 +-- .../exporting/send-events/aws-cloudwatch.rst | 4 +-- .../exporting/send-events/azure-monitor.rst | 6 ++-- .../exporting/send-events/datadog.rst | 4 +-- .../exporting/send-events/dynatrace.rst | 4 +-- .../exporting/send-events/gcp-monitoring.rst | 6 ++-- .../exporting/send-events/github.rst | 4 +-- .../exporting/send-events/grafana.rst | 2 +- .../exporting/send-events/incidentio.rst | 2 +- .../exporting/send-events/launchdarkly.rst | 2 +- .../exporting/send-events/nagios.rst | 4 +-- .../exporting/send-events/newrelic.rst | 4 +-- .../exporting/send-events/opsgenie.rst | 2 +- .../exporting/send-events/pagerduty.rst | 4 +-- .../exporting/send-events/rootly.rst | 2 +- .../exporting/send-events/sentry.rst | 2 +- .../exporting/send-events/solarwinds.rst | 4 +-- .../exporting/send-events/splunk.rst | 4 +-- 20 files changed, 46 insertions(+), 53 deletions(-) diff --git a/docs/configuration/exporting/send-events-api.rst b/docs/configuration/exporting/send-events-api.rst index 188b67154..3ebaae78a 100644 --- a/docs/configuration/exporting/send-events-api.rst +++ b/docs/configuration/exporting/send-events-api.rst @@ -32,13 +32,11 @@ This is the recommended ingestion path for new integrations. The legacy :doc:`Se Overview -------- -The endpoint accepts any JSON payload. The request is parameterized by query string: +The endpoint accepts the default payload structure of the supported origins. The request is parameterized by query string: .. code-block:: - POST https://api.robusta.dev/webhooks?account_id=&origin=&type= - -Robusta stores every payload verbatim, then asynchronously parses it into the Robusta UI timeline. If a per-origin parser is registered for ``origin``, it is used; otherwise a generic JSON parser handles the payload. Parse failures are visible in the **Delivery Log** UI page so you can self-debug. + POST https://api.robusta.dev/webhooks?type=&origin=&account_id= Query Parameters ---------------- @@ -51,17 +49,17 @@ Query Parameters - Type - Description - Required - * - ``account_id`` + * - ``type`` - string - - Your Robusta account ID, found in ``generated_values.yaml``. + - One of ``alert``, ``incident``, or ``change``. - Yes * - ``origin`` - string - - Identifies the monitoring product (for example ``alertmanager``, ``pagerduty``, ``datadog``). Free-form; selects the per-origin parser when one exists. + - Identifies the monitoring product (for example ``alertmanager``, ``pagerduty``, ``datadog``). - Yes - * - ``type`` + * - ``account_id`` - string - - One of ``alert``, ``incident``, or ``change``. + - Your Robusta account ID, found in ``generated_values.yaml``. - Yes Authentication @@ -81,7 +79,7 @@ Example Request .. code-block:: bash curl --location --request POST \ - 'https://api.robusta.dev/webhooks?account_id=ACCOUNT_ID&origin=datadog&type=alert' \ + 'https://api.robusta.dev/webhooks?type=alert&origin=datadog&account_id=ACCOUNT_ID' \ --header 'Authorization: Bearer API_KEY' \ --header 'Content-Type: application/json' \ --data-raw '{ "title": "High error rate", "severity": "high" }' @@ -238,12 +236,7 @@ Other :link: send-events/solarwinds :link-type: doc -Unsupported sources -------------------- - -Any monitoring system that can POST JSON to a URL works. Pick a free-form ``origin`` value, paste the URL into the vendor's webhook configuration, and Robusta's generic parser will handle the payload. The AI investigator reads the raw payload along with the structured event, so source-specific fields are preserved even without a dedicated parser. - -Delivery Log ------------- +Other sources +------------- -Every received payload — parsed, pending, or failed — is visible in the Robusta UI under **Settings → Delivery Log**, scoped to your account and sorted by recency. Use it to confirm that a vendor is reaching Robusta, view the original request body, and inspect parser errors. +Any monitoring system that can POST JSON to a URL is supported. Choose a value for ``origin`` that identifies your source, then paste the URL into your vendor's webhook configuration. diff --git a/docs/configuration/exporting/send-events/alertmanager.rst b/docs/configuration/exporting/send-events/alertmanager.rst index eb8fa4f6e..e695a3dcf 100644 --- a/docs/configuration/exporting/send-events/alertmanager.rst +++ b/docs/configuration/exporting/send-events/alertmanager.rst @@ -1,7 +1,7 @@ AlertManager ============= -Forward Prometheus alerts from AlertManager directly to Robusta. Robusta's per-origin parser maps AlertManager labels and annotations onto the timeline; the original payload is preserved for HolmesGPT. +Forward Prometheus alerts from AlertManager directly to Robusta. Prerequisites ------------- @@ -15,7 +15,7 @@ Webhook URL .. code-block:: - https://api.robusta.dev/webhooks?account_id=&origin=alertmanager&type=alert + https://api.robusta.dev/webhooks?type=alert&origin=alertmanager&account_id= Configure AlertManager ---------------------- @@ -27,7 +27,7 @@ Add a webhook receiver to ``alertmanager.yml``: receivers: - name: robusta webhook_configs: - - url: 'https://api.robusta.dev/webhooks?account_id=&origin=alertmanager&type=alert' + - url: 'https://api.robusta.dev/webhooks?type=alert&origin=alertmanager&account_id=' send_resolved: true http_config: authorization: diff --git a/docs/configuration/exporting/send-events/argocd.rst b/docs/configuration/exporting/send-events/argocd.rst index 13b1bccd9..e8b87ae17 100644 --- a/docs/configuration/exporting/send-events/argocd.rst +++ b/docs/configuration/exporting/send-events/argocd.rst @@ -16,7 +16,7 @@ Webhook URL .. code-block:: - https://api.robusta.dev/webhooks?account_id=&origin=argocd&type=change + https://api.robusta.dev/webhooks?type=change&origin=argocd&account_id= Configure Argo CD Notifications -------------------------------- @@ -26,7 +26,7 @@ Add a webhook service and a template to ``argocd-notifications-cm``: .. code-block:: yaml service.webhook.robusta: | - url: https://api.robusta.dev/webhooks?account_id=&origin=argocd&type=change + url: https://api.robusta.dev/webhooks?type=change&origin=argocd&account_id= headers: - name: Authorization value: Bearer diff --git a/docs/configuration/exporting/send-events/aws-cloudwatch.rst b/docs/configuration/exporting/send-events/aws-cloudwatch.rst index 2cdbf7e63..49db98e71 100644 --- a/docs/configuration/exporting/send-events/aws-cloudwatch.rst +++ b/docs/configuration/exporting/send-events/aws-cloudwatch.rst @@ -16,7 +16,7 @@ Webhook URL .. code-block:: - https://api.robusta.dev/webhooks?account_id=&origin=awscloudwatch&type=alert + https://api.robusta.dev/webhooks?type=alert&origin=awscloudwatch&account_id= Recipe ------ @@ -32,7 +32,7 @@ Recipe import urllib.error import urllib.request - URL = "https://api.robusta.dev/webhooks?account_id=&origin=awscloudwatch&type=alert" + URL = "https://api.robusta.dev/webhooks?type=alert&origin=awscloudwatch&account_id=" TIMEOUT_SECONDS = 5 def lambda_handler(event, context): diff --git a/docs/configuration/exporting/send-events/azure-monitor.rst b/docs/configuration/exporting/send-events/azure-monitor.rst index 70739637b..dea8498b0 100644 --- a/docs/configuration/exporting/send-events/azure-monitor.rst +++ b/docs/configuration/exporting/send-events/azure-monitor.rst @@ -16,7 +16,7 @@ Webhook URL .. code-block:: - https://api.robusta.dev/webhooks?account_id=&origin=azure&type=alert + https://api.robusta.dev/webhooks?type=alert&origin=azure&account_id= Configure Azure --------------- @@ -25,11 +25,11 @@ Action Group webhook receivers do not allow custom headers, so authenticate via .. code-block:: - https://api.robusta.dev/webhooks?account_id=&origin=azure&type=alert&token= + https://api.robusta.dev/webhooks?type=alert&origin=azure&account_id=&token= 1. In the Azure Portal, open **Monitor → Action groups** and either create a new group or edit an existing one. 2. Under **Actions**, add an action of type **Webhook**. -3. Name it ``Robusta`` and set the **URI** to the URL above. Leave **Enable the common alert schema** on — Robusta's parser is built against it. +3. Name it ``Robusta`` and set the **URI** to the URL above. Leave **Enable the common alert schema** on. 4. Save the action group and attach it to the alert rules you want to forward. Verify diff --git a/docs/configuration/exporting/send-events/datadog.rst b/docs/configuration/exporting/send-events/datadog.rst index 2562b0e50..5ef568485 100644 --- a/docs/configuration/exporting/send-events/datadog.rst +++ b/docs/configuration/exporting/send-events/datadog.rst @@ -16,7 +16,7 @@ Webhook URL .. code-block:: - https://api.robusta.dev/webhooks?account_id=&origin=datadog&type=alert + https://api.robusta.dev/webhooks?type=alert&origin=datadog&account_id= Configure Datadog ----------------- @@ -29,7 +29,7 @@ Configure Datadog { "Authorization": "Bearer " } -4. Leave the default payload, or customize it. Robusta's per-origin parser handles the standard Datadog payload shape. +4. Leave the default payload. 5. Save. In any monitor, set the **Notify** field to ``@webhook-robusta`` to forward its alerts to Robusta. Verify diff --git a/docs/configuration/exporting/send-events/dynatrace.rst b/docs/configuration/exporting/send-events/dynatrace.rst index b2c121bbf..a19624079 100644 --- a/docs/configuration/exporting/send-events/dynatrace.rst +++ b/docs/configuration/exporting/send-events/dynatrace.rst @@ -16,7 +16,7 @@ Webhook URL .. code-block:: - https://api.robusta.dev/webhooks?account_id=&origin=dynatrace&type=alert + https://api.robusta.dev/webhooks?type=alert&origin=dynatrace&account_id= Configure Dynatrace ------------------- @@ -29,7 +29,7 @@ Configure Dynatrace Authorization: Bearer -4. Use the default JSON payload template, or customize it. Robusta's generic parser handles arbitrary fields. +4. Use the default JSON payload template. 5. Save and assign the integration to your alerting profile. Verify diff --git a/docs/configuration/exporting/send-events/gcp-monitoring.rst b/docs/configuration/exporting/send-events/gcp-monitoring.rst index 134e23ab6..d2b7ae5ec 100644 --- a/docs/configuration/exporting/send-events/gcp-monitoring.rst +++ b/docs/configuration/exporting/send-events/gcp-monitoring.rst @@ -16,7 +16,7 @@ Webhook URL .. code-block:: - https://api.robusta.dev/webhooks?account_id=&origin=gcp&type=alert + https://api.robusta.dev/webhooks?type=alert&origin=gcp&account_id= Configure GCP ------------- @@ -25,9 +25,9 @@ GCP webhook notification channels do not support custom headers in the console, .. code-block:: - https://api.robusta.dev/webhooks?account_id=&origin=gcp&type=alert&token= + https://api.robusta.dev/webhooks?type=alert&origin=gcp&account_id=&token= -The relay accepts ``token`` as an alternate to the ``Authorization`` header. +The ``token`` query parameter is accepted as an alternative to the ``Authorization`` header. 1. In the GCP Console, go to **Monitoring → Alerting → Edit Notification Channels**. 2. Click **Add new** under **Webhooks**. diff --git a/docs/configuration/exporting/send-events/github.rst b/docs/configuration/exporting/send-events/github.rst index 0ea4e30ea..f2d2a9d21 100644 --- a/docs/configuration/exporting/send-events/github.rst +++ b/docs/configuration/exporting/send-events/github.rst @@ -16,7 +16,7 @@ Webhook URL .. code-block:: - https://api.robusta.dev/webhooks?account_id=&origin=github&type=change + https://api.robusta.dev/webhooks?type=change&origin=github&account_id= Configure GitHub ---------------- @@ -28,7 +28,7 @@ Configure GitHub .. code-block:: - https://api.robusta.dev/webhooks?account_id=&origin=github&type=change&token= + https://api.robusta.dev/webhooks?type=change&origin=github&account_id=&token= .. warning:: diff --git a/docs/configuration/exporting/send-events/grafana.rst b/docs/configuration/exporting/send-events/grafana.rst index 7204b316b..d9692385c 100644 --- a/docs/configuration/exporting/send-events/grafana.rst +++ b/docs/configuration/exporting/send-events/grafana.rst @@ -16,7 +16,7 @@ Webhook URL .. code-block:: - https://api.robusta.dev/webhooks?account_id=&origin=grafana&type=alert + https://api.robusta.dev/webhooks?type=alert&origin=grafana&account_id= Configure Grafana ----------------- diff --git a/docs/configuration/exporting/send-events/incidentio.rst b/docs/configuration/exporting/send-events/incidentio.rst index 15cf17b2d..4dfcd2e2e 100644 --- a/docs/configuration/exporting/send-events/incidentio.rst +++ b/docs/configuration/exporting/send-events/incidentio.rst @@ -16,7 +16,7 @@ Webhook URL .. code-block:: - https://api.robusta.dev/webhooks?account_id=&origin=incidentio&type=incident + https://api.robusta.dev/webhooks?type=incident&origin=incidentio&account_id= Configure Incident.io --------------------- diff --git a/docs/configuration/exporting/send-events/launchdarkly.rst b/docs/configuration/exporting/send-events/launchdarkly.rst index 97ad7a653..3f7b10888 100644 --- a/docs/configuration/exporting/send-events/launchdarkly.rst +++ b/docs/configuration/exporting/send-events/launchdarkly.rst @@ -16,7 +16,7 @@ Webhook URL .. code-block:: - https://api.robusta.dev/webhooks?account_id=&origin=launchdarkly&type=change + https://api.robusta.dev/webhooks?type=change&origin=launchdarkly&account_id= Configure LaunchDarkly ---------------------- diff --git a/docs/configuration/exporting/send-events/nagios.rst b/docs/configuration/exporting/send-events/nagios.rst index a45c0c88e..368bcbc45 100644 --- a/docs/configuration/exporting/send-events/nagios.rst +++ b/docs/configuration/exporting/send-events/nagios.rst @@ -16,7 +16,7 @@ Webhook URL .. code-block:: - https://api.robusta.dev/webhooks?account_id=&origin=nagios&type=alert + https://api.robusta.dev/webhooks?type=alert&origin=nagios&account_id= Configure Nagios ---------------- @@ -53,7 +53,7 @@ Then reference ``$USER20$`` from the notification command: "type": "$NOTIFICATIONTYPE$", "output": "$SERVICEOUTPUT$" }' \ - 'https://api.robusta.dev/webhooks?account_id=&origin=nagios&type=alert' + 'https://api.robusta.dev/webhooks?type=alert&origin=nagios&account_id=' } Define an analogous ``notify-robusta-host`` command, then attach both to a Nagios contact: diff --git a/docs/configuration/exporting/send-events/newrelic.rst b/docs/configuration/exporting/send-events/newrelic.rst index 7451995bd..3ac1e29d2 100644 --- a/docs/configuration/exporting/send-events/newrelic.rst +++ b/docs/configuration/exporting/send-events/newrelic.rst @@ -16,7 +16,7 @@ Webhook URL .. code-block:: - https://api.robusta.dev/webhooks?account_id=&origin=newrelic&type=alert + https://api.robusta.dev/webhooks?type=alert&origin=newrelic&account_id= Configure New Relic ------------------- @@ -29,7 +29,7 @@ Configure New Relic Authorization: Bearer -4. Use the default payload template. Robusta preserves the original ``aggregationKeys`` field as the dedup key. +4. Use the default payload template. 5. Create a **Workflow** that routes the desired policy to this destination. Verify diff --git a/docs/configuration/exporting/send-events/opsgenie.rst b/docs/configuration/exporting/send-events/opsgenie.rst index e31f8608b..516de1e7d 100644 --- a/docs/configuration/exporting/send-events/opsgenie.rst +++ b/docs/configuration/exporting/send-events/opsgenie.rst @@ -16,7 +16,7 @@ Webhook URL .. code-block:: - https://api.robusta.dev/webhooks?account_id=&origin=opsgenie&type=alert + https://api.robusta.dev/webhooks?type=alert&origin=opsgenie&account_id= Configure Opsgenie ------------------ diff --git a/docs/configuration/exporting/send-events/pagerduty.rst b/docs/configuration/exporting/send-events/pagerduty.rst index 8370289a9..0a511dbb0 100644 --- a/docs/configuration/exporting/send-events/pagerduty.rst +++ b/docs/configuration/exporting/send-events/pagerduty.rst @@ -18,13 +18,13 @@ For incidents: .. code-block:: - https://api.robusta.dev/webhooks?account_id=&origin=pagerduty&type=incident + https://api.robusta.dev/webhooks?type=incident&origin=pagerduty&account_id= For AIOps-forwarded alerts: .. code-block:: - https://api.robusta.dev/webhooks?account_id=&origin=pagerduty&type=alert + https://api.robusta.dev/webhooks?type=alert&origin=pagerduty&account_id= Configure PagerDuty ------------------- diff --git a/docs/configuration/exporting/send-events/rootly.rst b/docs/configuration/exporting/send-events/rootly.rst index 67c8332f4..dbb98b4f9 100644 --- a/docs/configuration/exporting/send-events/rootly.rst +++ b/docs/configuration/exporting/send-events/rootly.rst @@ -16,7 +16,7 @@ Webhook URL .. code-block:: - https://api.robusta.dev/webhooks?account_id=&origin=rootly&type=incident + https://api.robusta.dev/webhooks?type=incident&origin=rootly&account_id= Configure Rootly ---------------- diff --git a/docs/configuration/exporting/send-events/sentry.rst b/docs/configuration/exporting/send-events/sentry.rst index 902ca9469..2f11170f6 100644 --- a/docs/configuration/exporting/send-events/sentry.rst +++ b/docs/configuration/exporting/send-events/sentry.rst @@ -16,7 +16,7 @@ Webhook URL .. code-block:: - https://api.robusta.dev/webhooks?account_id=&origin=sentry&type=alert + https://api.robusta.dev/webhooks?type=alert&origin=sentry&account_id= Configure Sentry ---------------- diff --git a/docs/configuration/exporting/send-events/solarwinds.rst b/docs/configuration/exporting/send-events/solarwinds.rst index 8b40a2929..5678127c3 100644 --- a/docs/configuration/exporting/send-events/solarwinds.rst +++ b/docs/configuration/exporting/send-events/solarwinds.rst @@ -16,7 +16,7 @@ Webhook URL .. code-block:: - https://api.robusta.dev/webhooks?account_id=&origin=solarwinds&type=alert + https://api.robusta.dev/webhooks?type=alert&origin=solarwinds&account_id= Configure SolarWinds -------------------- @@ -29,7 +29,7 @@ SolarWinds does not ship a native bearer-token webhook action. Use the **Execute -H "Authorization: Bearer " ^ -H "Content-Type: application/json" ^ --data "{ \"alertName\": \"${N=Alerting;M=AlertName}\", \"node\": \"${N=SwisEntity;M=Caption}\", \"severity\": \"${N=Alerting;M=Severity}\", \"message\": \"${N=Alerting;M=AlertMessage}\" }" ^ - "https://api.robusta.dev/webhooks?account_id=&origin=solarwinds&type=alert" + "https://api.robusta.dev/webhooks?type=alert&origin=solarwinds&account_id=" Save the action and attach it to the alerts you want forwarded. diff --git a/docs/configuration/exporting/send-events/splunk.rst b/docs/configuration/exporting/send-events/splunk.rst index c44c99fd8..2345050be 100644 --- a/docs/configuration/exporting/send-events/splunk.rst +++ b/docs/configuration/exporting/send-events/splunk.rst @@ -16,13 +16,13 @@ Webhook URL .. code-block:: - https://api.robusta.dev/webhooks?account_id=&origin=splunk&type=alert + https://api.robusta.dev/webhooks?type=alert&origin=splunk&account_id= Splunk's built-in **Webhook** alert action does not support custom headers. Authenticate via the URL: .. code-block:: - https://api.robusta.dev/webhooks?account_id=&origin=splunk&type=alert&token= + https://api.robusta.dev/webhooks?type=alert&origin=splunk&account_id=&token= Configure Splunk ---------------- From 055b037367987b4b58b5cd8448a1cb78a3cc30b4 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 12 May 2026 10:42:38 +0000 Subject: [PATCH 06/14] Use bundled octicons in Send Events API cards MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Theme ships only a subset of octicons; cloud, bell, git-branch, and flame fell through as literal text. Replace with server, pulse, package, and plug — all of which are used elsewhere in the docs and render correctly. --- .../exporting/send-events-api.rst | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/configuration/exporting/send-events-api.rst b/docs/configuration/exporting/send-events-api.rst index 3ebaae78a..9d4192ca5 100644 --- a/docs/configuration/exporting/send-events-api.rst +++ b/docs/configuration/exporting/send-events-api.rst @@ -158,17 +158,17 @@ Cloud Provider Monitoring .. grid:: 1 1 2 3 :gutter: 3 - .. grid-item-card:: :octicon:`cloud;1em;` GCP Cloud Monitoring + .. grid-item-card:: :octicon:`server;1em;` GCP Cloud Monitoring :class-card: sd-bg-light sd-bg-text-light :link: send-events/gcp-monitoring :link-type: doc - .. grid-item-card:: :octicon:`cloud;1em;` Azure Monitor + .. grid-item-card:: :octicon:`server;1em;` Azure Monitor :class-card: sd-bg-light sd-bg-text-light :link: send-events/azure-monitor :link-type: doc - .. grid-item-card:: :octicon:`cloud;1em;` AWS CloudWatch + .. grid-item-card:: :octicon:`server;1em;` AWS CloudWatch :class-card: sd-bg-light sd-bg-text-light :link: send-events/aws-cloudwatch :link-type: doc @@ -179,22 +179,22 @@ Incident Management .. grid:: 1 1 2 3 :gutter: 3 - .. grid-item-card:: :octicon:`bell;1em;` PagerDuty + .. grid-item-card:: :octicon:`pulse;1em;` PagerDuty :class-card: sd-bg-light sd-bg-text-light :link: send-events/pagerduty :link-type: doc - .. grid-item-card:: :octicon:`bell;1em;` Opsgenie + .. grid-item-card:: :octicon:`pulse;1em;` Opsgenie :class-card: sd-bg-light sd-bg-text-light :link: send-events/opsgenie :link-type: doc - .. grid-item-card:: :octicon:`bell;1em;` Rootly + .. grid-item-card:: :octicon:`pulse;1em;` Rootly :class-card: sd-bg-light sd-bg-text-light :link: send-events/rootly :link-type: doc - .. grid-item-card:: :octicon:`bell;1em;` Incident.io + .. grid-item-card:: :octicon:`pulse;1em;` Incident.io :class-card: sd-bg-light sd-bg-text-light :link: send-events/incidentio :link-type: doc @@ -205,7 +205,7 @@ Changes & Deployments .. grid:: 1 1 2 3 :gutter: 3 - .. grid-item-card:: :octicon:`git-branch;1em;` Argo CD + .. grid-item-card:: :octicon:`package;1em;` Argo CD :class-card: sd-bg-light sd-bg-text-light :link: send-events/argocd :link-type: doc @@ -215,7 +215,7 @@ Changes & Deployments :link: send-events/github :link-type: doc - .. grid-item-card:: :octicon:`flame;1em;` LaunchDarkly + .. grid-item-card:: :octicon:`plug;1em;` LaunchDarkly :class-card: sd-bg-light sd-bg-text-light :link: send-events/launchdarkly :link-type: doc From 42bc0b7b305074b423db0eceda8345c753e75977 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 12 May 2026 10:43:27 +0000 Subject: [PATCH 07/14] Clarify Splunk auth: single URL example with token, header as fallback --- .../exporting/send-events/splunk.rst | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/docs/configuration/exporting/send-events/splunk.rst b/docs/configuration/exporting/send-events/splunk.rst index 2345050be..e02a4fd07 100644 --- a/docs/configuration/exporting/send-events/splunk.rst +++ b/docs/configuration/exporting/send-events/splunk.rst @@ -18,20 +18,19 @@ Webhook URL https://api.robusta.dev/webhooks?type=alert&origin=splunk&account_id= -Splunk's built-in **Webhook** alert action does not support custom headers. Authenticate via the URL: - -.. code-block:: - - https://api.robusta.dev/webhooks?type=alert&origin=splunk&account_id=&token= - Configure Splunk ---------------- +Splunk's built-in **Webhook** alert action does not let you set custom headers, so authenticate via the URL. + 1. Open or create a Splunk saved search and choose **Add Actions → Webhook**. -2. Set the **URL** to the URL above. -3. Save the search. Splunk will POST the search results to Robusta whenever the alert fires. +2. Set the **URL** to the webhook URL above with ``&token=`` appended, so authentication travels with the request: + + .. code-block:: + + https://api.robusta.dev/webhooks?type=alert&origin=splunk&account_id=&token= -For environments where you control the Splunk app, use the **Webhook Alert Action** plugin to send an ``Authorization: Bearer `` header instead of the URL token. +3. Save the search. If your Splunk environment has the **Webhook Alert Action** app installed, you can instead set an ``Authorization: Bearer `` header and use the plain webhook URL without ``&token=…``. Verify ------ From 1cedc9ad13d29b27934d39b8f0d3db56b55544ec Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 12 May 2026 10:46:31 +0000 Subject: [PATCH 08/14] Restrict Send Events API docs to alerts only MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Only the alert type is supported today. Remove origins that only produce incidents (Rootly, Incident.io) or changes (Argo CD, GitHub, LaunchDarkly), drop the Incident Management → Rootly/ Incident.io and Changes & Deployments cards, simplify the type parameter to require 'alert', and rewrite PagerDuty for the AIOps alert flow only. --- .../exporting/send-events-api.rst | 42 +----------- .../exporting/send-events/argocd.rst | 68 ------------------- .../exporting/send-events/github.rst | 42 ------------ .../exporting/send-events/incidentio.rst | 37 ---------- .../exporting/send-events/launchdarkly.rst | 36 ---------- .../exporting/send-events/pagerduty.rst | 25 +++---- .../exporting/send-events/rootly.rst | 37 ---------- 7 files changed, 11 insertions(+), 276 deletions(-) delete mode 100644 docs/configuration/exporting/send-events/argocd.rst delete mode 100644 docs/configuration/exporting/send-events/github.rst delete mode 100644 docs/configuration/exporting/send-events/incidentio.rst delete mode 100644 docs/configuration/exporting/send-events/launchdarkly.rst delete mode 100644 docs/configuration/exporting/send-events/rootly.rst diff --git a/docs/configuration/exporting/send-events-api.rst b/docs/configuration/exporting/send-events-api.rst index 9d4192ca5..c00de10f9 100644 --- a/docs/configuration/exporting/send-events-api.rst +++ b/docs/configuration/exporting/send-events-api.rst @@ -1,7 +1,7 @@ Send Events API ================ -Send alerts, incidents, and changes from any monitoring system to Robusta through a single webhook endpoint. HolmesGPT investigates each event against your live cluster state, logs, metrics, and connected data sources, and attaches its findings to help accelerate triage. +Send alerts from any monitoring system to Robusta through a single webhook endpoint. HolmesGPT investigates each alert against your live cluster state, logs, metrics, and connected data sources, and attaches its findings to help accelerate triage. This is the recommended ingestion path for new integrations. The legacy :doc:`Send Alerts API ` remains available for existing customers. @@ -19,12 +19,7 @@ This is the recommended ingestion path for new integrations. The legacy :doc:`Se send-events/azure-monitor send-events/splunk send-events/sentry - send-events/launchdarkly - send-events/argocd - send-events/github send-events/opsgenie - send-events/rootly - send-events/incidentio send-events/nagios send-events/solarwinds send-events/aws-cloudwatch @@ -36,7 +31,7 @@ The endpoint accepts the default payload structure of the supported origins. The .. code-block:: - POST https://api.robusta.dev/webhooks?type=&origin=&account_id= + POST https://api.robusta.dev/webhooks?type=alert&origin=&account_id= Query Parameters ---------------- @@ -51,7 +46,7 @@ Query Parameters - Required * - ``type`` - string - - One of ``alert``, ``incident``, or ``change``. + - Must be ``alert``. - Yes * - ``origin`` - string @@ -189,37 +184,6 @@ Incident Management :link: send-events/opsgenie :link-type: doc - .. grid-item-card:: :octicon:`pulse;1em;` Rootly - :class-card: sd-bg-light sd-bg-text-light - :link: send-events/rootly - :link-type: doc - - .. grid-item-card:: :octicon:`pulse;1em;` Incident.io - :class-card: sd-bg-light sd-bg-text-light - :link: send-events/incidentio - :link-type: doc - -Changes & Deployments -~~~~~~~~~~~~~~~~~~~~~~ - -.. grid:: 1 1 2 3 - :gutter: 3 - - .. grid-item-card:: :octicon:`package;1em;` Argo CD - :class-card: sd-bg-light sd-bg-text-light - :link: send-events/argocd - :link-type: doc - - .. grid-item-card:: :octicon:`mark-github;1em;` GitHub - :class-card: sd-bg-light sd-bg-text-light - :link: send-events/github - :link-type: doc - - .. grid-item-card:: :octicon:`plug;1em;` LaunchDarkly - :class-card: sd-bg-light sd-bg-text-light - :link: send-events/launchdarkly - :link-type: doc - Other ~~~~~~ diff --git a/docs/configuration/exporting/send-events/argocd.rst b/docs/configuration/exporting/send-events/argocd.rst deleted file mode 100644 index e8b87ae17..000000000 --- a/docs/configuration/exporting/send-events/argocd.rst +++ /dev/null @@ -1,68 +0,0 @@ -Argo CD -======== - -Forward Argo CD sync and health events to Robusta as ``change`` events. - -Prerequisites -------------- - -* A Robusta account with API access. -* Your Robusta ``account_id``, found in ``generated_values.yaml``. -* A Robusta API key with ``Read/Write`` access to alerts. -* Argo CD with the ``argocd-notifications`` controller (built into Argo CD 2.3+). - -Webhook URL ------------ - -.. code-block:: - - https://api.robusta.dev/webhooks?type=change&origin=argocd&account_id= - -Configure Argo CD Notifications --------------------------------- - -Add a webhook service and a template to ``argocd-notifications-cm``: - -.. code-block:: yaml - - service.webhook.robusta: | - url: https://api.robusta.dev/webhooks?type=change&origin=argocd&account_id= - headers: - - name: Authorization - value: Bearer - - template.app-event: | - webhook: - robusta: - method: POST - body: | - { - "app": "{{.app.metadata.name}}", - "namespace": "{{.app.metadata.namespace}}", - "syncStatus": "{{.app.status.sync.status}}", - "healthStatus": "{{.app.status.health.status}}", - "operationState": "{{.app.status.operationState.phase}}" - } - -Subscribe applications to the trigger using the ``notifications.argoproj.io/subscribe..robusta`` annotation. Replace ```` with the trigger name you want to forward — for example, ``on-sync-failed``: - -.. code-block:: yaml - - apiVersion: argoproj.io/v1alpha1 - kind: Application - metadata: - name: my-app - namespace: argocd - annotations: - notifications.argoproj.io/subscribe.on-sync-failed.robusta: "" - notifications.argoproj.io/subscribe.on-deployed.robusta: "" - notifications.argoproj.io/subscribe.on-health-degraded.robusta: "" - spec: - # ... - -The annotation value can be left empty (any non-null value subscribes the receiver) or set to a comma-separated list of recipients if you have configured multiple Robusta receivers. - -Verify ------- - -Trigger a sync on a subscribed application. The event should appear in **Settings → Delivery Log** and on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/github.rst b/docs/configuration/exporting/send-events/github.rst deleted file mode 100644 index f2d2a9d21..000000000 --- a/docs/configuration/exporting/send-events/github.rst +++ /dev/null @@ -1,42 +0,0 @@ -GitHub -======= - -Forward GitHub repository events (deployments, releases, workflow runs) to Robusta as ``change`` events. - -Prerequisites -------------- - -* A Robusta account with API access. -* Your Robusta ``account_id``, found in ``generated_values.yaml``. -* A Robusta API key with ``Read/Write`` access to alerts. -* GitHub admin access to the repository or organization. - -Webhook URL ------------ - -.. code-block:: - - https://api.robusta.dev/webhooks?type=change&origin=github&account_id= - -Configure GitHub ----------------- - -1. In your repository or organization, go to **Settings → Webhooks → Add webhook**. -2. Set **Payload URL** to the URL above. -3. Set **Content type** to ``application/json``. -4. GitHub webhooks support a single ``X-Hub-Signature-256`` header but no custom ``Authorization`` header. Authenticate by appending the API key to the URL: - - .. code-block:: - - https://api.robusta.dev/webhooks?type=change&origin=github&account_id=&token= - - .. warning:: - - Tokens embedded in URLs can leak via browser history, server access logs, proxy logs, and HTTP ``Referer`` headers. Prefer header-based authentication when the vendor supports it. When a query-string token is the only option, mitigate exposure by using a dedicated, narrowly scoped API key with the minimum required permissions, rotating it on a regular cadence, and revoking it immediately if a leak is suspected. - -5. Choose the events to deliver (``Deployments``, ``Workflow runs``, ``Releases``, etc.) and save. - -Verify ------- - -Trigger a workflow run or push a release. The event should appear in **Settings → Delivery Log** and on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/incidentio.rst b/docs/configuration/exporting/send-events/incidentio.rst deleted file mode 100644 index 4dfcd2e2e..000000000 --- a/docs/configuration/exporting/send-events/incidentio.rst +++ /dev/null @@ -1,37 +0,0 @@ -Incident.io -============ - -Forward Incident.io incidents to Robusta via an Incident.io outgoing webhook. - -Prerequisites -------------- - -* A Robusta account with API access. -* Your Robusta ``account_id``, found in ``generated_values.yaml``. -* A Robusta API key with ``Read/Write`` access to alerts. -* Incident.io admin access. - -Webhook URL ------------ - -.. code-block:: - - https://api.robusta.dev/webhooks?type=incident&origin=incidentio&account_id= - -Configure Incident.io ---------------------- - -1. In Incident.io, go to **Settings → Webhooks → New webhook**. -2. Set the **URL** to the URL above. -3. Add a custom HTTP header: - - .. code-block:: - - Authorization: Bearer - -4. Subscribe to the events you want forwarded (``incident.created``, ``incident.updated``, ``incident.resolved``, …) and save. Incident.io will sign the payload — Robusta ignores the signature and authenticates on the bearer token. - -Verify ------- - -Declare a test incident. The event should appear in **Settings → Delivery Log** and on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/launchdarkly.rst b/docs/configuration/exporting/send-events/launchdarkly.rst deleted file mode 100644 index 3f7b10888..000000000 --- a/docs/configuration/exporting/send-events/launchdarkly.rst +++ /dev/null @@ -1,36 +0,0 @@ -LaunchDarkly -============= - -Forward LaunchDarkly flag and segment changes to Robusta as ``change`` events. - -Prerequisites -------------- - -* A Robusta account with API access. -* Your Robusta ``account_id``, found in ``generated_values.yaml``. -* A Robusta API key with ``Read/Write`` access to alerts. -* LaunchDarkly admin access. - -Webhook URL ------------ - -.. code-block:: - - https://api.robusta.dev/webhooks?type=change&origin=launchdarkly&account_id= - -Configure LaunchDarkly ----------------------- - -1. In LaunchDarkly, go to **Integrations → Webhooks → Add integration**. -2. Set the **URL** to the URL above. -3. Optionally restrict the events with a **Policy filter** (for example, only flag updates in production). -4. LaunchDarkly does not let you add an ``Authorization`` header; instead enable **HMAC signing** (Robusta ignores it) and append ``&token=`` to the URL. - - .. warning:: - - Query-parameter tokens can be exposed in proxy and server access logs and in browser history. Prefer HMAC signing where it is supported end-to-end. If you must use a URL token, use a dedicated, narrowly scoped Robusta API key with only the permissions this integration requires, and rotate it on a regular cadence so a leaked URL has a bounded blast radius. - -Verify ------- - -Toggle a feature flag in LaunchDarkly. The event should appear in **Settings → Delivery Log** and on the Robusta timeline as a ``change`` event. diff --git a/docs/configuration/exporting/send-events/pagerduty.rst b/docs/configuration/exporting/send-events/pagerduty.rst index 0a511dbb0..95edf2342 100644 --- a/docs/configuration/exporting/send-events/pagerduty.rst +++ b/docs/configuration/exporting/send-events/pagerduty.rst @@ -1,7 +1,7 @@ PagerDuty ========== -Forward PagerDuty incidents (and AIOps alerts) to Robusta via Generic Webhooks v3. +Forward PagerDuty alerts to Robusta via PagerDuty AIOps Event Orchestration. Prerequisites ------------- @@ -9,19 +9,11 @@ Prerequisites * A Robusta account with API access. * Your Robusta ``account_id``, found in ``generated_values.yaml``. * A Robusta API key with ``Read/Write`` access to alerts, generated under **Settings → API Keys → New API Key**. -* A PagerDuty admin able to create webhooks. AIOps Event Orchestration is required to forward full alert-level data. +* An AIOps-enabled PagerDuty plan with admin access to Event Orchestration. Webhook URL ----------- -For incidents: - -.. code-block:: - - https://api.robusta.dev/webhooks?type=incident&origin=pagerduty&account_id= - -For AIOps-forwarded alerts: - .. code-block:: https://api.robusta.dev/webhooks?type=alert&origin=pagerduty&account_id= @@ -29,19 +21,18 @@ For AIOps-forwarded alerts: Configure PagerDuty ------------------- -1. In PagerDuty, go to **Integrations → Generic Webhooks v3** and click **New Webhook**. -2. Set the **Webhook URL** to the URL above. -3. Add a custom header: +1. In PagerDuty, go to **AIOps → Event Orchestration** and open the orchestration that handles the alerts you want forwarded. +2. Under **Automation → Webhook Actions**, add a new webhook. +3. Set the **Webhook URL** to the URL above. +4. Add a custom header: .. code-block:: Authorization: Bearer -4. Save. PagerDuty will sign the payload, but Robusta authenticates on the API key alone — the signature is ignored. - -For AIOps event-level forwarding, repeat the same steps inside **AIOps → Event Orchestration → Webhook Action** and target the ``type=alert`` URL. +5. Save. PagerDuty will sign the payload, but Robusta authenticates on the API key alone — the signature is ignored. Verify ------ -Trigger a test incident in PagerDuty. It should appear in **Settings → Delivery Log** and on the Robusta timeline. +Trigger a test alert in PagerDuty. It should appear in **Settings → Delivery Log** and on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/rootly.rst b/docs/configuration/exporting/send-events/rootly.rst deleted file mode 100644 index dbb98b4f9..000000000 --- a/docs/configuration/exporting/send-events/rootly.rst +++ /dev/null @@ -1,37 +0,0 @@ -Rootly -======= - -Forward Rootly incidents to Robusta via a Rootly outgoing webhook. - -Prerequisites -------------- - -* A Robusta account with API access. -* Your Robusta ``account_id``, found in ``generated_values.yaml``. -* A Robusta API key with ``Read/Write`` access to alerts. -* Rootly admin access. - -Webhook URL ------------ - -.. code-block:: - - https://api.robusta.dev/webhooks?type=incident&origin=rootly&account_id= - -Configure Rootly ----------------- - -1. In Rootly, go to **Integrations → Outgoing Webhooks → New webhook**. -2. Set the **URL** to the URL above and name it ``Robusta``. -3. Add a custom header: - - .. code-block:: - - Authorization: Bearer - -4. Subscribe to the incident events you want forwarded (``incident.created``, ``incident.updated``, ``incident.resolved``, …) and save. - -Verify ------- - -Create a test incident in Rootly. The event should appear in **Settings → Delivery Log** and on the Robusta timeline. From d4b30e7b95e441c5969d1806dad2479768f4a35c Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 12 May 2026 10:48:31 +0000 Subject: [PATCH 09/14] Treat origin as a closed set of supported values Update the origin parameter description to point at the Integrations list, and drop the 'Other sources' note that implied customers could pick any origin string. --- docs/configuration/exporting/send-events-api.rst | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/docs/configuration/exporting/send-events-api.rst b/docs/configuration/exporting/send-events-api.rst index c00de10f9..7367e2436 100644 --- a/docs/configuration/exporting/send-events-api.rst +++ b/docs/configuration/exporting/send-events-api.rst @@ -50,7 +50,7 @@ Query Parameters - Yes * - ``origin`` - string - - Identifies the monitoring product (for example ``alertmanager``, ``pagerduty``, ``datadog``). + - Identifies the monitoring product. Must be one of the supported origins listed under `Integrations`_ below. - Yes * - ``account_id`` - string @@ -200,7 +200,3 @@ Other :link: send-events/solarwinds :link-type: doc -Other sources -------------- - -Any monitoring system that can POST JSON to a URL is supported. Choose a value for ``origin`` that identifies your source, then paste the URL into your vendor's webhook configuration. From c8f913bf98d141ac1cfc59ac008fe653fe3040ce Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 12 May 2026 12:08:00 +0000 Subject: [PATCH 10/14] Collapse SolarWinds curl example to a single line The Execute an external program alert action takes one command line, so the ^ continuations were unnecessary. --- docs/configuration/exporting/send-events/solarwinds.rst | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/docs/configuration/exporting/send-events/solarwinds.rst b/docs/configuration/exporting/send-events/solarwinds.rst index 5678127c3..cd2db4e56 100644 --- a/docs/configuration/exporting/send-events/solarwinds.rst +++ b/docs/configuration/exporting/send-events/solarwinds.rst @@ -21,15 +21,11 @@ Webhook URL Configure SolarWinds -------------------- -SolarWinds does not ship a native bearer-token webhook action. Use the **Execute an external program** action with ``curl``: +SolarWinds does not ship a native bearer-token webhook action. Use the **Execute an external program** alert action to invoke ``curl`` (bundled with Windows 10+ and Windows Server 2019+): .. code-block:: - curl -sS -X POST ^ - -H "Authorization: Bearer " ^ - -H "Content-Type: application/json" ^ - --data "{ \"alertName\": \"${N=Alerting;M=AlertName}\", \"node\": \"${N=SwisEntity;M=Caption}\", \"severity\": \"${N=Alerting;M=Severity}\", \"message\": \"${N=Alerting;M=AlertMessage}\" }" ^ - "https://api.robusta.dev/webhooks?type=alert&origin=solarwinds&account_id=" + curl -sS -X POST -H "Authorization: Bearer " -H "Content-Type: application/json" --data "{ \"alertName\": \"${N=Alerting;M=AlertName}\", \"node\": \"${N=SwisEntity;M=Caption}\", \"severity\": \"${N=Alerting;M=Severity}\", \"message\": \"${N=Alerting;M=AlertMessage}\" }" "https://api.robusta.dev/webhooks?type=alert&origin=solarwinds&account_id=" Save the action and attach it to the alerts you want forwarded. From 9e49e107a7b91a5c7b4c2c0d19cecffec18b1c42 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 12 May 2026 12:20:08 +0000 Subject: [PATCH 11/14] Flatten Send Alerts to Robusta sidebar tree Move the toctree above all H2 sections so the theme renders its entries directly under the page, not nested under the Programmatic Integration heading. --- docs/configuration/index.rst | 40 ++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/docs/configuration/index.rst b/docs/configuration/index.rst index 7e9b634be..0173cbf02 100644 --- a/docs/configuration/index.rst +++ b/docs/configuration/index.rst @@ -5,26 +5,6 @@ Send Alerts to Robusta Connect your monitoring system to Robusta, to enrich alerts and apply automation rules. -Programmatic Integration -------------------------- - -.. grid:: 1 1 2 3 - :gutter: 3 - - .. grid-item-card:: :octicon:`code;1em;` Send Alerts API - :class-card: sd-bg-light sd-bg-text-light - :link: exporting/send-alerts-api - :link-type: doc - - Send alerts programmatically via the legacy ``/api/alerts`` REST endpoint. - - .. grid-item-card:: :octicon:`code;1em;` Configuration Changes API - :class-card: sd-bg-light sd-bg-text-light - :link: exporting/configuration-changes-api - :link-type: doc - - Send configuration changes programmatically via the legacy REST endpoint. - .. toctree:: :maxdepth: 1 :hidden: @@ -51,6 +31,26 @@ Programmatic Integration alertmanager-integration/customize-labels-priorities exporting/custom-webhooks +Programmatic Integration +------------------------- + +.. grid:: 1 1 2 3 + :gutter: 3 + + .. grid-item-card:: :octicon:`code;1em;` Send Alerts API + :class-card: sd-bg-light sd-bg-text-light + :link: exporting/send-alerts-api + :link-type: doc + + Send alerts programmatically via the legacy ``/api/alerts`` REST endpoint. + + .. grid-item-card:: :octicon:`code;1em;` Configuration Changes API + :class-card: sd-bg-light sd-bg-text-light + :link: exporting/configuration-changes-api + :link-type: doc + + Send configuration changes programmatically via the legacy REST endpoint. + Prometheus & AlertManager -------------------------- From aafd0b0e65ec88168736df8e43f08c5a27aed47b Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 12 May 2026 12:57:46 +0000 Subject: [PATCH 12/14] Sort Send Events API origin toctree alphabetically --- docs/configuration/exporting/send-events-api.rst | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/configuration/exporting/send-events-api.rst b/docs/configuration/exporting/send-events-api.rst index 7367e2436..be522a86c 100644 --- a/docs/configuration/exporting/send-events-api.rst +++ b/docs/configuration/exporting/send-events-api.rst @@ -10,19 +10,19 @@ This is the recommended ingestion path for new integrations. The legacy :doc:`Se :hidden: send-events/alertmanager - send-events/pagerduty + send-events/aws-cloudwatch + send-events/azure-monitor send-events/datadog - send-events/newrelic send-events/dynatrace - send-events/grafana send-events/gcp-monitoring - send-events/azure-monitor - send-events/splunk - send-events/sentry - send-events/opsgenie + send-events/grafana send-events/nagios + send-events/newrelic + send-events/opsgenie + send-events/pagerduty + send-events/sentry send-events/solarwinds - send-events/aws-cloudwatch + send-events/splunk Overview -------- From df2f77fd025d12f9b0fd7f4676a0d3df69c28459 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 13 May 2026 07:51:10 +0000 Subject: [PATCH 13/14] Trim Send Events API docs to setup-only content - Drop HMAC/signature-ignored note on PagerDuty page. - Replace Delivery Log mentions in every Verify section with a simple 'alert should appear on the Robusta timeline' line. - Trim the main page: remove HolmesGPT marketing sentence, the Response/Errors sections, rate-limit numbers, and the 401-on-mismatch note. - Collapse the Query Parameters table from four columns to two. - Shorten the Nagios resource.cfg security explanation. - Drop the 'token is an alternative to Authorization' meta note from the GCP page. --- .../exporting/send-events-api.rst | 35 ++----------------- .../exporting/send-events/alertmanager.rst | 2 +- .../exporting/send-events/aws-cloudwatch.rst | 2 +- .../exporting/send-events/azure-monitor.rst | 2 +- .../exporting/send-events/datadog.rst | 2 +- .../exporting/send-events/dynatrace.rst | 2 +- .../exporting/send-events/gcp-monitoring.rst | 4 +-- .../exporting/send-events/grafana.rst | 2 +- .../exporting/send-events/nagios.rst | 10 +++--- .../exporting/send-events/newrelic.rst | 2 +- .../exporting/send-events/opsgenie.rst | 2 +- .../exporting/send-events/pagerduty.rst | 4 +-- .../exporting/send-events/sentry.rst | 2 +- .../exporting/send-events/solarwinds.rst | 2 +- .../exporting/send-events/splunk.rst | 2 +- 15 files changed, 21 insertions(+), 54 deletions(-) diff --git a/docs/configuration/exporting/send-events-api.rst b/docs/configuration/exporting/send-events-api.rst index be522a86c..eebdd7322 100644 --- a/docs/configuration/exporting/send-events-api.rst +++ b/docs/configuration/exporting/send-events-api.rst @@ -1,7 +1,7 @@ Send Events API ================ -Send alerts from any monitoring system to Robusta through a single webhook endpoint. HolmesGPT investigates each alert against your live cluster state, logs, metrics, and connected data sources, and attaches its findings to help accelerate triage. +Send alerts from your monitoring system to Robusta through a single webhook endpoint. This is the recommended ingestion path for new integrations. The legacy :doc:`Send Alerts API ` remains available for existing customers. @@ -24,11 +24,9 @@ This is the recommended ingestion path for new integrations. The legacy :doc:`Se send-events/solarwinds send-events/splunk -Overview +Endpoint -------- -The endpoint accepts the default payload structure of the supported origins. The request is parameterized by query string: - .. code-block:: POST https://api.robusta.dev/webhooks?type=alert&origin=&account_id= @@ -37,25 +35,17 @@ Query Parameters ---------------- .. list-table:: - :widths: 20 10 60 10 + :widths: 20 70 :header-rows: 1 * - Parameter - - Type - Description - - Required * - ``type`` - - string - Must be ``alert``. - - Yes * - ``origin`` - - string - Identifies the monitoring product. Must be one of the supported origins listed under `Integrations`_ below. - - Yes * - ``account_id`` - - string - Your Robusta account ID, found in ``generated_values.yaml``. - - Yes Authentication -------------- @@ -66,8 +56,6 @@ Send your Robusta API key as a Bearer token. Generate keys in the Robusta UI und Authorization: Bearer -The key must be scoped to the ``account_id`` query parameter. Mismatches return ``401``. - Example Request --------------- @@ -79,22 +67,6 @@ Example Request --header 'Content-Type: application/json' \ --data-raw '{ "title": "High error rate", "severity": "high" }' -Response --------- - -A successful request returns ``200`` with the ID of the stored event: - -.. code-block:: json - - { "id": "8f1b...e21" } - -Errors: - -* ``400`` — missing or empty ``account_id``, ``origin``, or ``type``; invalid ``type`` value. -* ``401`` — invalid or out-of-scope API key. -* ``429`` — rate limit exceeded (300 requests per 5-minute window per account). -* ``503`` — transient storage failure; vendors should retry. - Integrations ------------ @@ -199,4 +171,3 @@ Other :class-card: sd-bg-light sd-bg-text-light :link: send-events/solarwinds :link-type: doc - diff --git a/docs/configuration/exporting/send-events/alertmanager.rst b/docs/configuration/exporting/send-events/alertmanager.rst index e695a3dcf..16ce2da29 100644 --- a/docs/configuration/exporting/send-events/alertmanager.rst +++ b/docs/configuration/exporting/send-events/alertmanager.rst @@ -43,4 +43,4 @@ Set ``continue: true`` if Robusta is not your only receiver, so alerts also reac Verify ------ -Open **Settings → Delivery Log** in the Robusta UI to see the request arrive, then check the timeline for the parsed alert. +The alert should appear on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/aws-cloudwatch.rst b/docs/configuration/exporting/send-events/aws-cloudwatch.rst index 49db98e71..80884f53f 100644 --- a/docs/configuration/exporting/send-events/aws-cloudwatch.rst +++ b/docs/configuration/exporting/send-events/aws-cloudwatch.rst @@ -61,4 +61,4 @@ Alternatively, if you already use **Amazon EventBridge → API destination**, po Verify ------ -Use the **Test alarm** action in CloudWatch. The event should appear in **Settings → Delivery Log** and on the Robusta timeline. +Use the **Test alarm** action in CloudWatch. The alert should appear on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/azure-monitor.rst b/docs/configuration/exporting/send-events/azure-monitor.rst index dea8498b0..897d900c5 100644 --- a/docs/configuration/exporting/send-events/azure-monitor.rst +++ b/docs/configuration/exporting/send-events/azure-monitor.rst @@ -35,4 +35,4 @@ Action Group webhook receivers do not allow custom headers, so authenticate via Verify ------ -Use the action group's **Test** option. The event should appear in **Settings → Delivery Log** and on the Robusta timeline. +Use the action group's **Test** option. The alert should appear on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/datadog.rst b/docs/configuration/exporting/send-events/datadog.rst index 5ef568485..c56114bcd 100644 --- a/docs/configuration/exporting/send-events/datadog.rst +++ b/docs/configuration/exporting/send-events/datadog.rst @@ -35,4 +35,4 @@ Configure Datadog Verify ------ -Trigger a test alert from a Datadog monitor. The event should appear in **Settings → Delivery Log** and on the Robusta timeline. +Trigger a test alert from a Datadog monitor. The alert should appear on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/dynatrace.rst b/docs/configuration/exporting/send-events/dynatrace.rst index a19624079..ddb8000b7 100644 --- a/docs/configuration/exporting/send-events/dynatrace.rst +++ b/docs/configuration/exporting/send-events/dynatrace.rst @@ -35,4 +35,4 @@ Configure Dynatrace Verify ------ -Use the **Send test notification** button. The event should appear in **Settings → Delivery Log** and on the Robusta timeline. +Use the **Send test notification** button. The alert should appear on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/gcp-monitoring.rst b/docs/configuration/exporting/send-events/gcp-monitoring.rst index d2b7ae5ec..a5c5f5d8f 100644 --- a/docs/configuration/exporting/send-events/gcp-monitoring.rst +++ b/docs/configuration/exporting/send-events/gcp-monitoring.rst @@ -27,8 +27,6 @@ GCP webhook notification channels do not support custom headers in the console, https://api.robusta.dev/webhooks?type=alert&origin=gcp&account_id=&token= -The ``token`` query parameter is accepted as an alternative to the ``Authorization`` header. - 1. In the GCP Console, go to **Monitoring → Alerting → Edit Notification Channels**. 2. Click **Add new** under **Webhooks**. 3. Set the **Endpoint URL** to the URL above and name it ``Robusta``. @@ -37,4 +35,4 @@ The ``token`` query parameter is accepted as an alternative to the ``Authorizati Verify ------ -Use **Send test notification** on the channel. The event should appear in **Settings → Delivery Log** and on the Robusta timeline. +Use **Send test notification** on the channel. The alert should appear on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/grafana.rst b/docs/configuration/exporting/send-events/grafana.rst index d9692385c..050676042 100644 --- a/docs/configuration/exporting/send-events/grafana.rst +++ b/docs/configuration/exporting/send-events/grafana.rst @@ -35,4 +35,4 @@ Configure Grafana Verify ------ -Use Grafana's **Test** button on the contact point. The event should appear in **Settings → Delivery Log** and on the Robusta timeline. +Use Grafana's **Test** button on the contact point. The alert should appear on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/nagios.rst b/docs/configuration/exporting/send-events/nagios.rst index 368bcbc45..68c1c1506 100644 --- a/docs/configuration/exporting/send-events/nagios.rst +++ b/docs/configuration/exporting/send-events/nagios.rst @@ -21,23 +21,21 @@ Webhook URL Configure Nagios ---------------- -Nagios delivers notifications by running shell commands. Define a command that POSTs the alert as JSON. - -Store the API key in ``resource.cfg`` rather than inlining it in ``commands.cfg`` so that it does not appear in command definitions, command-line process listings, or backups of the main configuration: +Store the API key in ``resource.cfg`` so it does not appear in command definitions or process listings: .. code-block:: # /etc/nagios/resource.cfg $USER20$= -Nagios resource macros are intentionally not exposed to the CGIs and can hold secrets. Tighten the file permissions so only the Nagios user can read it, and exclude ``resource.cfg`` from any unprotected backup or config-management bundle: +Restrict the file to the Nagios user: .. code-block:: bash chown root:nagios /etc/nagios/resource.cfg chmod 640 /etc/nagios/resource.cfg -Then reference ``$USER20$`` from the notification command: +Define a notification command that references ``$USER20$``: .. code-block:: @@ -73,4 +71,4 @@ Add ``robusta`` to the ``contact_groups`` you want to forward. Verify ------ -Acknowledge a test problem to fire a notification. The event should appear in **Settings → Delivery Log** and on the Robusta timeline. +Acknowledge a test problem to fire a notification. The alert should appear on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/newrelic.rst b/docs/configuration/exporting/send-events/newrelic.rst index 3ac1e29d2..6e1116d84 100644 --- a/docs/configuration/exporting/send-events/newrelic.rst +++ b/docs/configuration/exporting/send-events/newrelic.rst @@ -35,4 +35,4 @@ Configure New Relic Verify ------ -Trigger a test incident in New Relic. The event should appear in **Settings → Delivery Log** and on the Robusta timeline. +Trigger a test incident in New Relic. The alert should appear on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/opsgenie.rst b/docs/configuration/exporting/send-events/opsgenie.rst index 516de1e7d..3e55c5701 100644 --- a/docs/configuration/exporting/send-events/opsgenie.rst +++ b/docs/configuration/exporting/send-events/opsgenie.rst @@ -34,4 +34,4 @@ Configure Opsgenie Verify ------ -Create a test alert in Opsgenie. The event should appear in **Settings → Delivery Log** and on the Robusta timeline. +Create a test alert in Opsgenie. The alert should appear on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/pagerduty.rst b/docs/configuration/exporting/send-events/pagerduty.rst index 95edf2342..596c216c0 100644 --- a/docs/configuration/exporting/send-events/pagerduty.rst +++ b/docs/configuration/exporting/send-events/pagerduty.rst @@ -30,9 +30,9 @@ Configure PagerDuty Authorization: Bearer -5. Save. PagerDuty will sign the payload, but Robusta authenticates on the API key alone — the signature is ignored. +5. Save. Verify ------ -Trigger a test alert in PagerDuty. It should appear in **Settings → Delivery Log** and on the Robusta timeline. +Trigger a test alert in PagerDuty. It should appear on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/sentry.rst b/docs/configuration/exporting/send-events/sentry.rst index 2f11170f6..11a29c080 100644 --- a/docs/configuration/exporting/send-events/sentry.rst +++ b/docs/configuration/exporting/send-events/sentry.rst @@ -32,4 +32,4 @@ Sentry's webhook destinations support custom headers via Internal Integrations: Verify ------ -Resolve and re-open a Sentry issue, or trigger an issue alert rule that points at this integration. The event should appear in **Settings → Delivery Log** and on the Robusta timeline. +Resolve and re-open a Sentry issue, or trigger an issue alert rule that points at this integration. The alert should appear on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/solarwinds.rst b/docs/configuration/exporting/send-events/solarwinds.rst index cd2db4e56..551428b0b 100644 --- a/docs/configuration/exporting/send-events/solarwinds.rst +++ b/docs/configuration/exporting/send-events/solarwinds.rst @@ -32,4 +32,4 @@ Save the action and attach it to the alerts you want forwarded. Verify ------ -Manually trigger the alert from the **Alert Manager** UI. The event should appear in **Settings → Delivery Log** and on the Robusta timeline. +Manually trigger the alert from the **Alert Manager** UI. The alert should appear on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/splunk.rst b/docs/configuration/exporting/send-events/splunk.rst index e02a4fd07..af4af97cd 100644 --- a/docs/configuration/exporting/send-events/splunk.rst +++ b/docs/configuration/exporting/send-events/splunk.rst @@ -35,4 +35,4 @@ Splunk's built-in **Webhook** alert action does not let you set custom headers, Verify ------ -Trigger the saved search manually. The event should appear in **Settings → Delivery Log** and on the Robusta timeline. +Trigger the saved search manually. The alert should appear on the Robusta timeline. From a160789fe92f3b29cafe18b102c385aa74cef16e Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 13 May 2026 08:00:47 +0000 Subject: [PATCH 14/14] Restore Delivery Log verify steps, 401-scoping note, Response section --- .../exporting/send-events-api.rst | 18 ++++++++++++++++++ .../exporting/send-events/alertmanager.rst | 2 +- .../exporting/send-events/aws-cloudwatch.rst | 2 +- .../exporting/send-events/azure-monitor.rst | 2 +- .../exporting/send-events/datadog.rst | 2 +- .../exporting/send-events/dynatrace.rst | 2 +- .../exporting/send-events/gcp-monitoring.rst | 4 +++- .../exporting/send-events/grafana.rst | 2 +- .../exporting/send-events/nagios.rst | 2 +- .../exporting/send-events/newrelic.rst | 2 +- .../exporting/send-events/opsgenie.rst | 2 +- .../exporting/send-events/pagerduty.rst | 2 +- .../exporting/send-events/sentry.rst | 2 +- .../exporting/send-events/solarwinds.rst | 2 +- .../exporting/send-events/splunk.rst | 2 +- 15 files changed, 34 insertions(+), 14 deletions(-) diff --git a/docs/configuration/exporting/send-events-api.rst b/docs/configuration/exporting/send-events-api.rst index eebdd7322..4fe9b94dc 100644 --- a/docs/configuration/exporting/send-events-api.rst +++ b/docs/configuration/exporting/send-events-api.rst @@ -56,6 +56,8 @@ Send your Robusta API key as a Bearer token. Generate keys in the Robusta UI und Authorization: Bearer +The key must be scoped to the ``account_id`` query parameter. Mismatches return ``401``. + Example Request --------------- @@ -67,6 +69,22 @@ Example Request --header 'Content-Type: application/json' \ --data-raw '{ "title": "High error rate", "severity": "high" }' +Response +-------- + +A successful request returns ``200`` with the ID of the stored event: + +.. code-block:: json + + { "id": "8f1b...e21" } + +Errors: + +* ``400`` — missing or empty ``account_id``, ``origin``, or ``type``; invalid ``type`` value. +* ``401`` — invalid or out-of-scope API key. +* ``429`` — rate limit exceeded (300 requests per 5-minute window per account). +* ``503`` — transient storage failure; vendors should retry. + Integrations ------------ diff --git a/docs/configuration/exporting/send-events/alertmanager.rst b/docs/configuration/exporting/send-events/alertmanager.rst index 16ce2da29..e695a3dcf 100644 --- a/docs/configuration/exporting/send-events/alertmanager.rst +++ b/docs/configuration/exporting/send-events/alertmanager.rst @@ -43,4 +43,4 @@ Set ``continue: true`` if Robusta is not your only receiver, so alerts also reac Verify ------ -The alert should appear on the Robusta timeline. +Open **Settings → Delivery Log** in the Robusta UI to see the request arrive, then check the timeline for the parsed alert. diff --git a/docs/configuration/exporting/send-events/aws-cloudwatch.rst b/docs/configuration/exporting/send-events/aws-cloudwatch.rst index 80884f53f..49db98e71 100644 --- a/docs/configuration/exporting/send-events/aws-cloudwatch.rst +++ b/docs/configuration/exporting/send-events/aws-cloudwatch.rst @@ -61,4 +61,4 @@ Alternatively, if you already use **Amazon EventBridge → API destination**, po Verify ------ -Use the **Test alarm** action in CloudWatch. The alert should appear on the Robusta timeline. +Use the **Test alarm** action in CloudWatch. The event should appear in **Settings → Delivery Log** and on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/azure-monitor.rst b/docs/configuration/exporting/send-events/azure-monitor.rst index 897d900c5..dea8498b0 100644 --- a/docs/configuration/exporting/send-events/azure-monitor.rst +++ b/docs/configuration/exporting/send-events/azure-monitor.rst @@ -35,4 +35,4 @@ Action Group webhook receivers do not allow custom headers, so authenticate via Verify ------ -Use the action group's **Test** option. The alert should appear on the Robusta timeline. +Use the action group's **Test** option. The event should appear in **Settings → Delivery Log** and on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/datadog.rst b/docs/configuration/exporting/send-events/datadog.rst index c56114bcd..5ef568485 100644 --- a/docs/configuration/exporting/send-events/datadog.rst +++ b/docs/configuration/exporting/send-events/datadog.rst @@ -35,4 +35,4 @@ Configure Datadog Verify ------ -Trigger a test alert from a Datadog monitor. The alert should appear on the Robusta timeline. +Trigger a test alert from a Datadog monitor. The event should appear in **Settings → Delivery Log** and on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/dynatrace.rst b/docs/configuration/exporting/send-events/dynatrace.rst index ddb8000b7..a19624079 100644 --- a/docs/configuration/exporting/send-events/dynatrace.rst +++ b/docs/configuration/exporting/send-events/dynatrace.rst @@ -35,4 +35,4 @@ Configure Dynatrace Verify ------ -Use the **Send test notification** button. The alert should appear on the Robusta timeline. +Use the **Send test notification** button. The event should appear in **Settings → Delivery Log** and on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/gcp-monitoring.rst b/docs/configuration/exporting/send-events/gcp-monitoring.rst index a5c5f5d8f..d2b7ae5ec 100644 --- a/docs/configuration/exporting/send-events/gcp-monitoring.rst +++ b/docs/configuration/exporting/send-events/gcp-monitoring.rst @@ -27,6 +27,8 @@ GCP webhook notification channels do not support custom headers in the console, https://api.robusta.dev/webhooks?type=alert&origin=gcp&account_id=&token= +The ``token`` query parameter is accepted as an alternative to the ``Authorization`` header. + 1. In the GCP Console, go to **Monitoring → Alerting → Edit Notification Channels**. 2. Click **Add new** under **Webhooks**. 3. Set the **Endpoint URL** to the URL above and name it ``Robusta``. @@ -35,4 +37,4 @@ GCP webhook notification channels do not support custom headers in the console, Verify ------ -Use **Send test notification** on the channel. The alert should appear on the Robusta timeline. +Use **Send test notification** on the channel. The event should appear in **Settings → Delivery Log** and on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/grafana.rst b/docs/configuration/exporting/send-events/grafana.rst index 050676042..d9692385c 100644 --- a/docs/configuration/exporting/send-events/grafana.rst +++ b/docs/configuration/exporting/send-events/grafana.rst @@ -35,4 +35,4 @@ Configure Grafana Verify ------ -Use Grafana's **Test** button on the contact point. The alert should appear on the Robusta timeline. +Use Grafana's **Test** button on the contact point. The event should appear in **Settings → Delivery Log** and on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/nagios.rst b/docs/configuration/exporting/send-events/nagios.rst index 68c1c1506..a58a565ff 100644 --- a/docs/configuration/exporting/send-events/nagios.rst +++ b/docs/configuration/exporting/send-events/nagios.rst @@ -71,4 +71,4 @@ Add ``robusta`` to the ``contact_groups`` you want to forward. Verify ------ -Acknowledge a test problem to fire a notification. The alert should appear on the Robusta timeline. +Acknowledge a test problem to fire a notification. The event should appear in **Settings → Delivery Log** and on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/newrelic.rst b/docs/configuration/exporting/send-events/newrelic.rst index 6e1116d84..3ac1e29d2 100644 --- a/docs/configuration/exporting/send-events/newrelic.rst +++ b/docs/configuration/exporting/send-events/newrelic.rst @@ -35,4 +35,4 @@ Configure New Relic Verify ------ -Trigger a test incident in New Relic. The alert should appear on the Robusta timeline. +Trigger a test incident in New Relic. The event should appear in **Settings → Delivery Log** and on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/opsgenie.rst b/docs/configuration/exporting/send-events/opsgenie.rst index 3e55c5701..516de1e7d 100644 --- a/docs/configuration/exporting/send-events/opsgenie.rst +++ b/docs/configuration/exporting/send-events/opsgenie.rst @@ -34,4 +34,4 @@ Configure Opsgenie Verify ------ -Create a test alert in Opsgenie. The alert should appear on the Robusta timeline. +Create a test alert in Opsgenie. The event should appear in **Settings → Delivery Log** and on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/pagerduty.rst b/docs/configuration/exporting/send-events/pagerduty.rst index 596c216c0..466d31550 100644 --- a/docs/configuration/exporting/send-events/pagerduty.rst +++ b/docs/configuration/exporting/send-events/pagerduty.rst @@ -35,4 +35,4 @@ Configure PagerDuty Verify ------ -Trigger a test alert in PagerDuty. It should appear on the Robusta timeline. +Trigger a test alert in PagerDuty. It should appear in **Settings → Delivery Log** and on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/sentry.rst b/docs/configuration/exporting/send-events/sentry.rst index 11a29c080..2f11170f6 100644 --- a/docs/configuration/exporting/send-events/sentry.rst +++ b/docs/configuration/exporting/send-events/sentry.rst @@ -32,4 +32,4 @@ Sentry's webhook destinations support custom headers via Internal Integrations: Verify ------ -Resolve and re-open a Sentry issue, or trigger an issue alert rule that points at this integration. The alert should appear on the Robusta timeline. +Resolve and re-open a Sentry issue, or trigger an issue alert rule that points at this integration. The event should appear in **Settings → Delivery Log** and on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/solarwinds.rst b/docs/configuration/exporting/send-events/solarwinds.rst index 551428b0b..cd2db4e56 100644 --- a/docs/configuration/exporting/send-events/solarwinds.rst +++ b/docs/configuration/exporting/send-events/solarwinds.rst @@ -32,4 +32,4 @@ Save the action and attach it to the alerts you want forwarded. Verify ------ -Manually trigger the alert from the **Alert Manager** UI. The alert should appear on the Robusta timeline. +Manually trigger the alert from the **Alert Manager** UI. The event should appear in **Settings → Delivery Log** and on the Robusta timeline. diff --git a/docs/configuration/exporting/send-events/splunk.rst b/docs/configuration/exporting/send-events/splunk.rst index af4af97cd..e02a4fd07 100644 --- a/docs/configuration/exporting/send-events/splunk.rst +++ b/docs/configuration/exporting/send-events/splunk.rst @@ -35,4 +35,4 @@ Splunk's built-in **Webhook** alert action does not let you set custom headers, Verify ------ -Trigger the saved search manually. The alert should appear on the Robusta timeline. +Trigger the saved search manually. The event should appear in **Settings → Delivery Log** and on the Robusta timeline.