pebrc / hey-apm

Basic load generation for apm-server built on hey

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Build Status

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.12.1.

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:

  • scripts/jenkins/unit-test.sh
  • scripts/jenkins/run-bench-in-docker.sh

Requirements

Run scripts locally

  ./scripts/jenkins/unit-test.sh 1.12.1

How to run locally the hey-apm using a docker-compose services

Run scripts/jenkins/run-bench-in-docker.sh

Configure the ES stack

Run ELASTIC_STACK=<version> scripts/jenkins/run-bench-in-docker.sh

Configure the ES stack where to send the metrics to

Run ELASTIC_STACK=<version> ES_URL=<url> ES_USER=<user> ES_PASS=<password> scripts/jenkins/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.

About

Basic load generation for apm-server built on hey

License:Apache License 2.0


Languages

Language:Go 78.3%Language:Groovy 9.7%Language:Shell 6.1%Language:Python 4.8%Language:Dockerfile 1.1%