Skip to content

ArpNetworking/metrics-generator

Repository files navigation

Metrics Generator

License: Apache 2 Travis Build Maven Artifact

Generates realistic-looking metrics data for use in system testing.

Usage

Integrated Library

Add Dependency

Determine the latest version of the commons in Maven Central.

Maven

Add a dependency to your pom:

<dependency>
    <groupId>com.arpnetworking.metrics</groupId>
    <artifactId>generator</artifactId>
    <version>VERSION</version>
</dependency>

The Maven Central repository is included by default.

Gradle

Add a dependency to your build.gradle:

compile group: 'com.arpnetworking.metrics', name: 'metrics', version: 'VERSION'

Add the Maven Central Repository into your build.gradle:

repositories {
    mavenCentral()
}
SBT

Add a dependency to your project/Build.scala:

val appDependencies = Seq(
    "com.arpnetworking.metrics" % "metrics" % "VERSION"
)

The Maven Central repository is included by default.

Invocation

The following function generates the specified data. Specify:

  • The number of units of work.
  • The number of unique metrics (aka names).
  • The number of samples per metric per unit of work.
public void generate(final int uowCount, final int metricsCount, final int samplesCount) {
        final RandomGenerator random = new MersenneTwister(1298); // Just pick a number as the seed.
        final Path path = Paths.get("build/tmp/perf/application-generated-sample.log");

        final DateTime start = DateTime.now().hourOfDay().roundFloorCopy();
        final DateTime stop = start.plusMinutes(10);
        final TestFileGenerator generator = new TestFileGenerator.Builder()
                .setRandom(random)
                .setUnitOfWorkCount(uowCount)
                .setNamesCount(metricsCount)
                .setSamplesCount(samplesCount)
                .setStartTime(start)
                .setEndTime(stop)
                .setFileName(path)
                .setClusterName("application_cluster")
                .setServiceName("application_service")
                .build();
        generator.generate();
}

Stand Alone Application

Installation

The metrics-generator artifacts may be installed and executed as a stand-alone application. You can find the artifacts from the build in target/appassembler/ and these should be copied to an appropriate directory on your target host(s).

Execution

There are generated scripts in target/appassembler/bin/ to run the metrics-generator: metrics-generator (Linux) and metrics-generator.bat (Windows). One of these should be executed on system start with appropriate parameters; for example:

metrics-generator> ./target/appassembler/bin/metrics-generator --continuous

Configuration

All configuration is provided on the command line.

  • By default without any arguments the metrics generator will produce a set of test files in the current directory.
  • Specifying the "--continuous" argument the generator will produce a continuous stream of metrics into a single file.

Building

Prerequisites:

  • None

Building:

metrics-generator> ./jdk-wrapper.sh ./mvnw verify

To use the local version you must first install it locally:

metrics-generator> ./jdk-wrapper.sh ./mvnw install

You can determine the version of the local build from the pom file. Using the local version is intended only for testing or development.

You may also need to add the local repository to your build in order to pick-up the local version:

  • Maven - Included by default.
  • Gradle - Add mavenLocal() to build.gradle in the repositories block.
  • SBT - Add resolvers += Resolver.mavenLocal into project/plugins.sbt.

License

Published under Apache Software License 2.0, see LICENSE

© Groupon Inc., 2014