
Giới thiệu
Việc đưa cảnh báo về Tình trạng dịch vụ Azure vào các công cụ liên lạc mà nhóm của bạn đã sử dụng là một trong những việc quan trọng. Thay vì dựa vào email hoặc mong đợi mọi người kiểm tra Azure Portal (nhưng họ sẽ không kiểm tra), bạn có thể gửi cảnh báo theo thời gian thực trực tiếp vào các kênh Microsoft Teams hoặc Slack.
Rất nhiều tổ chức đang sử dụng MS Teams làm cơ chế thông báo trong quy trình quản lý của họ. Tuy nhiên, Microsoft không có tích hợp sẵn nào trong Azure Monitor để gửi thông báo trực tiếp qua Teams.
Trong bài đăng này, tôi sẽ hướng dẫn bạn cấu hình Azure Monitor đằng sau cơ chế thông báo cảnh báo kênh Teams.
Điều kiện tiên quyết
Kiến trúc hệ thống

Có hai cách tiếp cận chính:
- Webhook trực tiếp – gửi alert payload trực tiếp đến webhook endpoint có thể chấp nhận Azure Monitor alert schema. Dễ setup nhưng format tin nhắn là mặc định.
- Logic App trung gian – định tuyến cảnh báo thông qua Logic App format lại tin nhắn trước khi gửi. Cần setup nhiều hơn nhưng tạo ra các thông báo đẹp mắt hơn.
Chuẩn bị Team Channel
Đầu tiên và quan trọng nhất, Teams và kênh Teams cần phải tồn tại. Tham khảo cách tạo tại:
- Create a team from scratch at https://support.microsoft.com/en-us/office/create-a-team-from-scratch-174adf5f-846b-4780-b765-de1a0a737e2b
- Create a channel in Teams at https://support.microsoft.com/en-us/office/create-a-channel-in-teams-fda0b75e-5b90-4fb8-8857-7e102b014525

Tạo Channel workflow
- Mở Microsoft Teams và đi tới kênh mà bạn muốn nhận thông báo
- Nhấp vào ba dấu chấm trên tên kênh, sau đó chọn “Quy trình làm việc”

- Chọn “Gửi vào kênh khi nhận được yêu cầu webhook”
- Chọn nhóm và kênh
- Sao chép URL webhook được tạo

Gửi cảnh báo tới Microsoft Teams
Cách 1: Gửi webhook trực tiếp

Tạo Action Group với Webhook:
# Create an action group that sends to Teams via webhook
# The URI is the webhook URL you copied from Teams
az monitor action-group create \
--resource-group rg-monitoring \
--name ag-teams-service-health \
--short-name teamsSH \
--action webhook teams-channel "https://prod-XX.westus.logic.azure.com:443/workflows/YOUR_WORKFLOW_ID/triggers/manual/paths/invoke?..." \
--tags environment=productionTạo Service Health alert
# Create a Service Health alert linked to the Teams action group
az monitor activity-log alert create \
--resource-group rg-monitoring \
--name "ServiceHealth-Teams" \
--description "Send Service Health alerts to Teams" \
--condition category=ServiceHealth \
--action-group ag-teams-service-health \
--scope "/subscriptions/<your-subscription-id>"Cách tiếp cận webhook trực tiếp hoạt động khi có alert, nhưng thông báo trong Teams sẽ là raw JSON payload, không lý tưởng để dễ đọc.
Cách 2: Gửi Adaptive Card với Logic App
Tạo Logic App

# Create a Logic App resource
az logic workflow create \
--resource-group rg-monitoring \
--name la-service-health-teams \
--location eastus \
--definition '{
"$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
"triggers": {
"manual": {
"type": "Request",
"kind": "Http",
"inputs": {
"schema": {}
}
}
},
"actions": {}
}'Cấu hình Logic App:
- Chọn Trigger “Khi nhận được yêu cầu HTTP”

- Parse JSON để trích xuất các trường Service Health alert
- Hành động “Đăng thẻ thích ứng trong cuộc trò chuyện hoặc kênh” bằng trình kết nối Teams

- Sửa hành động để xây dựng JSON Adaptive Card

{
"type": "AdaptiveCard",
"version": "1.4",
"body": [
{
"type": "TextBlock",
"size": "Large",
"weight": "Bolder",
"text": "Azure Service Health Alert",
"color": "Attention"
},
{
"type": "FactSet",
"facts": [
{
"title": "Event Type:",
"value": "@{triggerBody()?['data']?['context']?['activityLog']?['properties']?['incidentType']}"
},
{
"title": "Title:",
"value": "@{triggerBody()?['data']?['context']?['activityLog']?['properties']?['title']}"
},
{
"title": "Service:",
"value": "@{triggerBody()?['data']?['context']?['activityLog']?['properties']?['service']}"
},
{
"title": "Region:",
"value": "@{triggerBody()?['data']?['context']?['activityLog']?['properties']?['region']}"
},
{
"title": "Status:",
"value": "@{triggerBody()?['data']?['context']?['activityLog']?['properties']?['stage']}"
}
]
},
{
"type": "TextBlock",
"text": "@{triggerBody()?['data']?['context']?['activityLog']?['properties']?['communication']}",
"wrap": true
}
],
"actions": [
{
"type": "Action.OpenUrl",
"title": "View in Azure Portal",
"url": "https://portal.azure.com/#blade/Microsoft_Azure_Health/AzureHealthBrowseBlade/serviceIssues"
}
]
}Tạo Alert và kết nối tới Logic App

Lấy Logic App resource ID và Request trigger callback URL, sau đó thêm URL đó dưới dạng Logic App trong action group:
# Get the Logic App resource ID
LOGIC_APP_ID=$(az logic workflow show \
--resource-group rg-monitoring \
--name la-service-health-teams \
--query "id" -o tsv)
# Get the signed callback URL for the Request trigger named "manual"
CALLBACK_URL=$(az rest \
--method post \
--url "https://management.azure.com${LOGIC_APP_ID}/triggers/manual/listCallbackUrl?api-version=2016-06-01" \
--query "value" -o tsv)
# Update the action group to use the Logic App action type
az monitor action-group update \
--resource-group rg-monitoring \
--name ag-teams-service-health \
--add-action logicapp teams-logicapp "$LOGIC_APP_ID" "$CALLBACK_URL"Best Practice khi gửi cảnh báo qua Teams
Sử dụng các kênh chuyên dụng
Hãy tạo một kênh riêng (Channel) trong Teams để nhận thông báo về tình trạng hoạt động của Azure. Đừng đưa chúng vào kênh vận hành chung vì chúng sẽ bị lẫn vào các thông báo khác.
Phân tách các kênh theo mức độ nghiêm trọng
Hãy cân nhắc sử dụng các kênh khác nhau cho các loại sự kiện khác nhau:
- #azure-incidents dành cho các sự cố dịch vụ (ưu tiên cao)
- #azure-maintenance để bảo trì theo kế hoạch (thông tin)
- #azure-advisories dành cho các khuyến cáo về sức khỏe và bảo mật (ưu tiên thấp)
Điều này giúp các thông báo quan trọng luôn hiển thị và ngăn ngừa tình trạng quá tải thông báo.
Bao gồm các liên kết hành động
Luôn bao gồm một liên kết trực tiếp đến trang Trạng thái Dịch vụ trong Azure Portal cùng thông báo của bạn. Khi ai đó nhìn thấy cảnh báo, họ sẽ có thể nhấp vào liên kết để xem thông tin chi tiết đầy đủ ngay lập tức.


