Связаться по:
[email protected]

Блог о системном администрировании серверов и сайтов

Установка, настройка программного обеспечения Linux, Windows операционных систем

Автоматизируем нагрузочное тестирование

Rate this post

В наших с статьях, продолжаем знакомить читателя с методологией работы DevOps, сегодня рассмотрим одну из задач «Автоматизация нагрузочного тестирования». В качестве средства автоматизации будем использовать несколько инструментов: Jmeter,TeamCity, Grafana.

Как выполнялось нагрузочное тестирование

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

нагрузочное тестирование

Негативные моменты данного процесса:

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

Автоматизация нагрузочного тестирования

Зачем изобретать велосипед, если есть готовые решения. В итоге мы решили использовать несколько продуктов для автоматизации тестирования.

Способ хранения данных

InfluxDB была выбрана в качестве системы хранения данных. Данная СУБД имеет возможность (редкую для баз данных) хранения временных данных (таких как события, аналитика, различные метрики). InfluxDB имеет возможность собирать данные «на лету», а использовать данные очень удобно так как есть возможность применять SQL подобный синтаксис.

Основные преимущества:

  • Автоматизация удаления устаревших данных
  • Возможность использования регулярные выражения
  • Умение маштабироваться
  • Поддержка различных языков, через подключение библиотек
  • Проста в установке и поддержке

Посмотрим на примере как можно использовать InfluxDB для хранения изменений. Мы хотим замерять температуры сервера в определенном интервале.

Для этого используем следующие параметры

  • Теги: machine, type
  • Измерение: temperature
  • Поля: external_temperature, internal_temperatre

Для сбора и фильтрации применяются теги, в полях размещаются полученные данные, значения сохраняются в виде комбинации «измерение + тег + timestamp» c определенной точностью. А время хранения данных задается автоматической очисткой.

Такое изменение легко формируется, быстро передается и использует минимум ресурсов.

Мониторинг

Существует достаточно много средств мониторинг, мы решили остановиться на Zabbix. Будем использовать агенты для Linux и Windows серверов. Для виртуальных машин ESXi использована функция autodiscovery.

Обработка

В качестве обработчика полученных данных используем open source проект grafana, он отлично визуализирует, строит графики и шаблоны запросов и дашбордов. Grafana строит запросы для различных источников.

автоматизация тестирования

Итоговая конфигурация

Рассмотрим как все это объединено в одну систему. Основные показатели ОС мониторятся Zabbix, с дополнением скриптов на питоне. Собранные данных хранятся в БД InfluxDB, а отображение происходит в Grafana.

нагрузочное тестирование

Автоматизируем тестирование

Инфраструктура для анализа готова, займемся вопрос автоматизации процесса тестирования. Для этих целей использовали продукт Apache JMeter:

  • умеет эмулировать действия реальных пользователей
  • генерит данные о работе сервера (время обработки запросов и ответов)
  • выполняет отправку результатов в БД InfluxDB для отображения в Grafana

При внедрении автоматизации было необходимо справиться с проблемами:

  • простой способ деплоя этого инструмента на сервер
  • упростить процесс нагрузочного тестирования
  • организовать интеграцию результатов в графику
  • обеспечить онлайн мониторинг выполнения тестирования

Как решить данные задачи:

  • Был разработан скрипт, для выполнения пользовательских действий
  • Тестирование запустили через TeamCity
  • Получили онлайн данные работы продукта в графическом режиме
  • Для обновления скриптов использовали GIT

У Jmeter есть плагин Backend Listener, который может отправлять данные в InfluxDB.

нагрузочное тестирование автоматизация

Результат

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

Необходимо построить процесс разработки, тестирования, внедрения, услуги DevOps администратора, [email protected]

1 Response

  1. Pingback : Особенности нагрузочного тестирования » Администрирование серверов

Оставить комментарий

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.