Как мы подбирали ключи. Внедрение мониторинга APM Ключ-Астром

99c1eba00f76ff3d3cb9feb281625120.jpg

Краткая справка: Ключ-Астром — система мониторинга класса АРМ (application performance monitoring). Штука платная, лицензируется по объему оперативной памяти на серверах приложений и по сессиям мобилок или веб-приложений.

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

Используется для:

  • Сквозного транзакционного мониторинга

  • Поиска первопричины сбоя

  • Узких мест

  • Поиска наиболее медленно выполняющейся операции в цепочке

  • Сбора клиентского пути (клиентского опыта)

  • Сравнению работы новых релизов с текущим PROD-ом.

История: В 2021 году мы очень удачно отыграли конкурс, где Ключ-Астром победил AppDynamics. Если бы получилось наоборот, то в 2022 году наш АРМ превратился бы в тыкву)

Процесс внедрения: Внедрение прошло не сложно. Отказоустойчивый кластер на 3 ЦОД-а собрали. «Прокси» раскидали по подсетям. Установка агентов не заняла много времени, но для нормальной работы нужно перегружать приложения. Сами агенты тут называются Едиными, что означает, что они унифицированы для всех поддерживаемых технологий и внедряются сами, автоматически. На высококритичных системах, в нашем случае, приходилось ждать по неделе и больше для того, чтобы попасть в технологическое окно для перезапуска приложения.

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

Также на первых порах возникают вопросы со стороны ИБ. Они сильно возбуждаются на установку агентов под root-правами. Но дальше агент работает и обновляется в non-root

С обучением персонала чуть сложнее. Система как книга «Шантарам», кому-то понятна и проста, а у кого-то есть проблемы с восприятием. Хотя UX/UI более-менее понятный. Так что нужно несколько итераций, чтобы загнать ключевых людей из 2–3 линии поддержки в Ключ.

Далее идет настройка алертов. В нашем случае мы настраивали алерты в корпоративный мессенджер. И начинается работа с «серым шумом». В некоторых случаях нужно настроить частоту проверок, а часто нужно собрать фактуру и идти в разработку чтобы они подумали, почему их так «колбасит».

На картинке представлен вид с проблемами (событиями) за 24 часа

080cf24e78bbea82c42f0341dc81ece1.png

При хорошо настроенной системе очень приятно видеть e2e-транзакции с участием многих систем. И поиск точек отказа и узких мест сильно упрощается.

Также есть интересные медийные вещи, которые помогают с постмортом. Выглядит, конечно, сладенько, но когда у вас массовый инцидент затронул 15 систем — и все они на мониторинге, то этот фильм по тому откуда все началось, как развивалось и как затухало можно пересматривать много раз)) Посмотрите это на видео.

Самая трудоёмкая задача — это настройка сбора клиентского опыта.

Для чайников: это сбор времени начала и конца пользовательских операций, получения кодов ошибок. Используется как бизнесом для дальнейшего анализа и создания реакций менеджеров на определенные действия (как пример мониторинг ошибок VIP-клиентов) или на превышение времени выполнения операций. Самый простой пример — время авторизации (ошибки), загрузка основного экрана с продуктами.

И чтобы это качественно настроить, надо пройти страшных людей под названием ИБ. Настроить прохождение WAF-а, побиться, чтобы нигде не резались header-ы. У нас это заняло прямо очень много времени, несколько раз присоединялся бизнес, чтобы ускорить ИБ.

Чтобы все это хорошо работало, в большинстве случаев нужна помощь разработки. Действия автоматом попадает в систему, но как вы поймете, что имел в виду разработчик, назвав это beatle.juice.002? Так что собираете пожелания от бизнеса и закидываете в бэклог разработчикам. И после этого волшебным образом появляются действия «Выдача кредита» или другие операции с временем выполнения и кодами ошибок «три раза неправильно ввел пароль»).

Что делать с этим клиентским опытом?

Мы через elastic выгружаем его в корпоративное хранилище, где с ним могут работать аналитики от бизнеса.

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

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

Пример Трейса

4c6d5aab14e56331d8d3f21216392e9a.png

Какие неожиданные возможности еще дает система?

  • Мы её использовали, чтобы искать dblinks.

  • Иногда очень помогает возможность посмотреть, какой сервис в какой момент времени кушает CPU, RAM или генерирует много трафика.

  • Один раз система помогла найти Garbage collector, который при запуске укладывал систему.

  • То есть их система поиска первопричин проблем действительно работает.

    Матрицу использования системы в нашей компании можно представить так:

    a2fbb8da502b5653d7c294107def5cb3.png

Какие интересные аспекты работы системы мы открыли при использовании?

Есть старые системы, которые автоматом не залетают на мониторинг. Самый простой пример — старый Siebel, у которого на фронте java, а на бэке C#. Фронт прекрасно мониторится, а вот бэк — черный ящик. И тут каждый сам решает, что с этим делать. Отключить бэк или разметить его, приложив определенные усилия разрабов.

Систему можно использовать на внутренних web-приложениях, где все хотят видеть «яндекс.метрику», но ИБ не дает ее туда пустить. Система выдает все то же после настройки, только не грузит так сайт. И как плюс — каждую пользовательскую операцию можно разобрать по маршрутам её прохождения (оттрассировать ее).

Последние новости — появились плагины для расширенного мониторинга БД и сети, модуль поиска уязвимостей. БД успели посмотреть, выглядит интересно, но серьезных выводов пока не готов озвучивать, пилоты на реальных системах впереди.

Если все звучит слишком хорошо, помните, система платная и требует настройки. Но опенсурс требует еще большей настройки)

З.Ы. За подготовку статьи спасибо Альберту и Людмиле!

© Habrahabr.ru