跳转到内容
搜索文档

指标与分析

最后更新 查看 MarkdownAgent 设置

Email Service 提供分析功能,让您检查所有域名的电子邮件发送性能和投递率。

Cloudflare 仪表板 图表中显示的指标来自 Cloudflare 的 GraphQL Analytics API。您可以通过 GraphQL 或 HTTP 客户端以编程方式访问这些指标。

指标

Email Service 当前公开以下指标:

数据集 GraphQL 数据集名称 描述
Sending(聚合) emailSendingAdaptiveGroups 按状态、日期、发送域名和身份验证结果等维度分组的聚合电子邮件发送计数。
Sending(事件) emailSendingAdaptive 包含发件人、收件人、主题、消息 ID 和错误信息等完整详情的单封电子邮件发送事件。
Routing(聚合) emailRoutingAdaptiveGroups 按状态、日期、收件人域名和身份验证结果等维度分组的聚合电子邮件路由计数。
Routing(事件) emailRoutingAdaptive 包含发件人、收件人、主题、消息 ID 和处理决策等完整详情的单封电子邮件路由事件。

指标可查询(并保留)过去 31 天的数据。

在仪表板中查看指标

Email Service 的按域名分析可在 Cloudflare 仪表板中使用。要查看当前和历史指标:

  1. 登录 Cloudflare 仪表板 并选择您的账户。
  2. 前往 Compute(计算) > Email Service(电子邮件服务),并选择 Email Sending(电子邮件发送)Email Routing(电子邮件路由)
  3. 选择现有域名或查看账户范围的指标。
  4. 选择 Analytics(分析) 选项卡。

您可以选择时间窗口进行查询。默认值为过去 24 小时。

通过 GraphQL API 查询

您可以通过 GraphQL Analytics API 以编程方式查询 Email Service 域名的分析数据。此 API 查询的数据集与 Cloudflare 仪表板相同,并支持 GraphQL 内省

要开始使用 GraphQL Analytics API,请按照文档设置 GraphQL Analytics API 的身份验证。您的 API 令牌必须包含 Analytics Read 权限。

这些是 zone 级别 数据集。查询时请提供您的 zone ID(而非账户 ID)作为 zoneTag 过滤条件。Email Service 的 GraphQL 数据集包括:

  • emailSendingAdaptiveGroups — 带有可分组维度的聚合电子邮件发送计数
  • emailSendingAdaptive — 单封电子邮件发送事件
  • emailRoutingAdaptiveGroups — 带有可分组维度的聚合电子邮件路由计数
  • emailRoutingAdaptive — 单封电子邮件路由事件

Email Sending 维度

emailSendingAdaptiveGroups 数据集支持以下用于分组和过滤的维度:

维度 类型 描述
date Date 按天分组
datetime Time 精确事件时间戳
datetimeMinute Time 按分钟分组
datetimeFiveMinutes Time 按 5 分钟间隔分组
datetimeFifteenMinutes Time 按 15 分钟间隔分组
datetimeHour Time 按小时分组
status string 投递状态(例如 delivereddeliveryFailed
eventType string 电子邮件来源(incomingforwardreplynewEmail
sendingDomain string 用于发送电子邮件的域名
envelopeTo string 收件人信封地址
errorCause string 发送失败的错误原因
arc string ARC 身份验证结果
dkim string DKIM 身份验证结果
dmarc string DMARC 身份验证结果
spf string SPF 身份验证结果
isSpam uint8 电子邮件是否被标记为垃圾邮件
isNDR uint8 电子邮件是否为未送达报告
isLastEvent uint8 是否为该电子邮件的最后一个事件

emailSendingAdaptive 数据集包含以上全部字段,以及按事件的字段:fromtosubjectmessageIdsessionIderrorDetail

Email Routing 维度

emailRoutingAdaptiveGroups 数据集支持以下用于分组和过滤的维度:

维度 类型 描述
date Date 按天分组
datetime Time 精确事件时间戳
datetimeMinute Time 按分钟分组
datetimeFiveMinutes Time 按 5 分钟间隔分组
datetimeFifteenMinutes Time 按 15 分钟间隔分组
datetimeHour Time 按小时分组
status string 电子邮件的最终结果
eventType string 电子邮件来源(incomingforwardreplynewEmail
action string 路由规则应用的操作
ruleMatched string 电子邮件匹配的路由规则 UUID
arc string ARC 身份验证结果
dkim string DKIM 身份验证结果
dmarc string DMARC 身份验证结果
spf string SPF 身份验证结果
isSpam uint8 电子邮件是否被标记为垃圾邮件
isNDR uint8 电子邮件是否为未送达报告
isLastEvent uint8 是否为该电子邮件的最后一个事件

emailRoutingAdaptive 数据集包含以上全部字段,以及按事件的字段:fromtosubjectmessageIdsessionIderrorDetailruleMatched

示例

以下是可用于检索 Email Service 分析信息的常用 GraphQL 查询。这些查询使用变量 $zoneTag,应设置为您的 Cloudflare Zone ID。您可以在 Cloudflare 仪表板中域名的 Overview(概览) 页面找到该 ID。

{
	"zoneTag": "<YOUR_ZONE_ID>",
	"start": "2024-07-15",
	"end": "2024-07-30"
}

电子邮件发送操作

查询给定日期范围内的电子邮件数量,按 datestatus(例如 delivereddeliveryFailed)分组:

query EmailSendingByStatus($zoneTag: string!, $start: Date!, $end: Date!) {
	viewer {
		zones(filter: { zoneTag: $zoneTag }) {
			emailSendingAdaptiveGroups(
				filter: { date_geq: $start, date_leq: $end }
				limit: 10000
				orderBy: [date_DESC]
			) {
				count
				dimensions {
					date
					status
				}
			}
		}
	}
}

投递失败分析

调查特定日期范围的投递失败原因,按 errorCausesendingDomain 分组:

query EmailDeliveryFailures($zoneTag: string!, $start: Date!, $end: Date!) {
	viewer {
		zones(filter: { zoneTag: $zoneTag }) {
			emailSendingAdaptiveGroups(
				filter: { date_geq: $start, date_leq: $end, status: "deliveryFailed" }
				limit: 10000
				orderBy: [date_DESC]
			) {
				count
				dimensions {
					date
					errorCause
					sendingDomain
				}
			}
		}
	}
}

每小时流量

按小时查询电子邮件发送量,有助于识别流量模式:

query EmailSendingHourlyVolume($zoneTag: string!, $start: Time!, $end: Time!) {
	viewer {
		zones(filter: { zoneTag: $zoneTag }) {
			emailSendingAdaptiveGroups(
				filter: { datetimeHour_geq: $start, datetimeHour_leq: $end }
				limit: 10000
				orderBy: [datetimeHour_ASC]
			) {
				count
				dimensions {
					datetimeHour
					status
				}
			}
		}
	}
}

单封电子邮件事件

查询单封电子邮件事件以排查特定投递问题。此查询使用 emailSendingAdaptive 数据集,并按 datetime(Time 类型)过滤:

query RecentEmailEvents($zoneTag: string!, $start: Time!, $end: Time!) {
	viewer {
		zones(filter: { zoneTag: $zoneTag }) {
			emailSendingAdaptive(
				filter: { datetime_geq: $start, datetime_leq: $end }
				limit: 50
				orderBy: [datetime_DESC]
			) {
				datetime
				from
				to
				subject
				status
				eventType
				sendingDomain
				messageId
				errorCause
				errorDetail
				dkim
				dmarc
				spf
				isSpam
			}
		}
	}
}

电子邮件路由操作

查询给定日期范围内已路由电子邮件的数量,按 datestatus 分组:

query EmailRoutingByStatus($zoneTag: string!, $start: Date!, $end: Date!) {
	viewer {
		zones(filter: { zoneTag: $zoneTag }) {
			emailRoutingAdaptiveGroups(
				filter: { date_geq: $start, date_leq: $end }
				limit: 10000
				orderBy: [date_DESC]
			) {
				count
				dimensions {
					date
					status
				}
			}
		}
	}
}

路由规则活动

查看哪些路由规则匹配了电子邮件,按 ruleMatchedaction 分组:

query EmailRoutingRuleActivity($zoneTag: string!, $start: Date!, $end: Date!) {
	viewer {
		zones(filter: { zoneTag: $zoneTag }) {
			emailRoutingAdaptiveGroups(
				filter: { date_geq: $start, date_leq: $end }
				limit: 10000
				orderBy: [date_DESC]
			) {
				count
				dimensions {
					date
					ruleMatched
					action
				}
			}
		}
	}
}

单条路由事件

查询单条路由事件以进行故障排查:

query RecentRoutingEvents($zoneTag: string!, $start: Time!, $end: Time!) {
	viewer {
		zones(filter: { zoneTag: $zoneTag }) {
			emailRoutingAdaptive(
				filter: { datetime_geq: $start, datetime_leq: $end }
				limit: 50
				orderBy: [datetime_DESC]
			) {
				datetime
				from
				to
				subject
				status
				action
				ruleMatched
				messageId
				errorDetail
				dkim
				dmarc
				spf
				isSpam
			}
		}
	}
}

后续步骤

这篇文档对您有帮助吗?