diff --git a/docs/configuration/exporting/robusta-pro-features.rst b/docs/configuration/exporting/robusta-pro-features.rst index 5aa584a57..ae1b3404f 100644 --- a/docs/configuration/exporting/robusta-pro-features.rst +++ b/docs/configuration/exporting/robusta-pro-features.rst @@ -17,8 +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:`Configuration Changes API `: Track configuration changes in your environment +* :doc:`Send Events API `: Send alerts, incidents, and changes from any monitoring source via a single webhook endpoint * :doc:`RBAC Configuration API `: Programmatically manage role-based access control configurations Getting Started diff --git a/docs/configuration/exporting/send-events-api.rst b/docs/configuration/exporting/send-events-api.rst new file mode 100644 index 000000000..4fe9b94dc --- /dev/null +++ b/docs/configuration/exporting/send-events-api.rst @@ -0,0 +1,191 @@ +Send Events API +================ + +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. + +.. toctree:: + :maxdepth: 1 + :hidden: + + send-events/alertmanager + send-events/aws-cloudwatch + send-events/azure-monitor + send-events/datadog + send-events/dynatrace + send-events/gcp-monitoring + send-events/grafana + send-events/nagios + send-events/newrelic + send-events/opsgenie + send-events/pagerduty + send-events/sentry + send-events/solarwinds + send-events/splunk + +Endpoint +-------- + +.. code-block:: + + POST https://api.robusta.dev/webhooks?type=alert&origin=&account_id= + +Query Parameters +---------------- + +.. list-table:: + :widths: 20 70 + :header-rows: 1 + + * - Parameter + - Description + * - ``type`` + - Must be ``alert``. + * - ``origin`` + - Identifies the monitoring product. Must be one of the supported origins listed under `Integrations`_ below. + * - ``account_id`` + - Your Robusta account ID, found in ``generated_values.yaml``. + +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?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" }' + +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:`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:`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:`server;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:`pulse;1em;` PagerDuty + :class-card: sd-bg-light sd-bg-text-light + :link: send-events/pagerduty + :link-type: doc + + .. grid-item-card:: :octicon:`pulse;1em;` Opsgenie + :class-card: sd-bg-light sd-bg-text-light + :link: send-events/opsgenie + :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 diff --git a/docs/configuration/exporting/send-events/alertmanager.rst b/docs/configuration/exporting/send-events/alertmanager.rst new file mode 100644 index 000000000..e695a3dcf --- /dev/null +++ b/docs/configuration/exporting/send-events/alertmanager.rst @@ -0,0 +1,46 @@ +AlertManager +============= + +Forward Prometheus alerts from AlertManager directly to 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, generated under **Settings → API Keys → New API Key**. + +Webhook URL +----------- + +.. code-block:: + + https://api.robusta.dev/webhooks?type=alert&origin=alertmanager&account_id= + +Configure AlertManager +---------------------- + +Add a webhook receiver to ``alertmanager.yml``: + +.. code-block:: yaml + + receivers: + - name: robusta + webhook_configs: + - url: 'https://api.robusta.dev/webhooks?type=alert&origin=alertmanager&account_id=' + 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/aws-cloudwatch.rst b/docs/configuration/exporting/send-events/aws-cloudwatch.rst new file mode 100644 index 000000000..49db98e71 --- /dev/null +++ b/docs/configuration/exporting/send-events/aws-cloudwatch.rst @@ -0,0 +1,64 @@ +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?type=alert&origin=awscloudwatch&account_id= + +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.error + import urllib.request + + URL = "https://api.robusta.dev/webhooks?type=alert&origin=awscloudwatch&account_id=" + TIMEOUT_SECONDS = 5 + + 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']}", + }, + ) + 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. + +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..dea8498b0 --- /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?type=alert&origin=azure&account_id= + +Configure Azure +--------------- + +Action Group webhook receivers do not allow custom headers, so authenticate via the URL: + +.. code-block:: + + 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. +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..5ef568485 --- /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?type=alert&origin=datadog&account_id= + +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. +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..a19624079 --- /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?type=alert&origin=dynatrace&account_id= + +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. +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..d2b7ae5ec --- /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?type=alert&origin=gcp&account_id= + +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?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``. +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/grafana.rst b/docs/configuration/exporting/send-events/grafana.rst new file mode 100644 index 000000000..d9692385c --- /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?type=alert&origin=grafana&account_id= + +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/nagios.rst b/docs/configuration/exporting/send-events/nagios.rst new file mode 100644 index 000000000..a58a565ff --- /dev/null +++ b/docs/configuration/exporting/send-events/nagios.rst @@ -0,0 +1,74 @@ +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?type=alert&origin=nagios&account_id= + +Configure Nagios +---------------- + +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$= + +Restrict the file to the Nagios user: + +.. code-block:: bash + + chown root:nagios /etc/nagios/resource.cfg + chmod 640 /etc/nagios/resource.cfg + +Define a notification command that references ``$USER20$``: + +.. code-block:: + + define command { + command_name notify-robusta-service + command_line /usr/bin/curl -sS -X POST \ + -H 'Authorization: Bearer $USER20$' \ + -H 'Content-Type: application/json' \ + --data '{ + "host": "$HOSTNAME$", + "service": "$SERVICEDESC$", + "state": "$SERVICESTATE$", + "type": "$NOTIFICATIONTYPE$", + "output": "$SERVICEOUTPUT$" + }' \ + '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: + +.. 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..3ac1e29d2 --- /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?type=alert&origin=newrelic&account_id= + +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. +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..516de1e7d --- /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?type=alert&origin=opsgenie&account_id= + +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..466d31550 --- /dev/null +++ b/docs/configuration/exporting/send-events/pagerduty.rst @@ -0,0 +1,38 @@ +PagerDuty +========== + +Forward PagerDuty alerts to Robusta via PagerDuty AIOps Event Orchestration. + +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**. +* An AIOps-enabled PagerDuty plan with admin access to Event Orchestration. + +Webhook URL +----------- + +.. code-block:: + + https://api.robusta.dev/webhooks?type=alert&origin=pagerduty&account_id= + +Configure PagerDuty +------------------- + +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 + +5. Save. + +Verify +------ + +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 new file mode 100644 index 000000000..2f11170f6 --- /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?type=alert&origin=sentry&account_id= + +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..cd2db4e56 --- /dev/null +++ b/docs/configuration/exporting/send-events/solarwinds.rst @@ -0,0 +1,35 @@ +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?type=alert&origin=solarwinds&account_id= + +Configure SolarWinds +-------------------- + +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=" + +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..e02a4fd07 --- /dev/null +++ b/docs/configuration/exporting/send-events/splunk.rst @@ -0,0 +1,38 @@ +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?type=alert&origin=splunk&account_id= + +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 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= + +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 +------ + +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..0173cbf02 100644 --- a/docs/configuration/index.rst +++ b/docs/configuration/index.rst @@ -9,6 +9,8 @@ Connect your monitoring system to Robusta, to enrich alerts and apply automation :maxdepth: 1 :hidden: + exporting/send-alerts-api + exporting/configuration-changes-api alertmanager-integration/outofcluster-prometheus alertmanager-integration/alert-manager alertmanager-integration/eks-managed-prometheus @@ -29,6 +31,26 @@ Connect your monitoring system to Robusta, to enrich alerts and apply automation 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 -------------------------- diff --git a/docs/index.rst b/docs/index.rst index 0e852fe7c..7ecbafbfa 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -23,8 +23,7 @@ Overview Holmes Chat API - configuration/exporting/send-alerts-api - configuration/exporting/configuration-changes-api + configuration/exporting/send-events-api configuration/exporting/alert-export-api configuration/exporting/alert-statistics-api configuration/exporting/rbac-api