Введение
В этой статье будет объединена работа по описанию четырех аспектов предыстории, дизайна, реализации и мышления в процессе создания фронтальной системы мониторинга Sentry.
задний план
что такое мониторинг
В буквальном смысле мониторинг включает в себя два аспекта: мониторинг, мониторинг – это код; контроль, контроль качества. Мониторинг — это инструмент, а не цель.Это не мониторинг функций, а реальное понимание рабочего состояния страниц с помощью мониторинга, чтобы достичь цели контролируемого качества выполнения кода.
Мониторинг отличается от статистики.Статистика фокусируется на сумме условий доступа за период времени.Требования к реальному времени не столь высоки, а отчеты могут быть отсроченными и кумулятивными.Наоборот,мониторинг фокусируется на ситуации, когда страница это работает.
С точки зрения всего интерфейса есть много сценариев мониторинга. Например, сервер контролирует устойчивость и производительность интерфейса; клиент мониторирует сбой и производительность приложения; для веб-фронта, он уделяет больше внимания производительности и отчетности об ошибках во время онлайн-среды.
Мониторинг полезен как в сети, так и в автономном режиме. В автономном режиме мы можем поддерживать автоматическое тестирование и обнаруживать некоторые очевидные ошибки при запуске кода перед переходом в онлайн. Это можно использовать в качестве эталона для автономной защиты от деградации. Онлайн-среда более сложна: разные регионы, устройства, сети, платформы просмотра и многие другие факторы могут привести к неоднозначным результатам, когда один и тот же код выполняется в разных средах. Мы хотим понять эти ситуации и оценить, где страница нуждается в оптимизации.
Причина постройки
Существующие статистические платформы компании, такие как Thunder, spy и другие общие платформы, могут собирать показатели производительности и информацию об исключениях переднего плана, но большая часть собранной информации об исключениях используется в статистических целях. конкретные ошибки.
Так же есть особенность фронтенда, статические ресурсы будут обфусцированы и сжаты.При неправильной операции полученная информация стека ошибок не будет иметь большого значения, только первая строка сообщит об ошибке хх.Предполагая наличие исходной карты , мы можем использовать только Chrome Devtools Давайте посмотрим, где ошибка, но нам часто трудно воспроизвести ошибку, о которой сообщается в Интернете.
дизайн
выбор плана
Давайте сначала представим функцию Sentry.
Sentry — это централизованная система управления журналами. Можно сделать следующие вещи, и это хорошее место для этого по сравнению с другими системами.
- Богатый SDK. Разные языки и разные проекты интегрируют SDK. Взяв за пример JS, он не только собирает подробную информацию об устройстве пользователя, но и записывает поведение пользователя при работе.При нажатии кнопки XX сообщается об ошибке.
- В соответствии с собранными данными выполняется настройка сигнализации для реализации замкнутого цикла мониторинга.
- Поддержка функции меток, например, мы можем единообразно перехватывать ошибки, добавлять помеченные CUID и позже фильтровать ошибки с помощью CUID в фоновой платформе.
- Простой в эксплуатации бэкенд. Sentry предоставляет набор систем фонового управления, которые просты и удобны в эксплуатации.
- Поддержка API. Все операционные интерфейсы предоставляют услуги API, и пользователи могут настраивать интерфейс на основе API.
- Активное сообщество. Команда Sentry очень активна на Github, как упоминалось ранее, проблемы решались в основном в тот же день.
Давайте посмотрим на K8S
Прежде всего, давайте поговорим о популярном Docker (движок контейнера приложений с открытым исходным кодом).У Docker есть слоган: Build Once, Run Anywhere. То есть среду можно скомпилировать и выпустить один раз, и она может быстро работать в любая среда, поддерживающая Docker. , что решает проблемы нашей повседневной среды развертывания. Однако, когда вы попрактикуетесь, вы обнаружите, что применять Docker к конкретным бизнес-реализациям сложно — его нелегко организовывать, управлять и планировать. Поэтому K8S (полное название: kubernetes, контейнерная платформа управления кластерами) появилась на свет и используется в большом количестве практических проектов.
Представляем облако Baidu.
Реклама собственной платформы облачных сервисов: Baidu Cloud. Baidu Cloud предоставляет обширную поддержку базовых услуг, таких как мощная контейнерная служба CCE, служба разрешения и распределения доменных имен ITM и служба анализа данных Sugar. Мы можем быстро достичь того, чего хотим, благодаря услугам, предоставляемым Baidu Cloud.
- CCE обеспечивает базовую среду контейнера K8S.
- Интеллектуальное планирование разрешения доменных имен ITM поддерживает выбор машин в разных компьютерных залах в соответствии с разными регионами и сетями.
- Sugar может создавать настраиваемые отчеты методом перетаскивания на основе данных базы данных.
Общая структура
Сам Sentry поддерживает как развертывание исходного кода, так и развертывание контейнера (Docker, K8S).Учитывая стабильность, он хочет реализовать практические задачи, такие как развертывание на нескольких компьютерах в нескольких комнатах, балансировку нагрузки и интеллектуальное планирование.На основе службы K8S, предоставляемой Облако Baidu, контейнеризация Sentry развернута, как показано на рис. 1.
Рис. 1. Архитектура облачного развертывания Sentry Baidu
В сочетании с бизнесом продолжайте смотреть на положение Senty в общем проекте, как показано на рисунке 2.
Рисунок 2: Общая структура проекта
Сервис Sentry в этой архитектуре имеет ряд преимуществ:
- Сэкономьте много рабочей силы. Основываясь на эксплуатации и обслуживании Baidu Cloud K8S, устраняются трудозатраты, такие как ежедневная эксплуатация и обслуживание машины, база данных, планирование трафика и т. д.;
- Сохраните много машин. Эксплуатация и техническое обслуживание K8S, машина может динамически увеличивать и уменьшать мощность в зависимости от ситуации в бизнесе;
- Основываясь на проектах с открытым исходным кодом, сообщество богато, проблемы обсуждаются в группах, и проблемы решаются быстро;
- Охватывая широкий спектр предприятий, основные службы обеспечивают возможности сбора и анализа данных, а уровень доступа можно настраивать.
выполнить
Платформа расчесывает четкий процесс на основе вышеизложенного и вскоре застраивается. Но в тестовом запуске платформы, чтобы жить, каждый аспект мониторинга с разной степенью воздействия, за исключением некоторых проблем. Для каждой части процесса мониторинга мы еще раз провели дальнейший анализ и оптимизацию. Будут описаны следующие ключевые области.
отчет
Отчетность по мониторингу информации в основном зависит от SDK. Взяв в качестве примера внешний интерфейс, Sentry сам предоставляет SDK, который необходимо загрузить в первую очередь в процессе загрузки страницы, чтобы зафиксировать как можно больше ошибок.
|
На практике обнаруживается, что упакованный sentry.js имеет около 20 К. Если его разместить вверху, это будет катастрофой для страниц, преследующих производительность страницы, потому что загрузка JS вверху заблокирует отрисовку страницы. Поэтому для этой ситуации выполняется постоптимизация SDK.
|
- Настраиваемый перехват ошибок и ошибок обещаний, а также унифицированные отчеты об ошибках после загрузки страницы.
- Расширьте sentry.js, обновите его до sentry.plus.js, поддержите сбор обнаруженных исходных ошибок и подробных отчетов.
Благодаря преобразованию SDK проблемы производительности страницы значительно снижаются, и сервис Sentry можно использовать с большей уверенностью.
Коллекция журнала
После интеграции SDK сбор журналов осуществляется через запрос интерфейса POST. Когда страница запущена, если сообщается об ошибке, она автоматически запускает отправку данных через интерфейс.
В настоящее время вопрос о поддержке выборки стал проблемой, которую необходимо рассмотреть. Потому что если нет выборки и при этом ловится большой бизнес-объем, то с большой вероятностью сработает функция сбора логов, и будет сообщено большое количество логов, но полезной информации будет меньше. На этот раз сэмплирование решает эту проблему. Сам SDK поддерживает выборку, при инициализации требуется только простая настройка.
|
Эта выборка относится к вероятности того, следует ли сообщать об ошибке каждый раз, когда ошибка возникает во время выполнения проекта. Однако для страниц, которые нацелены на производительность страницы, обычно желательно, чтобы SDK обращался с небольшим трафиком. Влиять на все страницы как можно меньше. Наша текущая страница основана на первом отображении экрана шаблона Php Smarty, поэтому метод отчетности и сбора данных был изменен:
|
Благодаря преобразованию влияние кода мониторинга на бизнес еще больше снижается, а доступ к бизнесу становится более удобным.
хранилище журналов
Сам Sentry использует PostgreSQL.При развертывании K8S база данных настраивается здесь для использования службы базы данных, предоставляемой Baidu Cloud.
|
Стоимость базы данных также достаточно высока и составляет 1/3 от общего потребления ресурсов. Чем больше услуг используется, тем больше объем хранимых данных.Место 50G, купленное в начале, скоро будет заполнено.
Нужны данные или нет, я их проанализировал: данные самого отчета об ошибке, особенно подробную информацию о каждой ошибке, хранить так долго не нужно, но содержание отчета характер, таких как годовое соотношение общего отчета об ошибках, его необходимо сохранять раньше предыдущих результатов.
Первый метод, практика местных тиранов: расширение базы данных, дальнейшее увеличение инвестиционных покупок. Это вход в бюджет;
Второй способ: По существующему собрать неверный контент, подсчитать результаты отчета и сохранить их отдельно, а затем регулярно чистить базу.Например, можно запустить скрипт для периодического запроса данных 10 дней назад.
Вот небольшой эпизод: Sentry официально предоставляет API для очистки базы данных, которую можно очистить командами:
|
Несмотря на то, что данные были очищены, обнаружено, что емкость базы данных PG не была освобождена, поскольку команда удаления очистки используется для удаления данных postgresql, но postgrdsql помечает соответствующую строку как DEAD только для таких операций, как удалять и обновлять, и места на диске толком не освобождает. Полностью очистите его с помощью следующей команды.
|
Отчеты показывают
前面也提到过,Sentry提供了简单友好的后台管理系统。项目概况中,可以体现数据的报表展现。 Рисунок 3.
Рисунок 3: Дисплей рынка
В процессе практики, особенно при отчете перед начальником, я обнаружил, что одного только такого доклада-презентации недостаточно. После расследования выяснилось, что Baidu Cloud предоставляет сервис Sugar. Вы можете напрямую подключиться к базе данных, настроить агрегацию данных для нужных данных и создать соответствующие отчеты. Этот спрос на продукцию все еще исследуется, но эффект от продукции очень многообещающий. Содержимое конфигурации показано на рисунке 4, а ожидаемый эффект показан на рисунке 5.
Рисунок 4: Содержание конфигурации
Рисунок 5: Ожидаемые эффекты
Тревога монитора
В качестве замкнутого цикла мониторинга мы можем установить оповещения по электронной почте в соответствии с различными правилами в фоновом режиме Sentry. Служба электронной почты, официально предлагаемая Sentry, также постоянно меняется.Первоначальный Exim4 был заменен на mailgun.Учитывая стоимость, мы, наконец, выбрали docker для сборки Exim4, а затем содержимое электронной почты прошло приложение для группы безопасности электронной почты компании и белый список. был выпущен для отправки электронной почты.машина. Наконец, реализована функция своевременного оповещения бизнеса об ошибках. Эффект показан на рисунке 6.
Рисунок 6: Эффект мониторинга
Выше приведены некоторые из проблем, возникающих на критическом пути в конкретном процессе практики, которыми мы поделились с вами.
думать
Смысл мониторинга
выгода
Цель компании – получение прибыли. С одной стороны, компания хочет контролировать расходы, и мы видим, что инвестиции в QA-персонал все больше сокращаются, а с другой стороны, код, который мы запускаем онлайн, должен быть более стабильным.Что можно сделать? Эффективным методом является усиление контроля.
эффективность
Благодаря мониторингу проблемы могут быть выявлены быстро и автономно.
Собранные данные могут быть классифицированы и отфильтрованы, а затем может быть установлено уведомление о тревоге. В соответствии с нашим контентом для мониторинга устанавливаются различные пороговые значения.При достижении порогового значения соответствующий персонал по исследованиям и разработкам эффективно уведомляется как можно скорее для анализа и ремонта.
Благодаря мониторингу вы можете полностью понять работу страницы.
Благодаря сбору информации вы можете получить базовую информацию о пользователе, такую как регион, модель и версия приложения, к которым обращается пользователь, и в то же время вы также можете собирать данные о производительности страницы во время ее работы. это деньги (скорость открытия в определенной степени повлияет на пребывание пользователя. ).
Посредством мониторинга можно направлять дальнейшую разработку проекта.
После периода осадков мы собрали ошибки, вы можете сделать выписку, статистику, причину, ошибку, решения проблем за определенный период времени.
Технические характеристики
С точки зрения процесса НИОКР (как показано на рисунке ниже) наш проект не завершен и все будет хорошо. Необходимо следить за онлайн-работой страницы, проводить своевременный пересмотр и итеративную оптимизацию по отслеживаемым данным, а также формировать замкнутую экосистему НИОКР.
Значение вышеуказанного мониторинга является руководством для механизма процесса в будущем, кодексом поведения для студентов, занимающихся исследованиями и разработками, и одним из ориентиров для начальников и старших инженеров для принятия решений в определенные критические моменты. Благодаря мониторингу, более интуитивно понятное и всестороннее трехмерное понимание продукта.
Китайско-тайваньская стратегия
Средний Тайвань — это недавнее стратегическое направление компании с точки зрения технологий. я считаю:Мониторинг может выводить решение промежуточного офиса, и каждый отдел может настроить расширение на основе сервиса промежуточного офиса..
Фактически, система Sentry, которой мы здесь делимся, может быть экспортирована в качестве мидл-офиса внутри компании. Каждый отдел может настроить SDK в соответствии с бизнесом, а также настроить отчеты и сигналы тревоги в соответствии с требованиями к данным. Весь черный ящик Sentry предоставляет услуги API для внешнего мира.Из-за удобства, предоставляемого K8S, соответствующему отделу необходимо только предоставить бюджет, подать заявку на машину и добавить или уменьшить ее в K8S.
На самом деле на рынке существует множество различных типов инструментов мониторинга. Например: frontjs, arm, Yueying и т.д., но, к сожалению, установлено, что большинство из них заряжены. Для продуктов уровня компании объем данных относительно велик (но инвестиции в эту область часто того стоят), а иногда вывод данных идет медленно, и результат часто заменяется новыми продуктами поэтапно. -конечные платформы мониторинга на заводе. , такие как: навес и т. д., каждое звено в процессе мониторинга, такое как сбор данных, хранение, фильтрация, отображение и сигнализация, требует рабочей силы и финансовых ресурсов, и им все еще не хватает некоторых идеи на средней стадии.
Суммировать
На протяжении всего процесса построения и внедрения мониторинга я, с одной стороны, полностью осознал удобство, которое технология, предоставляемая облачными сервисами, привносит в продукт, что должно быть направлением будущего; с другой стороны, технология, которая отделена от бизнес ненадежен, а технология служит бизнесу, технология, которую мы внедряем, должна быть проверена в бизнесе, чтобы продвигать технологию, чтобы она была более совершенной и решала практические проблемы бизнеса.