← Cloudflare Email Service / email-service / observability
Метрики и аналитика
Email Service предоставляет аналитику, которая позволяет отслеживать производительность отправки и показатели доставки по всем вашим доменам.
Метрики, отображаемые в Панель управления Cloudflare ↗ графики формируются на основе данных Cloudflare GraphQL Analytics API. Вы можете получить доступ к метрикам программно через GraphQL или HTTP-клиент.
Метрики
Сейчас Email Service предоставляет следующие метрики:
| Набор данных | GraphQL Dataset Name | Описание |
|---|---|---|
| Отправка (агрегированные данные) | emailSendingAdaptiveGroups |
Агрегированное количество отправленных писем с группировкой по таким параметрам, как статус, дата, домен отправки и результаты аутентификации. |
| Отправка (события) | emailSendingAdaptive |
Отдельные события отправки писем с полной информацией: отправитель, получатель, тема, ID сообщения и сведения об ошибках. |
| Маршрутизация (агрегированные данные) | emailRoutingAdaptiveGroups |
Агрегированное количество писем маршрутизации с группировкой по таким параметрам, как статус, дата, домен получателя и результаты аутентификации. |
| Маршрутизация (события) | emailRoutingAdaptive |
Отдельные события маршрутизации писем с полной информацией: отправитель, получатель, тема, ID сообщения и решения по обработке. |
Метрики можно запрашивать (и они хранятся) за последние 31 день.
Просмотр метрик в панели управления
Аналитика Email Service по доменам доступна в панели управления Cloudflare. Чтобы посмотреть текущие и исторические метрики:
- Войдите в Панель управления Cloudflare ↗ и выберите свой аккаунт.
- Перейдите в Вычисления > Служба электронной почты и выберите Email Sending или Email Routing.
- Выберите существующий домен или просмотрите общеаккаунтные метрики.
- Выберите Аналитика на вкладке.
При необходимости можно выбрать временной интервал для запроса. По умолчанию используются последние 24 часа.
Запрос через GraphQL API
Вы можете программно запрашивать аналитику по доменам Email Service через GraphQL Analytics API. Этот API запрашивает те же наборы данных, что и панель управления Cloudflare, и поддерживает GraphQL интроспекция.
Чтобы начать использовать GraphQL Analytics API, следуйте документации по настройке Аутентификация для GraphQL Analytics API. Ваш API-токен должен включать Analytics Read разрешение.
Это на уровне зоны наборы данных. Чтобы выполнять к ним запросы, укажите идентификатор зоны (не идентификатор аккаунта) в качестве zoneTag фильтр. Наборы данных GraphQL для Email Service включают:
emailSendingAdaptiveGroups: агрегированные показатели отправки писем с группируемыми измерениямиemailSendingAdaptive: отдельные события отправки писемemailRoutingAdaptiveGroups: агрегированные показатели маршрутизации писем с группируемыми измерениямиemailRoutingAdaptive: отдельные события маршрутизации писем
Измерения Email Sending
emailSendingAdaptiveGroups набор данных поддерживает следующие измерения для группировки и фильтрации:
| Измерение | Тип | Описание |
|---|---|---|
date |
Дата | Группировка по дням |
datetime |
Время | Точная метка времени события |
datetimeMinute |
Время | Группировка по минутам |
datetimeFiveMinutes |
Время | группировка с интервалом 5 минут |
datetimeFifteenMinutes |
Время | группировка с интервалом 15 минут |
datetimeHour |
Время | Группировка по часам |
status |
string | Статус доставки (например, delivered, deliveryFailed) |
eventType |
string | Источник письма (incoming, forward, reply, newEmail) |
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 набор данных включает всё перечисленное выше, а также поля для каждого события: from, to, subject, messageId, sessionId, errorDetail.
Измерения Email Routing
emailRoutingAdaptiveGroups набор данных поддерживает следующие измерения для группировки и фильтрации:
| Измерение | Тип | Описание |
|---|---|---|
date |
Дата | Группировка по дням |
datetime |
Время | Точная метка времени события |
datetimeMinute |
Время | Группировка по минутам |
datetimeFiveMinutes |
Время | группировка с интервалом 5 минут |
datetimeFifteenMinutes |
Время | группировка с интервалом 15 минут |
datetimeHour |
Время | Группировка по часам |
status |
string | Результат обработки письма |
eventType |
string | Источник письма (incoming, forward, reply, newEmail) |
action |
string | Действие, применяемое правилом маршрутизации |
ruleMatched |
string | UUID правила маршрутизации, которому соответствует письмо |
arc |
string | Результат аутентификации ARC |
dkim |
string | Результат аутентификации DKIM |
dmarc |
string | Результат аутентификации DMARC |
spf |
string | Результат аутентификации SPF |
isSpam |
uint8 | Было ли письмо помечено как спам |
isNDR |
uint8 | Является ли письмо отчётом о недоставке |
isLastEvent |
uint8 | Является ли это последним событием для данного письма |
emailRoutingAdaptive набор данных включает всё перечисленное выше, а также поля для каждого события: from, to, subject, messageId, sessionId, errorDetail, ruleMatched.
Примеры
Ниже приведены типичные запросы GraphQL, которые можно использовать для получения данных аналитики Email Service. В этих запросах используется переменная $zoneTag, в качестве значения которого нужно указать Zone ID вашей зоны Cloudflare. Найти его можно в панели управления Cloudflare в разделе Обзор страницу.
{
"zoneTag": "<YOUR_ZONE_ID>",
"start": "2024-07-15",
"end": "2024-07-30"
}Операции отправки писем
Чтобы запросить количество писем за заданный диапазон дат, сгруппированное по date и status (например, delivered, deliveryFailed):
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
}
}
}
}
}Анализ сбоев доставки
Чтобы изучить причины сбоев доставки за определённый диапазон дат, сгруппированные по errorCause и sendingDomain:
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
}
}
}
}Операции маршрутизации писем
Чтобы запросить количество маршрутизированных писем за заданный диапазон дат, сгруппированное по date и status:
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
}
}
}
}
}Активность правил маршрутизации
Чтобы увидеть, какие правила маршрутизации соответствуют письмам, сгруппированные по ruleMatched и action:
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
}
}
}
}Следующие шаги
- Журналы писем : просматривайте активность по отдельным письмам в панели управления.
- Журналы аудита : отслеживайте изменения конфигурации.
- GraphQL Analytics API : полный справочник по GraphQL API.