天天看點

觀測雲和 Slack 的內建實踐

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 建立一個通知管道

觀測雲和 Slack 的內建實踐

2.1.2 為管道添加 Incoming WebHook 自定義應用

觀測雲和 Slack 的內建實踐

2.1.3 Incoming WebHook 的配置

在 Incoming Webhook 的配置中檢視調用 WebHook 的 URL 和示例

觀測雲和 Slack 的內建實踐

建立完成後會看到如下資訊

觀測雲和 Slack 的內建實踐

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

觀測雲和 Slack 的內建實踐

通過示例檢視 API 的調用位址和調用示例:

觀測雲和 Slack 的內建實踐

2.3 觀測雲上的配置

2.3.1 建立 Webhook 的通知對象

觀測雲和 Slack 的內建實踐

Webhook 的位址為 DataFlux Func 中的 API 調用位址。

2.3.2 建立告警政策

觀測雲和 Slack 的內建實踐

2.3.3 監控器設定

觀測雲和 Slack 的內建實踐

在告警政策中選擇前面建立的 slack 政策。

3. 效果展示

當達到告警器門檻值後,我們将在 Slack 中及時收到如下的告警資訊:

觀測雲和 Slack 的內建實踐

同時,點選如下的連結後,會自動跳轉到觀測雲的事件中檢視告警詳情。

觀測雲和 Slack 的內建實踐
觀測雲和 Slack 的內建實踐

至此,我們初步完成了觀測雲通過 DataFlux Func 和 Slack 的內建配置。