← Cloudflare Durable Objects / durable-objects / observability
Метрики и аналитика
Durable Objects предоставляют аналитику по метрикам на уровне пространства имён Durable Object и на уровне запросов.
Метрики, отображаемые в Панель управления Cloudflare ↗ графики формируются на основе данных Cloudflare GraphQL Analytics API. Вы можете получить доступ к метрикам программно через GraphQL или HTTP-клиент.
Просмотр метрик и аналитики
Аналитика Durable Object в разрезе namespace доступна на панели управления Cloudflare. Чтобы просмотреть текущие и исторические метрики для namespace, выполните следующее:
-
На панели управления Cloudflare перейдите к разделу Durable Objects страницу.
Перейдите в Durable Objects ↗ -
Просматривайте использование Durable Objects на уровне аккаунта.
-
Выберите существующее пространство имён Durable Object.
-
Выберите Метрики на вкладке.
При необходимости можно выбрать временной интервал для запроса. По умолчанию используются последние 24 часа.
Вы также можете отфильтровать графики по одному Durable Object, указав его ID или имя и выбора совпадения. Чтобы вернуться к метрикам уровня пространства имён, очистите фильтр.
Использование памяти
Использование памяти график на Метрики вкладка показывает V8 изолят использование памяти, периодически измеряемое, пока ваши Durable Objects активны, с разбивкой по перцентилям P50, P90, P99 и P999. На каждый изолят распространяется лимит памяти 128 MB.
В этой памяти хранится состояние, которое накапливают ваши объекты: свойства класса, кэши и активные WebSocket-соединения. Оно сохраняется между запросами, пока объект не будет переведён в спящий режим или вытеснен. Это состояние не сохраняется при вытеснении, гибернации или сбое, поэтому всё важное следует сохранять в хранилище.
Содержимое графика зависит от того, применён ли фильтр:
- Без фильтра (представление пространства имён): перцентили вычисляются по периодическим замерам памяти всех Durable Object в пространстве имён, показывая распределение памяти isolate в рамках всего пространства имён.
- Фильтрация по ID или имя: перцентили вычисляются только по периодическим замерам, зафиксированным для этого конкретного Durable Object. При этом каждый замер отражает память всего isolate, в котором он работает: в этом isolate могут размещаться и другие Durable Object. Поэтому такой показатель не является изолированным измерением памяти именно этого объекта.
Использование памяти отслеживается с помощью durableObjectsPeriodicGroups набор данных GraphQL, который предоставляет memoryUsageBytes метрика. Значения перцентилей доступны как quantiles.memoryUsageBytesP50 через quantiles.memoryUsageBytesP999, в байтах.
Если использование памяти со временем растёт, это может указывать на утечку памяти. Используйте профилирование памяти с помощью DevTools локально, чтобы делать снимки кучи и находить конкретные объекты, вызывающие высокое потребление памяти.
Просмотр логов
Вы можете просматривать логи Durable Object в Cloudflare dashboard. Логи группируются по имени скрипта и имени класса Durable Object.
Чтобы начать использовать логирование Durable Object:
-
Включите логирование Durable Object в файле конфигурации Wrangler того Worker, который определяет класс вашего Durable Object:
{ "observability": { "enabled": true } }[observability] enabled = true -
Разверните последнюю версию Worker с обновлённой привязкой.
-
Перейдите в Durable Objects страницу.
Перейдите в Durable Objects ↗ -
Выберите существующее пространство имён Durable Object.
-
Выберите Журналы на вкладке.
Запрос через GraphQL API
Метрики Durable Object основаны на GraphQL.
Наборы данных, включающие метрики Durable Object:
durableObjectsInvocationsAdaptiveGroupsdurableObjectsPeriodicGroupsdurableObjectsStorageGroupsdurableObjectsSubrequestsAdaptiveGroups
Используйте Интроспекция GraphQL чтобы получить информацию о полях, которые предоставляет каждый из datasets.
Метрики WebSocket
Durable Objects с использованием WebSockets вы увидите метрики запросов по нескольким наборам данных GraphQL, поскольку у WebSocket-соединений разные типы запросов.
- Метрики самого WebSocket-соединения представлены в
durableObjectsInvocationsAdaptiveGroupsпосле закрытия соединения. Поскольку WebSocket-соединения являются долгоживущими, они часто не завершаются, пока не завершится сам Durable Object. - Метрики входящих и исходящих сообщений WebSocket-соединения доступны в
durableObjectsPeriodicGroups. Если WebSocket-соединение использует WebSocket Hibernation, входящие сообщения WebSocket вместо этого представлены вdurableObjectsInvocationsAdaptiveGroups.
Пример GraphQL-запроса для Durable Objects
viewer {
/*
Replace with your account tag, the 32 hex character id visible at the beginning of any url
when logged in to dash.cloudflare.com or under "Account ID" on the sidebar of the Workers & Pages Overview
*/
accounts(filter: {accountTag: "your account tag here"}) {
// Replace dates with a recent date
durableObjectsInvocationsAdaptiveGroups(filter: {date_gt: "2023-05-23"}, limit: 1000) {
sum {
// Any other fields found through introspection can be added here
requests
responseBodySize
}
}
durableObjectsPeriodicGroups(filter: {date_gt: "2023-05-23"}, limit: 1000) {
sum {
cpuTime
}
}
durableObjectsStorageGroups(filter: {date_gt: "2023-05-23"}, limit: 1000) {
max {
storedBytes
}
}
}
}См. Запрос метрик Workers с помощью GraphQL учебник по аутентификации, а также узнать больше о запросах к datasets Workers.
Дополнительные ресурсы
- Инструкции по настройке панели мониторинга Grafana для запросов к GraphQL Analytics API Cloudflare см. в Стартовый шаблон Grafana Dashboard для метрик Durable Object ↗.
Часто задаваемые вопросы
Как определить, какой экземпляр Durable Object сформировал запись в журнале?
Вы можете использовать $workers.durableObjectId чтобы определить конкретный экземпляр Durable Object, создавший запись в журнале.