Выявляйте проблемы в продакшене и сразу отправляйте их своему агенту
- Cloudflare выпустила Issues для Workers в открытой бета-версии: сервис группирует исключения, ответы 5xx и сообщения об ошибках.
- При заданном пороге повторов или новом сбое после затишья Issues отправляет агенту стек, логи, трассировки и версию Worker.
- За день команда Workflows выявила и исправила две редкие ошибки: цикл повторов миграции и незавершавшееся удаление. до исправления.
Почему это важно: Автоматизация передаёт агенту диагностический контекст и избавляет команду от ручного сбора логов и трассировок.
По мере того как агенты помогают нам создавать всё более сложные приложения, и людям, и агентам нужны более эффективные способы отслеживать сбои в рабочей среде. Агенты для программирования уже умеют запрашивать данные мониторинга, изучать репозиторий, менять код, писать тесты и открывать pull request. Но связать эти действия между собой пока приходится вручную: понять, что повторяющиеся сбои вызваны одной и той же ошибкой, собрать нужные логи и трассировки, передать этот контекст агенту и проверить, помогло ли исправление. Без такой структурированной передачи агенту приходится искать нужные сведения в необработанных телеметрических данных, чтобы восстановить масштаб и контекст сбоя, прежде чем приступить к расследованию.
Сегодня мы представляем Issues — встроенный мониторинг ошибок для Cloudflare Workers (теперь доступен в открытой бета-версии!), который упрощает этот процесс. Issues умеет:
- Группировать повторяющиеся исключения, ответы 5xx и сообщения об ошибках в одну проблему.
- Передавать настроенному агенту для программирования сведения об ошибке, трассировку стека, логи, трассировки и версию Worker.
- Запускать настроенный рабочий процесс агента — от сортировки проблем по приоритету до запроса дополнительных данных и открытия pull request.

Исправьте свою первую проблему с помощью приведённого ниже запроса для агента через CF CLI или ознакомьтесь с документацией, чтобы начать работу:
Set up cf: https://developers.cloudflare.com/cf/. Enable Issues for this Worker in cloudflare.config.ts; show the diff and ask before deploying. After approved deployment, wait 1 minute, then find the most frequent issue and retrieve an occurrence using its returned ID:
cf observability issues list --order-by count --order desc --per-page 1
cf observability issues occurrences --per-page 1
If no issues exist, report that. Otherwise, diagnose from the details, fix locally, run relevant checks, and show the diff and results. Ask before deploying the fix.Автоматически обнаруживайте сбои
Достаточно добавить одну строку конфигурации, чтобы начать получать сведения о проблемах, обнаруженных в вашем Worker, — дополнительная инструментализация не требуется. Issues встроен в среду выполнения Workers, поэтому не нужно устанавливать SDK или добавлять обёртку для приложения.
После включения Issues регистрирует необработанные исключения, неудачные вызовы, HTTP-ответы 5xx, вывод из console.log() и console.error(), а также логи с трассировкой стека. Кроме того, он отмечает бесконечные срабатывания alarm и код, который записывает большие объёмы логов внутри циклов.
Представьте Worker, обработчик которого начинает выдавать ошибки после развёртывания. У каждого неудачного запроса свой идентификатор, но все они вызваны одной и той же ошибкой. Issues объединяет такие сбои и показывает, когда ошибка возникла впервые, сколько раз она повторилась и становится ли она всё более частой.

Открыв проблему, вы увидите ошибку, трассировку стека, если она доступна, предшествующие ей логи и трассировки, версию Worker, сведения о запросе и динамику проблемы со временем, как показано ниже:

Добавьте контекст к ошибкам для агента
Cloudflare может фиксировать происходящее внутри Worker, но не знает, какие пользователи, аккаунты или сеансы важны для вашего приложения. Используйте встроенный в среду выполнения Worker API OpenTelemetry, чтобы добавить эти идентификаторы без установки дополнительного пакета:
import { tracing } from "cloudflare:workers";
export default {
async fetch(request: Request): Promise<Response> {
const { userId, accountId, sessionId } = await getAuthDetails(request);
const span = tracing.getActiveSpan();
span?.setAttribute("user.id", userId);
span?.setAttribute("account.id", accountId);
span?.setAttribute("session.id", sessionId);
return handleRequest(request);
},
} satisfies ExportedHandler;Эти идентификаторы отображаются при каждом возникновении проблемы. Теперь в карточке проблемы можно увидеть, сосредоточены ли сбои в одном аккаунте или сеансе, прежде чем отправлять её агенту.

Передавайте обнаруженные проблемы агенту
Теперь не нужно оставлять проблему в панели мониторинга, пока кто-нибудь копирует трассировку стека и вставляет её в запрос. Настройте автоматизацию один раз — и, когда число повторений проблемы превысит заданный порог или она возникнет снова после периода затишья, Issues сразу отправит её агенту через автоматизации. Вы можете выбрать, когда запускать автоматизацию и куда отправлять проблему.
Это можно сделать через:
- Встроенные агенты для программирования: подключите Claude Code с помощью идентификатора и токена сценария, Cursor с помощью URL вебхука автоматизации или Devin с помощью токена API и идентификатора организации.
- Универсальные вебхуки: отправляйте контекст проблемы своему агенту или на HTTPS-конечную точку.
- Чаты и управление инцидентами: отправляйте уведомления команде через чат или рабочий процесс дежурной смены.

При запуске автоматизации Issues отправляет сводку о сбое и диагностический контекст, собранный для проблемы: исключение, ошибку, трассировку стека с привязкой к исходному коду, предшествующие и последующие логи и трассировки, версию Worker и добавленный вами контекст приложения. Для более глубокого расследования можно отдельно подключить агента к Cloudflare MCP, который позволит ему запрашивать связанные логи и трассировки, предлагать изменения в коде и тестах, а также открывать pull request.
Вы контролируете, что попадёт в рабочую среду: проверьте pull request, разверните исправление и отметьте проблему как решённую.
Как Issues помог обнаружить и устранить две ошибки в Workflows за один день
Cloudflare Workflows — базовый компонент для приложений с длительным временем выполнения и несколькими этапами — полностью построен на платформе Workers.
Внутренние службы Workflows отслеживают этапы, повторные попытки и сохранённое состояние. Поэтому Workflows стал подходящим местом, чтобы испытать Issues на наших собственных производственных системах. Уже в течение дня после включения этой функции команда обнаружила две необычные проблемы, скрытые в большом потоке запросов.
- Миграция застряла в цикле повторных попыток: при попытке применить миграции в одном редком случае миграция плоскости управления Workflows снова и снова сталкивалась с ошибкой внешнего ключа SQLite. Issues помог команде Workflows выявить и устранить проблему.
- Процесс удаления так и не завершался: команда Workflows обнаружила, что в одном редком случае при удалении экземпляров Workflow могло быть превышено ограничение Workers на количество подзапросов, из-за чего удаление не завершалось. Issues помог команде Workflows выявить проблему и исправить её.
Вместо того чтобы вручную сопоставлять тысячи отдельных фрагментов телеметрии и сообщений пользователей, команда настроила автоматизацию, которая отправляла эти проблемы напрямую в Cloudflare OS. Система проследила ошибки до кода Workflows и предложила исправления для обеих проблем.
Начало работы
Хотите узнать, какие проблемы обнаружит Issues в вашем приложении? Чтобы начать:
- Установите
observability.issues.enabledв значениеtrueв файлеwrangler.jsonc - Настройте первую автоматизацию в панели управления Cloudflare, чтобы отправлять проблемы в нужное место — агенту, на вебхук, в инструмент управления инцидентами или на платформу для чатов.
Если настройку выполняет ваш агент, он также может использовать новый cf CLI для просмотра проблем и создания автоматизаций. Подробнее — в нашей документации!
Cloudflare Blog прочитано 562 раза
