Przejdź do treści

Powiadomienia z Microsoft Azure na MS Teams

Alerts from MS Azure to Teams

Platformę Microsoft Azure można bardzo łatwo i szybko zintegrować z Microsoft Teams i dzięki temu możemy otrzymywać powiadomienia oraz alerty bezpośrednio na komunikatorze. Dobrym przykładem jest ustawienie otrzymywania alertów w przypadku problemów z maszynami wirtualnymi. Możemy otrzymać powiadomienie jeśli jakiś użytkownik wyłączy nam naszą VM, albo jeśli zostanie wykryty problem po stronie platformy Microsoft Azure.

Jak tego dokonać? Jak ustawić takie powiadomienia? Zademonstruję przykład w którym funkcja ‘Resource Health’ nas o tym powiadomi w aplikacji Teams za pomocą ‘Logic App’.  Dokładniej, to generowany jest alert ze zdarzenia, a następnie przesłany do grupy akcji, która wywoła  Logic App. Logic App odbierze alert i prześle go jako wiadomość, na wybranym przez nas kanale w aplikacji Teams.

Testuję rozwiązanie od jakiegoś czasu i muszę przyznać, że jest extra. Jeśli zapytacie o koszty, to są one praktycznie niewidoczne aktualnie w moim przypadku na poziomie poniżej 1$. Dokładny cennik znajdziecie na stronie Microsoftu : https://azure.microsoft.com/pl-pl/pricing/details/logic-apps/.

Logic App

Na początku zajmiemy się tworzeniem aplikacji do przekazywania alertów. Aplikacja ‘Logic App’. Jak pisałem wcześniej będzie miała za zadanie odebranie alertu i przesłanie go dalej do komunikatora Teams. Aplikacja uruchamiana będzie tylko w przypadku wywołania alertu.

Żeby stworzyć Azure LogicApp logujemy się do portalu i wybieramy ‘+ Add’.

Wybieramy subskrypcję, grupę zasobów i podajemy nazwę naszej aplikacji. Zaznaczamy location ‘Region’ i wybieramy region, w moim przypadku ‘West Europe’. Zalecam także wpisanie tagów chociaż nie jest to obowiązkowe. Gdy to zrobimy, możemy kliknąć  ‘Review + create’.

Azure create logic App

Gdy Logic App zostanie utworzony przechodzimy do zasobu. Wybieramy ‘When a HTTP request is received’.

Azure logic App - chose 'When a HTTP'

Teraz klikamy ‘Use sample payload to generate schema’ i wklejamy poniższy kawałek kodu:

{
    "schemaId": "Microsoft.Insights/activityLogs",
    "data": {
        "status": "Activated",
        "context": {
            "activityLog": {
                "channels": "Test",
                "correlationId": "7032f77b-bf3a-4c70-6585-12db6d9a3der",
                "description": "…",
                "eventSource": "ResourceHealth",
                "eventTimestamp": "2020-09-09T22:44:43.7467716+00:00",
                "eventDataId": "rrdb3ebe-b6af-4920-adb7-13d43514db0d",
                "level": "Critical",
                "operationName": "Microsoft.Resourcehealth/healthevent/Activated/action",
                "operationId": "e126as3c-8874-4ec8-ba2b-57e3c92a56d2",
                "properties": {
                    "title": "...",
                    "details": "...",
                    "currentHealthStatus": "Degraded",
                    "previousHealthStatus": "Available",
                    "type": "Downtime",
                    "cause": "PlatformInitiated"
                },
                "status": "Active",
                "subscriptionId": "...",
                "submissionTimestamp": "2020-09-09T22:44:50.8013523+00:00"
            }
        },
        "properties": {}
    }
}

Gdy schemat zostanie wygenerowany dodajemy nowy krok ‘+ New step’.

Logic App - When a HTTP request is received

Wyszukujemy i wybieramy Microsoft Teams ‘Post a message (V3) (preview)’. Teraz możemy zalogować się do naszych Teamsów.

Azure Microsoft Teams - post a message

Po zalogowaniu wybieramy zespół i kanał w którym chcemy publikować wiadomości. Po kliknięciu na Wiadomość wpisujemy zwykły tekst i z ‘dynamic content’ wybieramy interesujące nas parametry np.:

Azure Microsoft Teams - post a message configuration
Azure Microsoft Teams - post a message configuration dynamic content

U mnie całość wygląda mniej więcej tak jak w przykładzie poniżej. Przy okazji zachęcam do eksperymentowania, bo nie jest to idealne rozwiązanie. W wiadomości pojawia się zbyt dużo danych i fajnie było by poprawić kod i to ograniczyć, żeby była bardziej czytelna. Na dzień dzisiejszy mi to wystarcza, a jak wprowadzę poprawki to postaram się zaktualizować artykuł 😉 Gdy wybierzemy interesujące nas parametry klikamy na ‘Save’.

Azure Microsoft Teams - post a message configuration dynamic content(full))

Resource Health

Teraz przechodzimy do zasobu który chcemy monitorować na przykład do wirtualnej maszyny. Przechodzimy do sekcji ‘Support + troubleshooting’, wybieramy ‘Resource health’ i klikamy na ‘+ Add resource health alert’.

Azure resource health

Wybieramy subskrypcję, typ zasobów, grupę zasobów wreszcie zasoby jakich ma dotyczyć alert. Warto zaznaczyć opcję ‘Include all future resources’ co pozwoli na automatyczne dodanie nowych zasobów do alertu jeśli takie stworzymy.

Azure resource health add alert rule

Alert conditions

Azure resource health alert contition

W tej części ja wybrałem że chcę otrzymywać powiadomienia dla:

  • Event status: Active, In Progress, Updated
  • Current resource status: Degraded, Unavailable, Unknown
  • Previous resource status: all
  • Reason type: Platform Initiated, User Initiated

Jeśli nie chcecie otrzymywać powiadomienia wywołanych przez użytkowników wystarczy  odznaczyć ‘Reason type: User Initiated’ tak by została zaznaczona tylko opcja ‘Platform Initiated‘.

Actions

Jeśli nie mamy utworzonej żadnej grupy w tej sekcji to należy ją stworzyć klikając odpowiednio na ‘Select action group’ i ‘+ Create action group’.

Azure resource health action group

Wybieramy subskrypcję i podajemy nazwę dla naszej ‘action group’. Możemy pominąć zakładkę ‘Notifications’ i od razu przejść do Actions gdzie wybieramy Logic App i naszą stworzoną wcześniej aplikację.

Azure create action group

Alert rule details

Po utworzeniu ‘action group’ podajemy nazwę reguły i możemy wpisać dodatkowy opis. 

Azure resource health details

Koniec. Jeśli poprawnie utworzyliśmy  ‘Logic App’ i alert dla ‘Resource health’ to rezultat naszych działań zobaczymy na wybranym kanale w Teamsach na przykład po restarcie maszyny wirtualnej której dotyczy alert. Wiadomość na kanale powinna wyglądać podobnie jak na poniższym obrazku. Jak pisałem wcześniej warto by doprecyzować informacje które mają się pojawić aby nie dostawać takich długich wiadomości.

teams logic app message
teams logic app 2 message

Jeśli podobał Ci się wpis na temat otrzymywania powiadomień z platformy Microsoft Azure bezpośrednio w komunikatorze Teams, to zajrzyj do innych artykułów związanych z Azurem, znajdziesz w kategorii azure.