мониторинг для QA и разработки при помощи ELKв предыдущем опросе мне прилетела интересная тема про тестовую инфраструктуру -- мониторинг на ELK-стеке. поэтому сегодня расскажу, что это, чем хорошо и что при помощи мониторинга можно понять.
начнем с того, что системы мониторинга строятся для решения задач бизнеса. какие у вашего бизнеса боли и проблемы? что хочется понимать, чтобы работа ускорилась или удешевилась? важные вопросы, которыми стоит задаться, когда планируете начать настраивать такие системы.
например, в нашем проекте есть специальный тул для сообщения о багах прямо во время игры. по нажатию клавиши открывается окно с кнопками популярных проблем, скажем, "я застрял". там же есть текстовое поле, куда можно ввести описание бага. после, по нажатию кнопки, в систему мониторинга отравляется и текстовое описание, позиция игрока и другие данные о нем.
позже, запустив игровой движок, можно посмотреть все точки с багами прямо на карте локации и прочитать описания. все это сделано при помощи интеграции в движок ELK-стека, и сильно улучшает видимость и скорость работы с ошибками.
что же такое ELK? ELK — это популярный набор инструментов для сбора, хранения и анализа данных. их три, но добавляются еще дополнительные, в зависимости от ваших нужд. по буквам E - Elasticsearch, L - Logstash, K - Kibana
Elasticsearch – решение для полнотекстового поиска. оно построено поверх Apache Lucene и имеет дополнительные фичи для удобства использования
Logstash – утилита для сборки логов, их фильтрации и перенаправления конечное хранилище данных. этот механизм обеспечивает конвейер в реальном времени. Logstash может принимать данные из нескольких источников и преобразовывать их в документы JSON
Kibana — приложение, позволяющее брать и искать данные из Elasticsearch и строить наглядные графики.
настройка для разных систем наглядно и понятно описана
здесь.с точки зрения QA можно отслеживать такие метрики:
плотность дефектоввычисляется доля дефектов, приходящаяся на отдельный модуль в течение итерации
назначение метрики: подсветить проблемные части ПО. эта информация поможет при оценке и планировании работ с модулем и при анализе рисков.
причины множества дефектов к каком-то одном модуле бывают разными: некачественные требования, квалификация разработчика, техническая сложность и т.д. в любом случае, эта метрика сразу обратит наше внимание на нужную зону.
коэффициент ошибок, пропущенных в релизколичество ошибок, обнаруженных после выпуска релиза
по отношению к
общему количеству ошибок в ПО, обнаруженных в процессе тестирования и после выпуска
назначение метрики: продемонстрировать качество тестирования и эффективность обнаружения ошибок - какая доля дефектов была отфильтрована, а какая прошла в релиз
допустимый процент ошибок, которые были пропущены, будет зависеть от многих факторов. но если коэффициент получился >0,1 – это плохо. это значит, что каждый десятый дефект не был обнаружен во время тестирования и привел к проблемам в ПО, уже переданном пользователям.
легко использовать мониторинг для отслеживания здоровья ваших автотестов - падений, типичных ошибок и общего состояния кода. нужно только внести в качестве метрик типичные коды ошибок, эксепшены и другие индикаторы проблем.
вот
хорошая статья про другие важные метрики тестирования и разработки.
основные достоинства ELK-стекамасштабируемость – кластер Elasticsearch (ES) расширяется «на лету» добавлением новых серверов. при этом распределение нагрузки по узлам происходит автоматически.
отказоустойчивость — в случае сбоя кластерных узлов данные не потеряются, а будут перераспределены, и поисковая система сама продолжит работу.
операционная стабильность достигается ведением логов на каждое изменение данных в хранилище сразу на нескольких узлах кластера.
гибкость поисковых фильтров, включая нечеткий поиск, возможности работы с восточными языками (китайский, японский, корейский) и мультиарендность, когда в рамках одного объекта ES можно динамически организовать несколько разных поисковых систем.