🚨 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 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.
-
Run
npm install -S @keptn/pitometer
-
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
-
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));
The API documentation can be found here.