Wysyłanie powiadomień do kanału usługi Microsoft Teams z potoku usługi Azure Data Factory lub Synapse Analytics
Często konieczne jest wysyłanie powiadomień podczas lub po wykonaniu potoku. Powiadomienie zapewnia proaktywne alerty i zmniejsza potrzebę reaktywnego monitorowania w celu wykrycia problemów. Dowiesz się, jak wysyłać powiadomienia e-mail przy użyciu aplikacji logiki, które mogą wywoływać potok fabryki danych lub usługi Synapse. Wiele przedsiębiorstw coraz częściej używa usługi Microsoft Teams do współpracy. W tym artykule pokazano, jak skonfigurować powiadomienia z alertów potoku do usługi Microsoft Teams.
Wymagania wstępne
Aby można było wysyłać powiadomienia do usługi Teams z potoków, musisz utworzyć przychodzący element webhook dla kanału usługi Teams. Jeśli chcesz utworzyć nowy kanał usługi Teams w tym celu, zapoznaj się z dokumentacją usługi Teams.
Otwórz aplikację Microsoft Teams i przejdź do karty Aplikacje. Wyszukaj ciąg "Przychodzący element webhook" i wybierz łącznik przychodzącego elementu webhook.
Wybierz przycisk "Dodaj do zespołu", aby dodać łącznik do witryny Nazwy kanału zespołu lub zespołu, w której chcesz wysyłać powiadomienia.
Wpisz lub wybierz nazwę kanału Team lub Team, w którym chcesz wysłać powiadomienia.
Wybierz przycisk "Skonfiguruj łącznik", aby skonfigurować element webhook przychodzący dla nazwy kanału zespołu lub zespołu wybranej w poprzednim kroku.
Nazwij element webhook odpowiednio i opcjonalnie przekaż ikonę, aby zidentyfikować wiadomości. Następnie wybierz przycisk "Utwórz", aby utworzyć przychodzący element webhook.
Skopiuj adres URL elementu webhook wygenerowany podczas tworzenia i zapisz go do późniejszego użycia w potoku. Następnie wybierz przycisk "Gotowe", aby ukończyć konfigurację.
Powiadomienie jest widoczne w kanale, w którym dodajesz łącznik elementu webhook.
Kroki wysyłania powiadomień w kanale usługi Teams z potoku:
Wybierz kartę Autor w okienku po lewej stronie.
Wybierz przycisk + (plus), a następnie wybierz pozycję Nowy potok.
W okienku "Właściwości" w obszarze "Ogólne" określ wartość NotifyTeamsChannelPipeline w polu Nazwa. Następnie zwiń panel, klikając ikonę Właściwości w prawym górnym rogu.
W okienku "Konfiguracje" wybierz pozycję Parametry, a następnie wybierz przycisk + Nowy zdefiniuj następujące parametry dla potoku.
Nazwisko Type Wartość domyślna subskrypcja 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
wiadomość 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
Uwaga
Te parametry służą do konstruowania adresu URL monitorowania. Załóżmy, że nie udostępniasz prawidłowej subskrypcji i grupy zasobów (tej samej fabryki danych, do której należą potoki). W takim przypadku powiadomienie nie będzie zawierać prawidłowego adresu URL monitorowania potoku, ale komunikaty będą nadal działać. Ponadto dodanie tych parametrów pomaga zapobiec konieczności zawsze przekazywania tych wartości z innego potoku. Jeśli zamierzasz kontrolować te wartości za pomocą podejścia opartego na metadanych, należy odpowiednio je zmodyfikować.
Napiwek
Zalecamy dodanie bieżącego identyfikatora subskrypcji usługi Data Factory, grupy zasobów i adresu URL elementu webhook usługi Teams (zapoznaj się z wymaganiami wstępnymi) dla wartości domyślnej odpowiednich parametrów.
W okienku "Konfiguracje" wybierz pozycję Zmienne, a następnie wybierz przycisk + Nowy zdefiniuj następujące zmienne dla potoku.
Nazwisko Type Wartość domyślna messageCard String
Wyszukaj ciąg "Ustaw zmienną" w okienku "Działania" potoku i przeciągnij działanie Ustaw zmienną na kanwę potoku.
Wybierz działanie Ustaw zmienną na kanwie, jeśli nie zostało jeszcze wybrane, a jej karta "Ogólne", aby edytować jego szczegóły.
Na karcie "Ogólne" określ wartość Ustaw schemat JSON dla pozycji Nazwa działania Ustaw zmienną .
Na karcie "Zmienne" wybierz zmienną messageCard dla właściwości Name i wprowadź następujący kod JSON dla właściwości Value :
{ "@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)}" } ] } ] }
Wyszukaj ciąg "Web" w okienku "Działania" potoku i przeciągnij działanie internetowe na kanwę potoku.
Utwórz warunek zależności dla działania sieci Web , aby był uruchamiany tylko wtedy, gdy działanie Ustaw zmienną powiedzie się. Aby utworzyć tę zależność, wybierz zielony uchwyt po prawej stronie działania Ustaw zmienną , przeciągnij ją i połącz z działaniem sieci Web .
Wybierz nowe działanie sieci Web na kanwie, jeśli nie zostało jeszcze wybrane, a jej karta "Ogólne", aby edytować jego szczegóły.
W okienku "Ogólne" określ wartość Invoke Teams Webhook Url (Wywołaj adres URL elementu webhook usługi Teams) jako Nazwę działania internetowego.
W okienku "Ustawienia" ustaw następujące właściwości w następujący sposób:
Właściwości wartość URL @pipeline().parameters.teamWebhookUrl
Method POST
Treść @json(variables('messageCard'))
Wszystko gotowe do zweryfikowania, debugowania, a następnie opublikowania potoku NotifyTeamsChannelPipeline .
- Wybierz na pasku narzędzi pozycję Weryfikuj, aby zweryfikować potok.
- Aby debugować potok, wybierz na pasku narzędzi pozycję Debuguj. Stan uruchomienia potoku można zobaczyć na karcie "Dane wyjściowe" w dolnej części okna.
- Po pomyślnym uruchomieniu potoku na górnym pasku narzędzi wybierz pozycję Opublikuj wszystko. Ta akcja publikuje jednostki utworzone w usłudze Data Factory. Poczekaj na wyświetlenie komunikatu Pomyślnie opublikowano.
Przykładowe zastosowanie
W tym przykładowym scenariuszu użycia utworzymy potok główny z trzema działaniami Wykonywania potoku . Pierwsze działanie Execute Pipeline (Wykonywanie potoku) spowoduje wywołanie potoku ETL, a pozostałe dwa działania potoku Execute Pipeline wywoła potok "NotifyTeamsChannelPipeline", aby wysłać odpowiednie powiadomienia o powodzeniu lub niepowodzeniu do kanału usługi Teams w zależności od stanu wykonania potoku ETL.
Wybierz kartę Tworzenie w okienku po lewej stronie w usłudze Data Factory lub kartę Integracja w okienku po lewej stronie w programie Synapse Studio. Następnie wybierz przycisk + (plus), a następnie wybierz pozycję Potok , aby utworzyć nowy potok.
W panelu "Ogólne" w obszarze Właściwości określ wartość MasterPipeline w polu Nazwa. Następnie zwiń panel, klikając ikonę Właściwości w prawym górnym rogu.
Wyszukaj potok w okienku "Działania" potoku i przeciągnij trzy działania Execute Pipeline na kanwę potoku.
Wybierz pierwsze działanie Wykonaj potok na kanwie, jeśli nie zostało jeszcze wybrane, a jego okienko "Ogólne", aby edytować jego szczegóły.
- W polu Nazwa właściwości działania Execute Pipeline (Wykonywanie potoku ) zalecamy użycie nazwy wywoływanego potoku ETL, dla którego chcesz wysyłać powiadomienia. Na przykład użyliśmy parametru LoadDataPipeline jako nazwy działania Execute Pipeline , ponieważ jest to nazwa wywoływanego potoku.
- W okienku "Ustawienia" wybierz istniejący potok lub utwórz nowy przy użyciu przycisku + Nowy dla właściwości Wywoływany potok . Na przykład w naszym przypadku wybrano potok LoadDataPipeline dla właściwości "Wywoływany potok". Wybierz inne opcje i skonfiguruj wszystkie parametry potoku zgodnie z wymaganiami, aby ukończyć konfigurację.
Wybierz drugie działanie Wykonaj potok na kanwie i jest to okienko "Ogólne", aby edytować jego szczegóły.
Określ wartość OnSuccess Notification w polu Nazwa działania Execute Pipeline (Wykonywanie potoku).
W okienku "Ustawienia" wybierz pozycję NotifyTeamsChannelPipeline potoku, który został utworzony wcześniej dla właściwości Wywołany potok . Dostosuj parametry zgodnie z wymaganiami na podstawie typu działania. Na przykład parametry zostały dostosowane w następujący sposób:
Nazwa/nazwisko Wartość subskrypcja 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
wiadomość 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
Utwórz warunek zależności dla drugiego działania Wykonaj potok , tak aby był uruchamiany tylko wtedy, gdy pierwsze działanie Execute Pipeline powiedzie się. Aby utworzyć tę zależność, wybierz zielony uchwyt po prawej stronie pierwszego działania Wykonaj potok, przeciągnij go i połącz go z drugim działaniem Wykonaj potok .
Wybierz trzecie działanie Wykonaj potok na kanwie i jest to okienko "Ogólne", aby edytować jego szczegóły.
Określ wartość OnFailure Notification w polu Nazwa działania Execute Pipeline (Wykonywanie potoku).
W okienku "Ustawienia" wybierz pozycję NotifyTeamsChannelPipeline potoku dla właściwości Wywoływany potok . Dostosuj parametry zgodnie z wymaganiami na podstawie typu działania. Na przykład dostosowaliśmy parametry tym razem w następujący sposób:
Nazwa/nazwisko Wartość subskrypcja 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
wiadomość @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
Utwórz warunek zależności dla trzeciego działania Wykonaj potok , aby był uruchamiany tylko wtedy, gdy pierwsze działanie Execute Pipeline zakończy się niepowodzeniem. Aby utworzyć tę zależność, wybierz czerwony uchwyt po prawej stronie pierwszego działania Wykonaj potok, przeciągnij go i połącz go z trzecim działaniem Wykonaj potok .
Zweryfikuj, debuguj, a następnie opublikuj potok MasterPipeline .
Uruchom potok, aby otrzymywać powiadomienia w usłudze Teams. Na przykład poniżej przedstawiono przykładowe powiadomienia, gdy mój potok został uruchomiony pomyślnie i kiedy zakończył się niepowodzeniem.
Wybierz przycisk "Wyświetl uruchomienie potoku", aby wyświetlić przebieg potoku.
Dodawanie komunikatów dynamicznych ze zmiennymi systemowymi i wyrażeniami
Możesz użyć zmiennych systemowych i wyrażeń, aby komunikaty są dynamiczne. Na przykład: .
@activity("CopyData").output.errors[0].Message
@activity("DataFlow").error.Message
Powyższe wyrażenia zwracają odpowiednie komunikaty o błędach z błędu, które można wysłać jako powiadomienie w kanale usługi Teams. Aby uzyskać więcej informacji na temat tego tematu, zobacz artykuł działanie Kopiuj właściwości danych wyjściowych.
Zachęcamy również do przejrzenia schematu ładunku powiadomień obsługiwanych przez usługę Microsoft Teams i dalszego dostosowywania powyższego szablonu do Twoich potrzeb.