slo-generator
is a tool to compute and export Service Level Objectives (SLOs),
Error Budgets and Burn Rates, using policies written in JSON or YAML format.
slo-generator
will query metrics backend and compute the following metrics:
- Service Level Objective defined as
SLO (%) = GOOD_EVENTS / VALID_EVENTS
- Error Budget defined as
ERROR_BUDGET = 100 - SLO (%)
- Burn Rate defined as
BURN_RATE = ERROR_BUDGET / ERROR_BUDGET_TARGET
Requirements
- Python 3
Installation
slo-generator
is published on PyPI. To install it, run:
pip3 install slo-generator
Run the slo-generator
slo-generator -f <SLO_CONFIG_PATH> -b <ERROR_BUDGET_POLICY> --export
-
<SLO_CONFIG_PATH>
is the SLO config file or folder. If a folder path is passed, the SLO configs filenames should match the patternslo_*.yaml
to be loaded. -
<ERROR_BUDGET_POLICY>
is the Error Budget Policy file. -
--export
enables exporting data using theexporters
defined in the SLO configuration file.
Use slo-generator --help
to list all available arguments.
Notes:
- To enable debug logs, set the environment variable
DEBUG
to1
. - To enable colorized output (local usage), set the environment variable
COLORED_OUTPUT
to1
.
The slo-generator
requires two configuration files to run, the SLO configuration file and the Error budget policy file.
The SLO configuration (JSON or YAML) is composed of the following fields:
-
SLO metadata:
slo_name
: Name of this SLO.slo_description
: Description of this SLO.slo_target
: SLO target (between 0 and 1).service_name
: Name of the monitored service.feature_name
: Name of the monitored subsystem.
-
SLI configuration:
backend
: Specific documentation and examples are available for each supported backends:
- Exporter configuration:
exporters
: A list of exporters to export results to. Specific documentation is available for each supported exporters:- Cloud Pub/Sub to stream SLO reports.
- BigQuery to export SLO reports to BigQuery for historical analysis and DataStudio reporting.
- Stackdriver Monitoring to export metrics to Stackdriver Monitoring.
- Prometheus to export metrics to Prometheus.
- Datadog to export metrics to Datadog.
- Dynatrace to export metrics to Dynatrace.
- Custom to export SLO data or metrics to a custom destination.
Note: you can use environment variables in your SLO configs by using ${MY_ENV_VAR}
syntax to avoid having sensitive data in version control. Environment variables will be replaced at run time.
==> An example SLO configuration file is available here.
The Error Budget policy (JSON or YAML) is a list of multiple error budgets, each one composed of the following fields:
window
: Rolling time window for this error budget.alerting_burn_rate_threshold
: Target burnrate threshold over which alerting is needed.urgent_notification
: boolean whether violating this error budget should trigger a page.overburned_consequence_message
: message to show when the error budget is above the target.achieved_consequence_message
: message to show when the error budget is within the target.
==> An example Error Budget policy is available here.
To go further with the SLO Generator, you can read: