1. 前言
本文将說明如何在觀測雲上通過 DataFlux Func 和 Slack 做內建,能夠把告警資訊及時推送到 Slack 中顯示告警相關資訊。
1.1 關于 Slack
Slack 是一個流行的協作工具,它提供了一個集中的平台,讓團隊成員能夠通過即時消息、檔案共享、搜尋和內建第三方服務來溝通和協作。以下是 Slack 的一些關鍵特點:
- 即時消息:Slack 允許使用者發送一對一或群組消息,支援文本、圖檔、視訊和音頻消息。
- 頻道:使用者可以建立不同的頻道來組織讨論,例如按項目、主題或部門分類。
- 直接消息:使用者可以與團隊中的其他成員私下交流。
- 檔案共享:Slack 允許使用者在對話中共享檔案,包括文檔、圖檔和視訊。
- 搜尋功能:強大的搜尋功能可以幫助使用者快速找到過去的對話或檔案。
- 內建:Slack 可以與許多第三方服務內建,如 Google Drive、Trello、GitHub 等,使得工作流程更加無縫。
- 自動化:通過使用 Slack 的 API 和機器人,使用者可以建立自動化工作流程,例如自動發送消息或執行任務。
- 安全性:Slack 提供了多種安全措施,包括資料加密、雙因素認證等。
- 移動和桌面應用:Slack 提供了 iOS 和 Android 的移動應用,以及适用于 Windows、macOS 和 Linux 的桌面應用。
總體來說,Slack 旨在提高團隊的溝通效率,減少電子郵件的使用,并幫助團隊成員更好地協作。它适用于各種規模的團隊,從小型創業公司到大型企業。
1.2 觀測雲和 Slack
觀測雲可以配置和 Slack 的內建告警,當應用程式或服務出現問題時,自動向 Slack 發送通知。使得相關團隊能夠快速響應和解決問題。
2. 內建步驟說明
2.1 Slack 的配置說明
2.1.1 建立一個通知管道
2.1.2 為管道添加 Incoming WebHook 自定義應用
2.1.3 Incoming WebHook 的配置
在 Incoming Webhook 的配置中檢視調用 WebHook 的 URL 和示例
建立完成後會看到如下資訊
2.2 DataFlux Func 的配置說明
通過DataFlux Func 和 Slack 的通知管道做內建。說明如下:
2.2.1 相關代碼如下
import requests
import json
events_url = "https://hooks.slack.com/services/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"
@DFF.API('Slack_Webhook_Proxy_API')
def create_slack_message(**event):
try:
if event:
checker_name = event.get("df_monitor_checker_name")
checker_value = event.get("df_monitor_checker_value")
severity = event.get("df_status")
label = event.get("df_label")
event_link = event.get("df_event_link")
workspace_name = event.get("df_workspace_name")
ts = event.get("timestamp")
headers = {"Content-Type": "application/json"}
severity_icons = {
"critical": ":fire:",
"error": ":no_entry:",
"warning": ":warning:",
"ok": ":large_green_circle:"
}
color_list = {
"critical": "#ff0000",
"error": "#eb9b34",
"warning": "#e5eb34",
"ok": "#03fc14"
}
icon = severity_icons.get(severity)
payload_colors = color_list.get(severity)
severity = severity.upper()
payload = {
"attachments": [{
"color": f"{payload_colors}",
"author_name": f"{icon} {severity}",
"title": f"CF Alerts | {workspace_name} workspace",
"title_link": f"{event_link}",
"text": f"The {checker_name} monitor has triggered a {severity} alert (value: *{checker_value}*) in the {workspace_name} workspace.",
"footer": "Time",
"ts": f"{ts}"
}]
}
print(payload)
## Post to Webhook
res = requests.post(events_url, headers=headers, data=json.dumps(payload))
print(res.status_code)
except Exception as e:
# 捕獲HTTP錯誤
print(f"錯誤發生: {e}")
在 DataFlux Func 中配置同步 API
通過示例檢視 API 的調用位址和調用示例:
2.3 觀測雲上的配置
2.3.1 建立 Webhook 的通知對象
Webhook 的位址為 DataFlux Func 中的 API 調用位址。
2.3.2 建立告警政策
2.3.3 監控器設定
在告警政策中選擇前面建立的 slack 政策。
3. 效果展示
當達到告警器門檻值後,我們将在 Slack 中及時收到如下的告警資訊:
同時,點選如下的連結後,會自動跳轉到觀測雲的事件中檢視告警詳情。
至此,我們初步完成了觀測雲通過 DataFlux Func 和 Slack 的內建配置。