您可以使用多种服务通过 Webhook 连接到 Cloudflare,以接收来自 Cloudflare 账户的通知。请参阅下表,了解如何将您的 Cloudflare 账户连接到常见 Webhook 服务。
-
在 Cloudflare 仪表板中,前往 Notifications(通知) 页面。
Go to Notifications ↗ -
前往 Destinations(目标)。
-
在 Webhook 卡片中,选择 Create(创建)。
-
为您的 Webhook 起一个名称,以便日后识别。
-
在 URL 字段中,输入您之前设置并希望连接到 Cloudflare 账户的第三方服务的 URL。
-
如有需要,请输入 Secret(密钥)。密钥是 Webhook 的加密方式,因您连接到 Cloudflare 的服务而异。
-
选择 **Save and Test(保存并测试)**以完成 Webhook 的设置。
新 Webhook 将显示在 Webhook 卡片中。
您只能编辑 Webhook 的名称和/或删除 Webhook。
-
在 Cloudflare 仪表板中,前往 Notifications(通知) 页面。
Go to Notifications ↗ -
前往 Destinations(目标)。
-
在 Webhook 卡片中,选择您要编辑的 Webhook 上的 Edit(编辑)。
-
更新 Webhook 的名称,然后选择 Save(保存)。
您可以在选择 Edit(编辑) 后删除 Webhook,也可以通过在 Destinations(目标) 卡片中显示的 Webhook 列表中选择 **Delete(删除)**来删除。
Webhook 通知从 Cloudflare 的 IP 范围 ↗发送。如果您的 Webhook 端点受防火墙保护,则必须允许这些 IP 地址才能接收通知。
要以编程方式检索当前 Cloudflare IP 地址列表,请使用 Cloudflare API。
如果您使用的服务不在 Cloudflare 当前支持的 Webhook 服务列表中,您可以自行配置,并输入有效的 Webhook URL。
建议始终为通用 Webhook 使用密钥。Cloudflare 将在每次请求的 cf-webhook-auth 标头中发送您的密钥。如果此标头不存在或其值与您指定的值不符,您应拒绝该 Webhook。
选择 **Save and Test(保存并测试)**后,您的 Webhook 现在应已配置为可用于附加到策略的目标。
当 Cloudflare 向您发送 Webhook 时,其格式如下:
{
"text": "Hello World! This is a test message sent from https://cloudflare.com. If you can see this, your webhook is configured properly."
}有关不同告警类型的完整载荷结构和示例,请参阅 Webhook 载荷结构参考。
Cloudflare 通用 Webhook 通知仅会分发到端口 80 或 443 上可公开解析的 IP 地址。
如果您希望在私有 IP 地址或不同端口上接收通用 Webhook 通知,可以使用 Workers 接收并转发通知,或设置 Cloudflare Tunnel 路由到您的已连接应用程序。
您可以将 Cloudflare Workers 与通用 Webhook 结合使用,将通知投递到任何接受 Webhook 的服务。
Cloudflare 提供了一个示例工具 ↗,帮助您了解如何使用 Workers 和通用 Webhook。提供的示例演示了如何转换通用 Webhook 响应,以便将其投递到 Rocket.Chat。代码中包含大量注释,引导您完成将示例适配到自身需求的过程。
对于 Google Chat ↗:
- 密钥:密钥是 URL 的一部分。Cloudflare 会自动解析此信息,无需用户输入。
- URL:URL 因 Google Chat 频道的地址而异。
对于 Slack ↗:
- 密钥:密钥是 URL 的一部分。Cloudflare 会自动解析此信息,无需用户输入。
- URL:URL 因 Slack 频道的地址而异。
对于 DataDog ↗:
- 密钥:必须由用户输入密钥。这是 DataDog 所称的 API Key ↗。
- URL:
https://api.datadoghq.com/api/v1/events
对于 Discord ↗:
- 密钥:密钥是 URL 的一部分。Cloudflare 会自动解析此信息,无需用户输入。
- URL:URL 因 Discord 频道的地址而异。
对于 OpsGenie ↗:
- 密钥:密钥是 OpsGenie REST API 的
API Key。 - URL:
https://api.opsgenie.com/v2/alerts
对于 Splunk ↗:
- 密钥:必须由用户输入密钥。这是 Splunk 所称的
token。详情请参阅 Splunk 文档 ↗。 - URL:
- 我们仅支持三个 Splunk 端点:services/collector、services/collector/raw 和 services/collector/event。
- 如果令牌启用了 SSL,端口必须为 443。如果令牌未启用 SSL,端口必须为 8088。
- 服务器必须启用 SSL。
- Splunk HTTP 事件收集器上必须禁用启用索引器确认。
- 密钥:密钥是 URL 的一部分。Cloudflare 会自动解析此信息,无需用户输入。
- URL:URL 因自定义机器人而异。
对于 Teams ↗:
- 密钥:密钥是 URL 的一部分。Cloudflare 会自动解析此信息,无需用户输入。
- URL:URL 由 Teams 在创建传入 Webhook 连接器时提供。
对于 ServiceNow ↗:
- 密钥:由用户决定。请确保在 Cloudflare 通知中输入的密钥与 ServiceNow 中的一致。详情请参阅 ServiceNow 文档 ↗。
- URL:
https://{servicenow_instance}.com/{base_api_path}
对于通用 Webhook:
- 密钥:由用户决定。
- URL:由用户决定。
创建 Google Chat、Slack、Discord 或飞书 Webhook 时,密钥是 URL 的一部分。您可以选择从 URL 中移除密钥,并显式设置 secret 的值,而不是让 Cloudflare 自动提取。
当使用 Terraform 将 Webhook 基础设施定义为代码时,这会很有用,因为 URL 不会被 Cloudflare 修改。
resource "cloudflare_notification_policy_webhooks" "example" {
account_id = "<ACCOUNT_ID>"
name = "Slack Webhook"
url = "https://hooks.slack.com/services/T00000000/B00000000"
secret = "<secret>"
}