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-generatorRun 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_*.yamlto be loaded. -
<ERROR_BUDGET_POLICY>is the Error Budget Policy file. -
--exportenables exporting data using theexportersdefined in the SLO configuration file.
Use slo-generator --help to list all available arguments.
Notes:
- To enable debug logs, set the environment variable
DEBUGto1. - To enable colorized output (local usage), set the environment variable
COLORED_OUTPUTto1.
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: