Все действия проводились на "AMI Linux 2", если выполнять на другом дистрибутиве, вам будет нужно установить Java и Git, остальные шаги будут такими же.
Устанавливаем Java OpenJDK:
sudo amazon-linux-extras install java-openjdk11
Так же устанавливаем Git:
yum install -y git
Клонируем репозиторий и переходим в него:
git clone https://github.com/feangulo/graphite-stresser
cd graphite-stresser
Перед сборкой нужно поправить версию Gradle на актуальную
vim gradle/wrapper/gradle-wrapper.properties
#distributionUrl=https\://services.gradle.org/distributions/gradle-2.9-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-6.2.1-all.zip
Собираем:
./gradlew uberjar
Для удобства скопируем собранный jar файл с другим именем:
cp build/libs/graphite-stresser-0.1.jar ./graphite-stresser.jar
Запускаем тест:
java -jar graphite-stresser.jar 172.31.22.196 2003 1 128 10 false
Где:
- 172.31.22.196 — IP адрес Graphite инстанса
- 2003 — порт (UDP, с TCP этот тестер не захотел работать)
- 1 — количество хостов (симуляция нескольких хостов, публикующих метрики)
- 128 — numTimers (сколько метрик будет генерироваться. [1, 2, 3, 4, 5, 10, 20, 64, 128, 256, 384, 650, 975, 1956, 3912, 4887, 7824, 9780, 13699])
- 10 — как часто будут генерироваться (секунды)
- false — выключить дебаг (можно смело отключать, при возникновении ошибок они будут выводится в консоль. Параметр для включения — true)
Для мониторинга количества метрик можно в Grafana импортировать этот дашборд.
Так же нужно обратить внимание на I/O и нагрузку CPU. Так как Whisper требователен к I/O, а carbon-cache не все запросы может распараллелить, и за частую все выполняет в одном потоке. Если у вас бутылочным горлышком является CPU, то стоит присмотреться к реализации Carbon на Go — go-carbon
Для Go-Carbon данный дашборд не будет показывать метрики, так как они отличаются от Python версии. Для Go-Carbon вы можете воспользоваться следующим дабордом