Skip to content
This repository has been archived by the owner on Feb 27, 2020. It is now read-only.

keptn-archived/pitometer

Repository files navigation

🚨 Pitometer will be deprecated with Keptn version 0.6.0. Please reach out to the Keptn team using Slack, a GitHub issue, or any other way you prefer to learn about the transition from Pitometer to the new Lighthouse-Service. 🚨

Pitometer

Pitometer is a Node.js module that helps you to qualify the overall performance or quality of applications using a well defined specification format.

The specification is done using the Perfspec format which is a declarative way to define which metrics you want to pay attention to, the sources to collect them from and how to grade/interpret the results.

Pitometer is pluggable and accepts different sources and grading mechanisms. Right now, source plugins for Dynatrace and Prometheus and a grader for thresholds are available but it's easy to write new sources and graders.

Quickstart

  1. Run npm install -S @keptn/pitometer

  2. Install the graders and sources that are used in your Perfspec file:

    npm install -S @keptn/pitometer-grader-threshold
    npm install -S @keptn/pitometer-source-prometheus
    npm install -S @keptn/pitometer-source-dynatrace
    
  3. Require, configure and register all components and run the Perfspec file.

const Pitometer = require('@keptn/pitometer').Pitometer;
const DynatraceSource = require('@keptn/pitometer-source-dynatrace').Source;
const PrometheusSource = require('@keptn/pitometer-source-prometheus').Source;
const ThresholdGrader = require('@keptn/pitometer-grader-threshold').Grader;

const pitometer = new Pitometer();

// Register a Prometheus source that will be used if the source ID in your
// Perfspec matches 'Prometheus'
pitometer.addSource('Prometheus', new PrometheusSource({
  queryUrl: '<PROMETHEUS_PROMQL_ENDPOINT>',
}));

// Register a source that will be used if the source ID in your Perfspec matches
// 'Dynatrace'
pitometer.addSource('Dynatrace', new DynatraceSource({
  baseUrl: '<DYNATRACE_ENVIRONMENT_URL>',
  apiToken: '<DYNATRACE_API_TOKEN>',
  // Optional: A logger to be used for debugging API requests
  // log: console.log,
}));

// Register a grader for thresholds that will be used if the grader type
// matches 'Threshold'
pitometer.addGrader('Threshold', new ThresholdGrader());

// Load a Perfspec - see the samples directory
const perfspec = require('./samples/perfspec-sample.json');

// Run the Perfspec, passing in an optional context parameter 'prod'
// and log the result out to the console
pitometer.run(perfspec, {
  context: 'Optional context that is passed to all sources and graders',
  timeStart: START_TIME_IN_SECONDS,
  timeEnd: END_TIME_IN_SECONDS,
})
  .then((results) => console.log(JSON.stringify(results)))
  .catch((err) => console.error(err));

API Documentation

The API documentation can be found here.