Teilen ü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.

    Shows the Incoming Webhook app under the Apps tab 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.

    Highlights the "Add to a team" button for the Incoming Webhook app.

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

    Shows the team selection prompt on the Incoming Webhook app configuration dialog in Teams. Type the "Team or Team channel name"

  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.

    Shows the team selection prompt on the Incoming Webhook app configuration dialog in Teams. Highlights the Team and the "Set up a connector" button

  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.

    Highlights the name property, optional image upload, and "Create" button in the Incoming Webhook options page.  

  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.

    Shows the new webhook URL on the Incoming Webhook options page after creation.

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

    Shows the notification in the Teams channel where you added the webhook connector.

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.

    Shows the "New pipeline" menu in the Azure Data Factory Studio.

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

    Shows the "Properties" panel.

    Shows the "Properties" panel hidden.

  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

    Shows the "Pipeline parameters".

    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

    Shows the "Pipeline variables".

  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.

    Shows the "Set variable" activity general tab.

  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": "Pipline 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)}"
                    }
                ]
            }
        ]
    }
    

    Shows the "Set variable" activity variables tab.

  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.

    Shows the "Web" activity general pane.

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

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

    Shows the "Web" activity settings pane.

  15. Jetzt können Sie Ihre NotifiyTeamsChannelPipeline-Pipeline ü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.

    Shows the "Validate, Debug, Publish" buttons to validate, debug, and then publish your pipeline.

Beispielverwendung

In diesem Beispielszenario erstellen wir eine Masterpipeline mit drei Pipeline ausführen-Aktivitäten. Die erste Pipeline ausführen-Aktivität ruft unsere ETL-Pipeline auf, und die verbleibenden beiden Pipeline ausführen-Aktivitäten rufen die Pipeline „NotifiyTeamsChannelPipeline“ auf, um relevante Erfolgs- oder Fehlerbenachrichtigungen an den Teams-Kanal zu senden, je nach Ausführungsstatus unserer 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.

    Shows the "Execute pipeline" activity general pane for "LoadDataPipeline" pipeline.

    Shows the "Execute pipeline" activity setting pane for "LoadDataPipeline" pipeline.

  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 Bereich „Einstellungen“ die zuvor erstellte NotifiyTeamsChannelPipeline-Pipeline 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.

    Shows the second "Execute pipeline" activity "OnSuccess Notification" general pane for "NotifiyTeamsChannelPipeline" pipeline.

    Shows the second "Execute pipeline" activity "OnSuccess Notification" setting pane for "NotifiyTeamsChannelPipeline" pipeline.

  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 Bereich „Einstellungen“ die NotifiyTeamsChannelPipeline-Pipeline 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.

    Shows the third "Execute pipeline" activity "OnFailure Notification" general pane for "NotifiyTeamsChannelPipeline" pipeline.

    Shows the third "Execute pipeline" activity "OnFailure Notification" settings pane for "NotifiyTeamsChannelPipeline" pipeline.

  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.

    Shows on success pipeline notifications in a Teams channel.

    Shows on failure pipeline notifications in a Teams channel.

  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