Freigeben über


Senden von Benachrichtigungen von einer Azure Data Factory- oder Synapse Analytics-Pipeline an einen Microsoft Teams-Kanal

Es ist häufig erforderlich, während oder nach der Ausführung einer Pipeline Benachrichtigungen zu senden. Benachrichtigungen ermöglichen proaktive Warnungen und verringern die Notwendigkeit einer reaktiven Überwachung zur Ermittlung von Problemen.  Informieren Sie sich auch über das Senden von E-Mail-Benachrichtigungen mithilfe von Logik-Apps, die von einer Data Factory- oder Synapse-Pipeline aufgerufen werden können. Viele Unternehmen verwenden zunehmend Microsoft Teams für die Zusammenarbeit. In diesem Artikel erfahren Sie, wie Sie Benachrichtigungen von Pipelinewarnungen in Microsoft Teams konfigurieren. 

Voraussetzungen

Bevor Sie Benachrichtigungen von Ihren Pipelines an Teams senden können, müssen Sie einen Incoming Webhook (eingehender Webhook) für Ihren Teams-Kanal erstellen. Wenn Sie zu diesem Zweck einen neuen Teams-Kanal erstellen müssen, lesen Sie die Teams-Dokumentation.  

  1. Öffnen Sie Microsoft Teams, und wechseln Sie zur Registerkarte „Apps“. Suchen Sie nach „Incoming Webhook“, und wählen Sie den Connector für eingehende Webhooks aus.

    Abbildung der Incoming Webhook-App auf der Registerkarte „Apps“ in Teams

  2. Wählen Sie die Schaltfläche „Zu einem Team hinzufügen“ aus, um den Connector der Site für den Team- oder Teamkanalname hinzuzufügen, an den Sie Benachrichtigungen senden möchten.

    Hervorgehobene Schaltfläche für „Zu einem Team hinzufügen“ für die eingehende Webhook-App

  3. Geben Sie den Team- oder Teamkanalnamen ein, an den Sie die Benachrichtigungen senden möchten, oder wählen Sie diesen aus.

    Abbildung der Aufforderung zur Teamauswahl im Konfigurationsdialogfeld für die eingehende Webhook-App in Teams Geben Sie den „Team- oder Teamkanalnamen“ ein.

  4. Wählen Sie die Schaltfläche „Connector einrichten“ aus, um den eingehenden Webhook für den Team- oder Teamkanalnamen einzurichten, den Sie im vorherigen Schritt ausgewählt haben.

    Abbildung der Aufforderung zur Teamauswahl im Konfigurationsdialogfeld für die eingehende Webhook-App in Teams Hervorgehoben sind das Team und die Schaltfläche „Connector einrichten“.

  5. Benennen Sie den Webhook nach Bedarf, und laden Sie optional ein Symbol zur Identifikation Ihrer Nachrichten hoch. Wählen Sie anschließend die Schaltfläche „Erstellen“ aus, um den eingehenden Webhook zu erstellen.

    Hervorgehobene name-Eigenschaft, optionaler Bildupload und Schaltfläche „Erstellen“ auf der Optionsseite für den eingehenden Webhook  

  6. Kopieren Sie die Webhook-URL, die bei der Erstellung generiert wird, und speichern Sie siezur späteren Verwendung in der Pipeline. Klicken Sie anschließend auf die Schaltfläche „Fertig“ aus, um die Einrichtung abzuschließen.

    Abbildung der neuen Webhook-URL auf der Optionsseite für den eingehenden Webhook nach der Erstellung

  7. Die Benachrichtigung wird in dem Kanal angezeigt, in dem Sie den Webhookconnector hinzufügen.

    Abbildung der Benachrichtigung in dem Kanal, in dem Sie den Webhookconnector hinzugefügt haben

Schritte zum Senden von Benachrichtigungen an einen Teams-Kanal aus einer Pipeline:

  1. Wählen Sie im linken Bereich die Registerkarte Autor aus.

  2. Klicken Sie auf die Schaltfläche „+“ (Plus) und dann auf Neue Pipeline.

    Zeigt das Menü „Neue Pipeline“ in Azure Data Factory Studio

  3. Geben Sie im Bereich „Eigenschaften“ unter „Allgemein“ NotifyTeamsChannelPipeline als Name an. Reduzieren Sie dann den Bereich, indem Sie in der oberen rechten Ecke auf das Symbol Eigenschaften klicken.

    Zeigt den Bereich „Eigenschaften“

    Zeigt den ausgeblendeten Bereich „Eigenschaften“

  4. Wählen Sie im Bereich „Konfigurationen“ die Option Parameter aus, und wählen Sie dann die Schaltfläche + Neu aus, um die folgenden Parameter für Ihre Pipeline zu definieren.

    Name Type Standardwert
    Abonnement String Specify subscription id for the pipeline
    resourceGroup String Specify resource group name for the pipeline
    runId String @activity('Specify name of the calling pipeline').output['pipelineRunId']
    name String @activity('Specify name of the calling pipeline').output['pipelineName']
    triggerTime String @activity('Specify name of the calling pipeline').ExecutionStartTime
    status String @activity('Specify name of the calling pipeline').Status
    message String @activity('Specify name of the calling pipeline').Error['message']
    executionEndTime String @activity('Specify name of the calling pipeline').ExecutionEndTime
    runDuration String @activity('Specify name of the calling pipeline').Duration
    teamWebhookUrl String Specify Team Webhook URL

    Zeigt die „Pipelineparameter“

    Hinweis

    Diese Parameter werden zum Erstellen der Überwachungs-URL verwendet. Angenommen, Sie stellen kein gültiges Abonnement und keine Ressourcengruppe bereit (für die Data Factory, zu der die Pipelines gehören). In diesem Fall enthält die Benachrichtigung keine gültige Pipelineüberwachungs-URL, die Nachrichten funktionieren aber trotzdem. Darüber hinaus verhindert das Hinzufügen dieser Parameter, dass diese Werte immer von einer anderen Pipeline übergeben werden müssen. Wenn Sie beabsichtigen, diese Werte mithilfe eines metadatengesteuerten Ansatzes festzulegen, sollten Sie sie entsprechend anpassen.

    Tipp

    Es wird empfohlen, die Abonnement-ID, die Ressourcengruppe und die Teams-Webhook-URL (siehe Voraussetzungen) der aktuellen Data Factory als Standardwerte für die jeweiligen Parameter hinzuzufügen.

  5. Wählen Sie im Bereich „Konfigurationen“ die Option Variablen aus, und wählen Sie dann die Schaltfläche + Neu aus, um die folgenden Parameter für Ihre Pipeline zu definieren.

    Name Type Standardwert
    messageCard String

    Zeigt die „Pipelinevariablen“

  6. Suchen Sie im Bereich mit den Pipelineaktivitäten nach Variable festlegen, und ziehen Sie eine Aktivität des Typs „Variable festlegen“ in den Pipelinebereich.

  7. Wählen Sie auf dem Canvas die Aktivität Variable festlegen aus (wenn sie noch nicht ausgewählt wurde), und wählen Sie anschließend die Registerkarte „Allgemein“ aus, um die Details zu bearbeiten.

  8. Geben Sie auf der Registerkarte „Allgemein“ JSON-Schema festlegen für Name der Aktivität Variable festlegen an.

    Zeigt die Registerkarte „Allgemein“ der Aktivität „Variable festlegen“

  9. Wählen Sie auf der Registerkarte „Variablen“ die Variable messageCard für die Eigenschaft Name aus, und geben Sie den folgenden JSON-Code für die zugehörige Eigenschaft Wert ein:

    {
        "@type": "MessageCard",
        "@context": "http://schema.org/extensions",
        "themeColor": "0076D7",
        "summary": "Pipeline status alert message​​​​",
        "sections": [
            {
                "activityTitle": "Pipeline execution alert​​​​",
                "facts": [
                    {
                        "name": "Subscription Id:",
                        "value": "@{pipeline().parameters.subscription}"
                    },
                    {
                        "name": "Resource Group:",
                        "value": "@{pipeline().parameters.resourceGroup}"
                    },
                    {
                        "name": "Data Factory Name:",
                        "value": "@{pipeline().DataFactory}"
                    },
                    {
                        "name": "Pipeline RunId:",
                        "value": "@{pipeline().parameters.runId}"
                    },
                    {
                        "name": "Pipeline Name:",
                        "value": "@{pipeline().Pipeline}"
                    },
                    {
                        "name": "Pipeline Status:",
                        "value": "@{pipeline().parameters.status}"
                    },
                    {
                        "name": "Execution Start Time (UTC):",
                        "value": "@{pipeline().parameters.triggerTime}"
                    },
                    {
                        "name": "Execution Finish Time (UTC):",
                        "value": "@{pipeline().parameters.executionEndTime}"
                    },
                    {
                        "name": "Execution Duration (s):",
                        "value": "@{pipeline().parameters.runDuration}"
                    },
                    {
                        "name": "Message:",
                        "value": "@{pipeline().parameters.message}"
                    },
                    {
                        "name": "Notification Time (UTC):",
                        "value": "@{utcnow()}"
                    }
                ],
                "markdown": true
            }
        ],
        "potentialAction": [
            {
                "@type": "OpenUri",
                "name": "View pipeline run",
                "targets": [
                    {
                        "os": "default",
                        "uri": "@{concat('https://synapse.azure.com/monitoring/pipelineruns/',pipeline().parameters.runId,'?factory=/subscriptions/',pipeline().parameters.subscription,'/resourceGroups/',pipeline().parameters.resourceGroup,'/providers/Microsoft.DataFactory/factories/',pipeline().DataFactory)}"
                    }
                ]
            }
        ]
    }
    

    Zeigt die Registerkarte „Variablen“ der Aktivität „Variable festlegen“

  10. Suchen Sie im Bereich mit den Pipelineaktivitäten nach „Web“, und ziehen Sie eine Webaktivität in den Pipelinebereich.

  11. Erstellen Sie eine Abhängigkeitsbedingung für die Webaktivität, sodass sie nur ausgeführt wird, wenn die Aktivität Variable festlegen erfolgreich war. Um diese Abhängigkeit zu erstellen, wählen Sie den grünen Ziehpunkt auf der rechten Seite der Aktivität Variable festlegen aus, ziehen Sie daran, und verbinden Sie ihn mit der Webaktivität.

  12. Wählen Sie auf dem Canvas die neue Webaktivität aus (wenn sie noch nicht ausgewählt wurde), und wählen Sie anschließend die Registerkarte „Allgemein“ aus, um die Details zu bearbeiten.

  13. Geben Sie im Bereich "Allgemein" Teams Webhook-URL aufrufen unter Name der Webaktivität an.

    Zeigt den Bereich „Allgemein“ der Aktivität „Web“

  14. Legen Sie im Bereich „Einstellungen“ die folgenden Eigenschaften fest:

    Eigenschaft value
    URL @pipeline().parameters.teamWebhookUrl
    Methode POST
    Text @json(variables('messageCard'))

    Zeigt den Einstellungsbereich der Aktivität „Web“

  15. Jetzt können Sie Ihre Pipeline NotifyTeamsChannelPipeline überprüfen, debuggen und veröffentlichen.

    • Klicken Sie auf der Symbolleiste auf Überprüfen, um die Pipeline zu überprüfen.
    • Klicken Sie auf der Symbolleiste auf Debuggen, um die Pipeline zu debuggen. Der Status der Pipelineausführung wird unten im Fenster auf der Registerkarte „Ausgabe“ angezeigt.
    • Sobald die Pipeline erfolgreich ausgeführt werden kann, klicken Sie in der oberen Symbolleiste auf Alle veröffentlichen. Mit dieser Aktion werden erstellte Entitäten in Data Factory veröffentlicht. Warten Sie, bis die Meldung Erfolgreich veröffentlicht angezeigt wird.

    Zeigt die Schaltflächen „Überprüfen, Debuggen, Veröffentlichen“ zum Überprüfen, Debuggen und anschließenden Veröffentlichen Ihrer Pipeline

Beispielverwendung

In diesem Beispielszenario erstellen wir eine Masterpipeline mit drei Pipeline ausführen-Aktivitäten. Die erste Aktivität Pipeline ausführen ruft die ETL-Pipeline auf, und die verbleibenden beiden Aktivitäten Pipeline ausführen rufen die Pipeline „NotifyTeamsChannelPipeline“ auf, um relevante Erfolgs- oder Fehlerbenachrichtigungen an den Teams-Kanal zu senden, je nach Ausführungsstatus der ETL-Pipeline.

  1. Wählen Sie in Data Factory im linken Bereich die Registerkarte Autor bzw. in Synapse Studio im linken Bereich die Registerkarte Integrieren aus. Wählen Sie als Nächstes die Schaltfläche „+ (Plus)“ und dann Pipeline aus, um eine neue Pipeline zu erstellen.

  2. Geben Sie im Bereich „Allgemein“ unter „Eigenschaften“ MasterPipeline als Name an. Reduzieren Sie dann den Bereich, indem Sie in der oberen rechten Ecke auf das Symbol Eigenschaften klicken.

  3. Suchen Sie im Bereich mit den Pipelineaktivitäten nach Pipeline, und ziehen Sie drei Execute Pipeline-Aktivitäten auf die Pipelinecanvas.

  4. Wählen Sie auf der Canvas die Execute Pipeline-Aktivität aus (sofern noch nicht geschehen), und klicken Sie auf die zugehörige Registerkarte „Allgemein“, um ihre Details zu bearbeiten.

    • Für die Eigenschaft Name der Aktivität Execute Pipeline-Aktivität wird empfohlen, den Namen Ihrer aufgerufenen ETL-Pipeline zu verwenden, für die Sie Benachrichtigungen senden möchten. Beispielsweise haben wir LoadDataPipeline für den Namen der Execute Pipeline-Aktivität verwendet, da es sich um den Namen der aufgerufenen Pipeline handeln soll.
    • Wählen Sie im Bereich „Einstellungen“ eine vorhandene Pipeline aus, oder erstellen Sie eine neue, indem Sie die Schaltfläche + Neu für die Eigenschaft Aufgerufene Pipeline verwenden. In unserem Fall haben wir beispielsweise LoadDataPipeline für die Eigenschaft „Aufgerufene Pipeline“ ausgewählt. Wählen Sie weitere Optionen aus, und konfigurieren Sie alle Parameter für die Pipeline, die zur Vervollständigung Ihrer Konfiguration benötigt werden.

    Zeigt den Bereich „Allgemein“ der Aktivität „Pipeline ausführen“ für die Pipeline „LoadDataPipeline“

    Zeigt den Einstellungsbereich der Aktivität „Pipeline ausführen“ für die Pipeline „LoadDataPipeline“

  5. Wählen Sie auf der Canvas die zweite Execute Pipeline-Aktivität und den zugehörigen Bereich „Allgemein“ aus, um die Details zu bearbeiten.

    • Geben Sie als Name der Execute Pipeline-Aktivität die Bezeichnung OnSuccess-Benachrichtigung ein.

    • Wählen Sie im Einstellungsbereich die zuvor erstellte Pipeline NotifyTeamsChannelPipeline für die Eigenschaft Aufgerufene Pipeline aus. Passen Sie die Parameter nach Bedarf an den Aktivitätstyp an. Beispielsweise habe ich die Parameter wie folgt angepasst:

      Name Wert
      Abonnement 11111111-0000-aaaa-bbbb-0000000000
      resourceGroup contosorg
      runId @activity('LoadDataPipeline').output['pipelineRunId']
      name @activity('LoadDataPipeline').output['pipelineName']
      triggerTime @activity('LoadDataPipeline').ExecutionStartTime
      status @activity('LoadDataPipeline').Status
      message Pipeline - LoadDataPipeline ran with success.
      executionEndTime @activity('LoadDataPipeline').ExecutionEndTime
      runDuration @activity('LoadDataPipeline').Duration
      teamWebhookUrl https://microsoft.webhook.office.com/webhookb2/1234abcd-1x11-2ff1-ab2c-1234d0699a9e@72f988bf-32b1-41af-91ab-2d7cd011db47/IncomingWebhook/8212f66ad80040ab83cf68b554d9232a/17d524d0-ed5c-44ed-98a0-35c12dd89a6d
    • Erstellen Sie eine Abhängigkeitsbedingung für die zweite Execute Pipeline-Aktivität, sodass sie nur ausgeführt wird, wenn die erste Execute Pipeline-Aktivität erfolgreich ist. Um diese Abhängigkeit zu erstellen, wählen Sie den grünen Ziehpunkt auf der rechten Seite der ersten Execute Pipeline-Aktivität aus, ziehen Sie daran, und verbinden Sie ihn mit der zweiten Execute Pipeline-Aktivität.

    Zeigt den Bereich „Allgemein“ für „OnSuccess-Benachrichtigung“ der zweiten Aktivität „Pipeline ausführen“ und den Bereich „Allgemein“ für die Pipeline „NotifyTeamsChannelPipeline“

    Zeigt den Einstellungsbereich für „OnSuccess-Benachrichtigung“ der zweiten Aktivität „Pipeline ausführen“ und den Bereich „Allgemein“ für die Pipeline „NotifyTeamsChannelPipeline“

  6. Wählen Sie auf der Canvas die dritte Execute Pipeline-Aktivität und den zugehörigen Bereich „Allgemein“ aus, um die Details zu bearbeiten.

    • Geben Sie als Name der Execute Pipeline-Aktivität die Bezeichnung OnFailure-Benachrichtigung ein.

    • Wählen Sie im Einstellungsbereich die Pipeline NotifyTeamsChannelPipeline für die Eigenschaft Aufgerufene Pipeline aus. Passen Sie die Parameter nach Bedarf an den Aktivitätstyp an. Beispielsweise habe ich die Parameter dieses Mal wie folgt angepasst:

      Name Wert
      Abonnement 11111111-0000-aaaa-bbbb-0000000000
      resourceGroup contosorg
      runId @activity('LoadDataPipeline').output['pipelineRunId']
      name @activity('LoadDataPipeline').output['pipelineName']
      triggerTime @activity('LoadDataPipeline').ExecutionStartTime
      status @activity('LoadDataPipeline').Status
      message @activity('LoadDataPipeline').Error['message']
      executionEndTime @activity('LoadDataPipeline').ExecutionEndTime
      runDuration @activity('LoadDataPipeline').Duration
      teamWebhookUrl https://microsoft.webhook.office.com/webhookb2/1234abcd-1x11-2ff1-ab2c-1234d0699a9e@72f988bf-32b1-41af-91ab-2d7cd011db47/IncomingWebhook/8212f66ad80040ab83cf68b554d9232a/17d524d0-ed5c-44ed-98a0-35c12dd89a6d
    • Erstellen Sie eine Abhängigkeitsbedingung für die dritte Execute Pipeline-Aktivität, sodass sie nur ausgeführt wird, wenn die erste Execute Pipeline-Aktivität fehlschlägt. Um diese Abhängigkeit zu erstellen, wählen Sie den roten Ziehpunkt auf der rechten Seite der ersten Execute Pipeline-Aktivität aus, ziehen Sie daran, und verbinden Sie ihn mit der dritten Execute Pipeline-Aktivität.

    • Überprüfen, debuggen und veröffentlichen Sie ihre MasterPipeline-Pipeline.

    Zeigt den Bereich „Allgemein“ für „OnFailure-Benachrichtigung“ der dritten Aktivität „Pipeline ausführen“ und den Bereich „Allgemein“ für die Pipeline „NotifyTeamsChannelPipeline“

    Zeigt den Einstellungsbereich für „OnFailure-Benachrichtigung“ der dritten Aktivität „Pipeline ausführen“ und den Bereich „Allgemein“ für die Pipeline „NotifyTeamsChannelPipeline“

  7. Führen Sie die Pipeline aus, um Benachrichtigungen in Teams zu empfangen. Im Folgenden finden Sie Beispielbenachrichtigungen, wenn meine Pipeline erfolgreich ausgeführt wurde bzw. wenn ein dabei ein Fehler aufgetreten ist.

    Zeigt die Benachrichtigungen bei erfolgreicher Pipelineausführung in einem Teams-Kanal.

    Zeigt die Benachrichtigungen bei nicht erfolgreicher Pipelineausführung in einem Teams-Kanal.

  8. Wählen Sie die Schaltfläche „Pipelineausführung anzeigen“ aus, um die Pipelineausführung anzuzeigen.

Hinzufügen dynamischer Nachrichten mit Systemvariablen und Ausdrücken

Mithilfe von Systemvariablen und Ausdrücken können Sie Ihre Nachrichten dynamisch gestalten. Beispiel:

  • @activity("CopyData").output.errors[0].Message

  • @activity("DataFlow").error.Message

Die oben genannten Ausdrücke geben die relevanten Fehlermeldungen zu einem Fehler zurück, die dann als Benachrichtigung an einen Teams-Kanal gesendet werden können. Weitere Informationen zu diesem Thema finden Sie im Artikel Ausgabeeigenschaften der Copy-Aktivität.

Außerdem wird empfohlen, das von Microsoft Teams unterstützte Schema für die Benachrichtigungsnutzdaten zu überprüfen und die obige Vorlage weiter an Ihre Anforderungen anzupassen.

Senden von E-Mails aus einer Pipeline