- PVSM.RU - https://www.pvsm.ru -
Изображение: Flickr [2]
В нашем блоге на Хабре мы продолжаем рассказывать о построении DevOps-культуры в компании — например, в одном из последних топиков мы описывали [3] то, какие задачи решаем с помощью системы SaltStack. Сегодня речь пойдет о другой интересной теме — автоматизации нагрузочного тестирования с помощью связки нескольких готовых инструментов.
Нам нужно было мониторить серверы, на которых проводилось нагрузочное тестирование — собирать метрики производительности процессора, памяти, операционной системы и т.п. Также необходимо было отслеживать состояние баз данных, шины и очередей, также иногда нужно было иногда работать с логами. Все эти задачи решались Python-скриптами нашей собственной разработки, информация хранилась в SQLite-базе, а отчеты формировались с помощью CSV-файлов.
Вот эта схема:
Минусы такого подхода:
В конечном итоге мы отказались от собственных велосипедов и решили воспользоваться плодами чужих трудов. В итоге родилась новая связка из нескольких инструментов.
В качестве системы хранения данных был использован продукт InfluxDB. Это одна из немногих СУБД, созданная для хранения временных рядов (метрик производительности, аналитики, событий). Она умеет агрегировать данные на лету, также системой легко пользоваться благодаря тому, что в ней применяется SQL-like синтаксис. Из других плюсов:
Рассмотрим пример использования InfluxDB для измерений. Допустим, нам нужно измерить температуру машины X типа Y в интервале времени.
Для этого у нас есть параметры:
Теги используются для агрегации и фильтрации, в полях помещаются данные для хранения — они не индексируются, хранится только одно значение для комбинации «измерение + тег + timestamp», задается временная точность (с, мс, мкс, нс). Длительность хранения данных задается политикой очистки.
Вот как будет выглядеть измерение:
temperature, machine-unit42,type=assembly internal=32, external=100 1434055562000000035
Его легко сформировать, легко передать и для этого не требуется больших затрат ресурсов.
В качестве средства для мониторинга мы решили использовать Zabbix. Применяем кроссплатформенные агенты на Windows и Linux-хостах. Используются как пассивные, так и активные проверки. Через активные проверки реализован сбор метрик с хостов из закрытых сетей. Кроме того, мы активно использовали функцию autodiscovery для виртуальных машин на хостах с ESXi.
Инструментом для анализа данных применяется открытый проект grafana — он отлично подходит для создания дашбордов, построения графиков и шаблонизации запросов и дашбордов. Система умеет строить запросы для разных источников данных — тех же InfluxDB, Zabbix, Elasticsearch и т.п. Вообще продукт действительно удобный — можно создавать подписи к записям и плейлисты, осуществлять поиск по дашбордам, производить экспорт и импорт данных.
Ну и нельзя не упомянуть интерфейс, который не заставляет глаза кровоточить (привет, Zabbix).
После рассмотрения элементов системы, поговорим о том, как это все в итоге работает вместе.
Все важные метрики операционной системы и железа мониторятся с помощью Zabbix, а также при помощи модернизированных скриптов-коллекторов на Python. Метрики, собранные скриптами хранятся в InfluxDB, информация отображается в Grafana.
Подготовив инфраструктуру, мы занялись вопросами автоматизации тестирования. Для этого был использован продукт Apache JMeter. Вот для чего он нужен:
На пути его внедрения необходимо было решить несколько проблем.
Вот, что мы сделали для их решения:
Вот так выглядит интерфейс запуска задачи тестирования в TeamCity:
Для отправки данных в InfluxDB у Jmeter есть встроенный плагин (Backend Listener)
В настоящий момент процесс нагрузочного тестирования представляет собой запуск задачи в TeamCity — нужно лишь выбрать нужные параметры при старте. Далее статистические данные по работе UI отображаются сразу в виде готовых интерактивных графиков. Обновленные скрипты автоматически подтягиваются через Git в TeamCity.
P.S. Рассказ о нашем опыте использования SaltStack был представлен в рамках DevOps-митапа, который состоялся осенью 2016 года в Москве.
Видео:
Слайды:
По ссылке [4] представлены презентации 16 докладов, представленных в ходе мероприятия. Все презентации и видео выступлений добавлены в таблицу в конце этого топика-анонса [5].
Авторы: Иван Останин, Сергей Тихонов
Автор: Positive Technologies
Источник [6]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/razrabotka/236639
Ссылки в тексте:
[1] Image: https://habrahabr.ru/company/pt/blog/320228/
[2] Flickr: https://www.flickr.com/photos/figushki/227716858/
[3] описывали: https://habrahabr.ru/company/pt/blog/318128/
[4] ссылке: http://www.slideshare.net/phdays
[5] топика-анонса: https://habrahabr.ru/company/pt/blog/310584/
[6] Источник: https://habrahabr.ru/post/320228/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.