Автор оригинала: Josh Robins.
Производственные ошибки-одна из худших вещей, которые могут случиться с разработчиками. Они почти всегда неожиданны и внезапны, их трудно воспроизвести. Кроме того, в зависимости от вашей системы мониторинга, вы можете даже не получать уведомления до тех пор, пока не произойдет значительный ущерб. Когда происходит производственная ошибка, результирующий рабочий процесс обычно выглядит следующим образом:
Проверьте серьезность, является ли это полным отключением службы (наиболее критичным) или это просто необычная ошибка, затрагивающая только 1 пользователя.
Просмотрите журналы, чтобы точно определить, какие службы выдают эту ошибку.
Попытайтесь исправить эту ошибку, как правило, путем ее локального воспроизведения. Иногда это довольно сложно сделать из-за различий в системах и средах.
Хотя в принципе этот процесс может показаться простым, его довольно сложно реализовать в реальных производственных системах предприятия. Типичные системы низкого качества обладают следующими атрибутами:
Система не полностью контролируется, и поэтому вы даже не знаете о производственной ошибке, пока клиент не пожалуется.
Либо журналы недостаточно полны, и поэтому вы не можете точно определить, какая часть вашей системы выдает эту ошибку, либо они огромны и их сложно просмотреть, поэтому на поиск ошибки уходит значительное количество времени.
Высококачественная система производственного отладчика обычно позволяет:
Тратьте меньше времени на поиск ошибки и больше времени на ее исправление
Сократите время простоя и повысьте удовлетворенность клиентов
Добавляйте журналы, снимки и показатели в приложение live в режиме реального времени без необходимости каждый раз повторно развертывать эти новые дополнения в конвейере CI/CD (чтобы это не прерывало работу приложения)
Предоставьте полезные показатели и аналитику о приложении
Используйте его, не опасаясь существенного влияния на производительность приложения
Методы тестирования и отладки в производстве
Существует множество различных способов и вариантов выполнения такой задачи на производстве. Как правило, вы хотите выбрать несколько из них и эффективно их выполнить.
Первый из них – затенение (он же зеркальное отображение). Обычно это влечет за собой отправку части производственного трафика во вновь развернутую службу и просмотр того, как она обрабатывает эту нагрузку. Это может быть попытка воспроизвести производственную ошибку/ошибку или метод проверки потенциальных ошибок еще до того, как они произойдут.
Второй – мониторинг и ведение журнала. Ведение журнала-это место, где значения определенных переменных выводятся на консоль или сохраняются для отладки. Мониторинг, с другой стороны, отображает, сохраняет и анализирует производительность запущенного приложения. Это может быть особенно полезно при удаленной отладке , так как помогает, когда команды находятся далеко друг от друга и не могут работать вместе в одном и том же месте.
Третий-это распределенная трассировка . Это нацелено на более современные крупномасштабные архитектуры, которые используют микросервисную архитектуру вместо монолитной. Отладка микросервисов может быть затруднена из-за их распределенного характера. Вот тут-то и появляется распределенная трассировка.
“Распределенная трассировка, иногда называемая трассировкой распределенных запросов, – это метод мониторинга приложений, построенных на архитектуре микросервисов… Это позволяет им выявлять узкие места, ошибки и другие проблемы, влияющие на производительность приложения. “— Шлепок
Отладка и мониторинг производственных инструментов
1. Легкое бегущее облако
Light run Cloud – это бесплатный производственный отладчик. Он работает, определяя, куда вы хотите добавить журнал, метрику или снимок с помощью интегрированной среды разработки или интерфейса командной строки. Затем вы можете добавить любой из них во время выполнения, не прерывая работу приложения. После этого вы можете легко просмотреть журналы и исправить ошибку. Это обеспечивает эффективный способ отладки запущенного приложения в рабочей среде без ущерба для работы с клиентами. Это также дает разработчикам гибкость в выборе способа добавления журналов и предоставляет простые в использовании плагины для добавления журналов, как показано здесь:
Легкий пробег в основном обеспечивает 3 различных функции:
Журналы: После добавления журналов разработчики могут изучить и проверить анализ журналов в инструменте по своему выбору, таком как Datadog или Elastic , для дальнейшей проверки , или они могут просто регистрировать их локально.
Моментальные снимки: Они более полные, чем журналы; они фиксируют полную трассировку стека и данные.
Метрики: Он обеспечивает поддержку условных метрик, таймеров, времени выполнения между определенной частью кода, измерения задержки и многого другого.
2. Метрики: Он обеспечивает поддержку условных метрик, таймеров, времени выполнения между определенной частью кода, измерения задержки и многого другого.
Logz предоставляет решение для централизованного управления журналами. Он обрабатывает масштабирование, сегментирование и управление индексами, перемещает старые журналы в хранилище с помощью интеллектуальной системы, чтобы вам не пришлось просматривать тонны журналов. Он также сопоставляет журналы и показатели, чтобы вы могли понять, как были созданы эти показатели. Он также предоставляет обширные панели визуализации и мониторинга.
Logz предоставляет более 50+ интеграций для подключения к любому источнику данных. Вам не нужно создавать свою собственную панель мониторинга данных; вы можете просто развернуть существующую, предоставленную ими. Кроме того, вы можете анализировать все свои данные в Kibana и Прометей бок о бок. Кроме того, Logz использует ИИ для своевременного выявления проблем до того, как они действительно приведут к простою. Это, по сути, привносит знания и опыт других инженеров в ваш процесс устранения неполадок.
Источник: Источник:
3. Журнал данных
Datadog предоставляет возможности как отслеживания, так и мониторинга. Он обладает полным набором функций, таких как управление журналами, мониторинг безопасности, синтетический мониторинг и мониторинг реальных пользователей. Кроме того, он предоставляет инструмент APM (мониторинг производительности приложений), который можно легко использовать в приложениях Java.
APM Datadog отслеживает запросы из конца в конец, особенно когда это становится сложным в распределенных системах. Он также отслеживает взаимодействие пользователей от начала до конца с помощью веб-регистратора, чтобы разработчики могли легко увидеть, где что-то пошло не так со стороны пользователя. Кроме того, он соотносит производительность внешнего интерфейса с влиянием на бизнес, визуализируя время загрузки и разделяя данные по пользовательским атрибутам. Таким образом, даже если предстоит пройти через множество ошибок, разработчики могут начать с исправления наиболее острых из них.
Вывод
Последнее замечание, которое следует здесь сделать, заключается в том, что распространенной ошибкой разработчиков является использование большого количества инструментов отладки и мониторинга. Это может фактически увеличить время и ресурсы отладки вместо их уменьшения. Поэтому вы должны быть осторожны и стратегически подходить к выбору инструментов. Как правило, некоторые инструменты позволяют сохранять журналы и результаты более кратким и точным способом, чем другие. Вам также, вероятно, следует хорошенько подумать о количестве инструментов, которые вы хотите интегрировать в свое приложение, и о том, какой след они, вероятно, оставят после себя. Для каждого инструмента вы должны учитывать множество факторов, таких как стоимость, ценность, которую он обеспечивает, простота его использования и объем хранилища, который ему потребуется.
Фото на обложке Нубельсон Фернандес вкл Unsplash
Оригинал: “https://www.codementor.io/@jons/java-production-debuggers-to-save-time-and-resources-1kfealt5bj”