Меня отругал продакт-менеджер, почему вы не знаете, когда в сети ошибка?

монитор

предисловие

Несколько дней назад в беседе с читателем он сказал, что его отругал продакт-менеджер. Причина в том, что в сети есть ошибка, и, наконец, она известна только по отзывам клиентов.

Я спросил его: ты не следил?

Читатель: Мы — недавно созданная команда предпринимателей.Самое главное на данный момент — это функция кучи, а у многих инфраструктур нет времени на это.

Как говорится, риса можно есть сколько угодно, не следуйте слепо масштабному, великому плану, только правильному. То же самое относится и к мониторингу.Если небольшого решения достаточно и оно может решить проблему, это также очень хороший выбор.

Вот некоторые распространенные методы мониторинга исключений:

минимизация затрат

Если это недавно созданная команда предпринимателей, она может отслеживать отклонения в системе в режиме реального времени с минимальными затратами на внедрение. Так называемая минимальная стоимость реализации может быть достигнута без использования какой-либо трехсторонней структуры.

Об исключениях можно сообщать, скрывая точки вручную.Таким образом, для унифицированного управления лучше всего выдавать предупреждения в том месте, где обрабатываются глобальные исключения.

Как показано в коде:

@ExceptionHandler(value = Exception.class)
@ResponseBody
public ResponseData<Object> defaultErrorHandler(HttpServletRequest req, Exception e) {
   // 记录异常
   // 钉钉或者短信告警
}
图片
картина

Когда в нашем проекте есть глобальная обработка исключений, когда сообщается об основной ошибке, исключение войдет в ExceptionHandler для обработки.В ExceptionHandler мы можем получить информацию о запросе ответа и информацию об исключении через HttpServletRequest, а затем подать сигнал тревоги.

Ненормальная информация о тревоге

Информация об аномальных сигналах тревоги должна быть подробной.Когда аномалия возникает в сети, необходимо устранить проблему как можно скорее. Если нет подробной информации, проблема вообще не может быть воспроизведена, и ее трудно найти и решить.

Информация о тревоге должна иметь следующее содержание:

告警服务:mobile-gateway
负责人:yinjihuan
请求地址:http://xxx.com/xxx/xxx?id=xxx
请求体:{ "name": "xxx" }
请求头:key=value
异常码:500
异常类型:RuntimeException
异常堆栈:java.lang.RuntimeException: com.xxx.exception.ApplicationException: 获取XXX信息失败!

Самое главное это параметры запроса, а ошибку можно воспроизвести только с параметрами. Следует отметить, что при получении тела запроса через HttpServletRequest будет сообщено об ошибке, поскольку поток можно прочитать только один раз.

Когда глобальный класс обработки исключений прочитан, нам нужно разобраться с ним специально.Напишите фильтр для кэширования значения тела запроса.Вы можете украсить HttpServletRequest с помощью org.springframework.web.util.ContentCachingRequestWrapper, а затем получить тело запроса через ContentCachingRequestWrapper.

Минимизируйте затраты + учитывайте производительность

Метод ручного захоронения точек будет подавать сигналы тревоги в реальном времени об исключениях, а затем напрямую отправлять информацию о тревоге, такую ​​​​как SMS-сообщения.Этот процесс является синхронным и более или менее увеличивает время отклика.Однако, если запрос входит в обработку исключений, это доказывает, что запрос не удался Да, это не имеет большого значения.

Хотя влияние невелико, его все же можно немного оптимизировать. Наиболее распространенный метод оптимизации — преобразование синхронных операций в асинхронные, например их помещение в отдельный пул потоков для оповещения, помещение их в очередь памяти и использование отдельного потока для получения предупреждений.

Локальная асинхронность может быть утеряна, и потеря нескольких фрагментов данных мониторинга не является большой проблемой.Если вы не хотите терять, вы можете использовать внешнюю очередь сообщений для хранения информации о тревогах и иметь отдельный потребитель для потребления и аварийных операций.

图片
картина

Единый мониторинг журналов

Способ минимизации затрат может быть реализован всего несколькими десятками строк кода. Плохой момент в том, что такой код должен быть в каждом проекте, да и логика будильника тоже запаролена в коде. .

Думаю, все слышали о EFK и ELK, которые унифицированно собирают журналы и управляют ими централизованно. Каждая система должна записывать аномальную информацию в локальный журнал при возникновении ошибки. Нет необходимости отдельно подавать сигнал об аномалии. Действие по тревоге может выполняться отдельной системой аварийной сигнализации. Система аварийной сигнализации принимает решения на основе собранных журналов. Требуется ли сигнал тревоги, частота сигнала тревоги и т. д.

图片
картина

Унифицированный мониторинг журналов требует создания платформы журналов, а стоимость относительно высока. Конечно, можно использовать и решения с открытым исходным кодом, а также есть коммерческие решения.

Предприятия могут использовать облачные сервисы, которые просты в использовании, имеют быстрый доступ и поддерживают правила оповещения различных размеров, но это немного дорого.

Если вы просто хотите отслеживать исключения, я рекомендую систему отслеживания ошибок с открытым исходным кодом. Sentry — это система отслеживания ошибок в режиме реального времени с открытым исходным кодом, которая может помочь разработчикам отслеживать и исправлять исключения в режиме реального времени. Конечно, у Sentry также есть коммерческая версия.

APM-мониторинг

apm (управление производительностью приложений) В дополнение к подробному мониторингу цепочки вызовов службы и производительности, он также лучше отслеживает аномальную информацию.

Общие приложения включают в себя прогулку по небу, пинпойнт, кошку и т. д. В качестве примера на примере кошки в отчете о проблеме отображается информация об ошибке приложения, а информация об ошибке каждого приложения будет отображаться поминутно на домашней странице кошки.Цвет красный , и когда вы видите кусок красного цвета, это слишком уж ненормально.

图片
картина

Конечно, у кота также есть функция будильника.Нереально полагаться на искусственное время, чтобы увидеть рынок.Когда есть ошибка, своевременная тревога имеет смысл. Если вы хотите узнать больше о кошках, вы можете прочитать мою статью:Tickets.WeChat.QQ.com/Yes/3В настоящее время у вас нет SR2…

Суммировать

Предполагается, что мониторинг исключений с минимальными затратами будет выполнен за один день. Если вы этого не сделаете, вам просто придется ждать, пока вас побьют. Ошибки практически невозможно вывести из-под контроля, а программы неизбежно содержат ошибки. Что нам нужно сделать, так это найти ошибку, как только она появится, а затем устранить ее.

Кодировать слова непросто, если можете, сделайте тройной клик, спасибо!

Об авторе:Инь Цзихуань, энтузиаст простых технологий, автор книг «Микросервисы Spring Cloud — технология полного стека и анализ конкретных случаев», «Практическое и продвинутое введение в микросервисы Spring Cloud», открытый аккаунтобезьяний мирспонсор.

Я собрал очень полный учебный материал, если вам интересно, вы можете поискать в WeChat"обезьяний мир«Отвечает на ключевое слово 'учебные материалы«Получите Spring Cloud, Spring Cloud Alibaba, подтаблицу подбазы данных Sharding-JDBC, структуру планирования задач XXL-JOB, MongoDB, сканеры и другую связанную информацию, которую я разобрал.