Overview
hey-apm is a basic load generation tool for apm-server simulating different workloads.
Back in the intake V1 days it was based on hey,
but now it uses the Go APM agent to generate events.
hey-apm generates performance reports that can be indexed in Elasticsearch.
It can be used manually or automatically (ie. in a CI environment)
Requirements
hey-apm requires go modules support. Tested with go1.14.4.
Install
go get github.com/elastic/hey-apm
Docker build
docker build -t hey-apm -f docker/Dockerfile .
Usage
Run ./hey-apm -help
or see main.go
CI
The Jenkinsfile
triggers sequentially:
.ci/scripts/unit-test.sh
.ci/scripts/run-bench-in-docker.sh
Requirements
Run scripts locally
./.ci/scripts/unit-test.sh 1.14
How to run locally the hey-apm using a docker-compose services
Run .ci/scripts/run-bench-in-docker.sh
Run ELASTIC_STACK=<version> .ci/scripts/run-bench-in-docker.sh
Run APM_DOCKER_IMAGE=<docker-image> .ci/scripts/run-bench-in-docker.sh
Run ELASTIC_STACK=<version> ES_URL=<url> ES_USER=<user> ES_PASS=<password> .ci/scripts/run-bench-in-docker.sh
Known issues
- A single Go agent (as hey-apm uses) can't push enough load to overwhelm the apm-server,
as it will drop data too conservatively for benchmarking purposes.