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’.
Gdy Logic App zostanie utworzony przechodzimy do zasobu. Wybieramy ‘When a HTTP request is received’.
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’.
Wyszukujemy i wybieramy Microsoft Teams ‘Post a message (V3) (preview)’. Teraz możemy zalogować się do naszych Teamsów.
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.:
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’.
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’.
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.
Alert conditions
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’.
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ę.
Alert rule details
Po utworzeniu ‘action group’ podajemy nazwę reguły i możemy wpisać dodatkowy opis.
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.
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.