观测云和 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 创建一个通知渠道

2.1.2 为渠道添加 Incoming WebHook 自定义应用

2.1.3 Incoming WebHook 的配置

在 Incoming Webhook 的配置中查看调用 WebHook 的 URL 和示例

创建完成后会看到如下信息

2.2 DataFlux Func 的配置说明

通过DataFlux Func 和 Slack 的通知渠道做集成。说明如下:

2.2.1 相关代码如下

python 复制代码
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 的集成配置。

相关推荐
小黑_深呼吸7 天前
Prometheus实战教程:k8s平台-Redis监控案例
运维·kubernetes·prometheus·监控
小马爱打代码13 天前
Spring Boot Actuator - 应用监控与管理
spring boot·监控
ak啊22 天前
基于 Prometheus 的后端服务性能故障监控方案
监控
刘大猫2623 天前
Arthas monitor(方法执行监控)
人工智能·后端·监控
可观测性用观测云23 天前
Neo4j 可观测性最佳实践
监控
ak啊24 天前
基于Python的自动化运维中服务器性能监控与告警
python·监控
ak啊1 个月前
Sentry 私有化部署监控前端应用
监控
vivo互联网技术1 个月前
vivo Trace 监控追求极致的建设历程
监控
企鹅侠客1 个月前
Prometheus告警从触发到收到通知延迟在哪?
运维·prometheus·监控
cxy_61 个月前
centos7系统搭建nagios监控
监控·nagios