From 845254a09d03b00e861421e05ad273cda77103d2 Mon Sep 17 00:00:00 2001 From: Johann Miller Date: Fri, 1 Mar 2024 11:48:20 -0500 Subject: [PATCH] Teams alerts docs (#20111) Guide for alerting with MS Teams. This page will get a little messy as we add more integrations, may be up for a rework --- .../setting-up-alerts.mdx | 39 +++++++++++++++++- .../alerts/cloud-ms-teams-alert-creation.png | Bin 0 -> 25181 bytes 2 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 docs/next/public/images/dagster-cloud/alerts/cloud-ms-teams-alert-creation.png diff --git a/docs/content/dagster-cloud/managing-deployments/setting-up-alerts.mdx b/docs/content/dagster-cloud/managing-deployments/setting-up-alerts.mdx index 3a5d81bc83ecb..83ac0e596f555 100644 --- a/docs/content/dagster-cloud/managing-deployments/setting-up-alerts.mdx +++ b/docs/content/dagster-cloud/managing-deployments/setting-up-alerts.mdx @@ -8,6 +8,12 @@ title: "Setting up alerts in Dagster Cloud | Dagster Docs" In this guide, we'll walk you through configuring alerts in Dagster Cloud. +Dagster Cloud can send alerts to: + +- Email +- Slack +- Microsoft Teams + --- ## Understanding alert policies @@ -22,8 +28,6 @@ Alert policies define which events will trigger an alert, the conditions under w Alert policies are configured on a per-deployment basis. For example, asset alerts configured in a `prod` deployment are only applicable to assets in that deployment. -Currently, Slack and email notifications are supported. - --- ## Managing alert policies in Dagster Cloud @@ -96,6 +100,17 @@ Currently, Slack and email notifications are supported. height={514} /> + - **Microsoft Teams** - Send alerts to Teams incoming webhooks. + + First, follow the instructions in the [Microsoft Teams documentation](https://docs.microsoft.com/en-us/microsoftteams/platform/webhooks-and-connectors/how-to/add-incoming-webhook) to create an incoming webhook. Then, paste the url into the alert form. + + Microsoft Teams alert configured with a webhook url + 7. When finished, click **Save policy**. ### Editing alert policies @@ -216,6 +231,26 @@ alert_policies: - "nelson.bighetti@hooli.com" ``` +### Configuring a Microsoft Teams alert policy + +In this example, we'll configure a Teams alert for when a Hybrid Agent goes down. + +```yaml +alert_policies: + - name: "email-alert-policy" + description: "An alert policy to email company executives during job failure." + tags: + - key: "level" + value: "critical" + event_types: + - "AGENT_UNAVAILABLE" + notification_service: + microsoft_teams: + webhook_url: "https://yourdomain.webhook.office.com/..." +``` + +If the agent stops heartbeating, a message will be sent via the [incoming webhook URL](https://docs.microsoft.com/en-us/microsoftteams/platform/webhooks-and-connectors/how-to/add-incoming-webhook). + --- ### Compatible event types diff --git a/docs/next/public/images/dagster-cloud/alerts/cloud-ms-teams-alert-creation.png b/docs/next/public/images/dagster-cloud/alerts/cloud-ms-teams-alert-creation.png new file mode 100644 index 0000000000000000000000000000000000000000..8e238899532fa36bfaa58132abbb3e90b7c00eca GIT binary patch literal 25181 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 literal 0 HcmV?d00001