跳转到内容
搜索文档

配置 Webhook

最后更新 查看 MarkdownAgent 设置

您可以使用多种服务通过 Webhook 连接到 Cloudflare,以接收来自 Cloudflare 账户的通知。请参阅下表,了解如何将您的 Cloudflare 账户连接到常见 Webhook 服务

配置 Webhook

  1. 在 Cloudflare 仪表板中,前往 Notifications(通知) 页面。

    Go to Notifications ↗
  2. 前往 Destinations(目标)

  3. Webhook 卡片中,选择 Create(创建)

  4. 为您的 Webhook 起一个名称,以便日后识别。

  5. URL 字段中,输入您之前设置并希望连接到 Cloudflare 账户的第三方服务的 URL。

  6. 如有需要,请输入 Secret(密钥)。密钥是 Webhook 的加密方式,因您连接到 Cloudflare 的服务而异。

  7. 选择 **Save and Test(保存并测试)**以完成 Webhook 的设置。

新 Webhook 将显示在 Webhook 卡片中。

编辑 Webhook

您只能编辑 Webhook 的名称和/或删除 Webhook。

  1. 在 Cloudflare 仪表板中,前往 Notifications(通知) 页面。

    Go to Notifications ↗
  2. 前往 Destinations(目标)

  3. Webhook 卡片中,选择您要编辑的 Webhook 上的 Edit(编辑)

  4. 更新 Webhook 的名称,然后选择 Save(保存)

您可以在选择 Edit(编辑) 后删除 Webhook,也可以通过在 Destinations(目标) 卡片中显示的 Webhook 列表中选择 **Delete(删除)**来删除。

防火墙设置

Webhook 通知从 Cloudflare 的 IP 范围发送。如果您的 Webhook 端点受防火墙保护,则必须允许这些 IP 地址才能接收通知。

要以编程方式检索当前 Cloudflare IP 地址列表,请使用 Cloudflare API

通用 Webhook

如果您使用的服务不在 Cloudflare 当前支持的 Webhook 服务列表中,您可以自行配置,并输入有效的 Webhook URL。

建议始终为通用 Webhook 使用密钥。Cloudflare 将在每次请求的 cf-webhook-auth 标头中发送您的密钥。如果此标头不存在或其值与您指定的值不符,您应拒绝该 Webhook。

选择 **Save and Test(保存并测试)**后,您的 Webhook 现在应已配置为可用于附加到策略的目标。

当 Cloudflare 向您发送 Webhook 时,其格式如下:

Example schemajson
{
	"text": "Hello World! This is a test message sent from https://cloudflare.com. If you can see this, your webhook is configured properly."
}

有关不同告警类型的完整载荷结构和示例,请参阅 Webhook 载荷结构参考

通用 Webhook 的限制

Cloudflare 通用 Webhook 通知仅会分发到端口 80 或 443 上可公开解析的 IP 地址。

如果您希望在私有 IP 地址或不同端口上接收通用 Webhook 通知,可以使用 Workers 接收并转发通知,或设置 Cloudflare Tunnel 路由到您的已连接应用程序。

将通用 Webhook 与 Workers 结合使用

您可以将 Cloudflare Workers 与通用 Webhook 结合使用,将通知投递到任何接受 Webhook 的服务。

Cloudflare 提供了一个示例工具,帮助您了解如何使用 Workers 和通用 Webhook。提供的示例演示了如何转换通用 Webhook 响应,以便将其投递到 Rocket.Chat。代码中包含大量注释,引导您完成将示例适配到自身需求的过程。

常见 Webhook 服务

Google Chat

对于 Google Chat

  • 密钥:密钥是 URL 的一部分。Cloudflare 会自动解析此信息,无需用户输入。
  • URL:URL 因 Google Chat 频道的地址而异。

Slack

对于 Slack

  • 密钥:密钥是 URL 的一部分。Cloudflare 会自动解析此信息,无需用户输入。
  • URL:URL 因 Slack 频道的地址而异。

DataDog

对于 DataDog

  • 密钥:必须由用户输入密钥。这是 DataDog 所称的 API Key
  • URLhttps://api.datadoghq.com/api/v1/events

Discord

对于 Discord

  • 密钥:密钥是 URL 的一部分。Cloudflare 会自动解析此信息,无需用户输入。
  • URL:URL 因 Discord 频道的地址而异。

OpsGenie

对于 OpsGenie

  • 密钥:密钥是 OpsGenie REST API 的 API Key
  • URLhttps://api.opsgenie.com/v2/alerts

Splunk

对于 Splunk

  • 密钥:必须由用户输入密钥。这是 Splunk 所称的 token。详情请参阅 Splunk 文档
  • URL
    1. 我们仅支持三个 Splunk 端点:services/collector、services/collector/raw 和 services/collector/event。
    2. 如果令牌启用了 SSL,端口必须为 443。如果令牌未启用 SSL,端口必须为 8088。
    3. 服务器必须启用 SSL。
    4. Splunk HTTP 事件收集器上必须禁用启用索引器确认

Feishu

对于飞书 (Feishu)

  • 密钥:密钥是 URL 的一部分。Cloudflare 会自动解析此信息,无需用户输入。
  • URL:URL 因自定义机器人而异。

Teams

对于 Teams

  • 密钥:密钥是 URL 的一部分。Cloudflare 会自动解析此信息,无需用户输入。
  • URL:URL 由 Teams 在创建传入 Webhook 连接器时提供。

ServiceNow

对于 ServiceNow

  • 密钥:由用户决定。请确保在 Cloudflare 通知中输入的密钥与 ServiceNow 中的一致。详情请参阅 ServiceNow 文档
  • URLhttps://{servicenow_instance}.com/{base_api_path}

通用 Webhook

对于通用 Webhook:

  • 密钥:由用户决定。
  • URL:由用户决定。

密钥配置

创建 Google Chat、Slack、Discord 或飞书 Webhook 时,密钥是 URL 的一部分。您可以选择从 URL 中移除密钥,并显式设置 secret 的值,而不是让 Cloudflare 自动提取。

当使用 Terraform 将 Webhook 基础设施定义为代码时,这会很有用,因为 URL 不会被 Cloudflare 修改。

Terraform exampletf
resource "cloudflare_notification_policy_webhooks" "example" {
  account_id = "<ACCOUNT_ID>"
  name       = "Slack Webhook"
  url        = "https://hooks.slack.com/services/T00000000/B00000000"
  secret     = "<secret>"
}

这篇文档对您有帮助吗?