CLI generate
generate
will generate Prometheus rules in different formats based on the specs.
This mode only needs the CLI so its very useful for GitOps, CI, scripts or as a CLI on your toolbox.
generate
command supports multiple spec types and will detect the input spec type based on the spec, accordingly it will generate the output in different formats depending on the loaded spec:
- Default spec generates vanilla Prometheus rules.
- Kubernetes spec generates Prometheus operator based CRD Prometheus rules.
CLI mode doesn't need CRDs
Sloth CRD is NOT required in the cluster because the generation happens offline as a CLI. For controller/operator K8s flow, check Kubernetes controller section.
Kubernetes without prometheus-operator
In this case, you will need default spec to get vanilla prometheus rules and deploy as you deploy other Prometheus rules in the Kubernetes cluster (e.g. Using configmaps).
Kubernetes specs need prometheus-operator CRDs
Kubernetes specs generate Prometheus operator Rules CRs, this means that the CRD is required to be registered in the cluster.
Disable optimized rules
By default Sloth will try optimizing long time windows (e.g 30 day) by sacrificing data precision. If you want to disable this use --disable-optimized-rules
.
SLO directory discovery
If the input and the output is a directory instead of a file, Sloth will discover all SLOs recursively in a directory and output the generated files with the corresponding structure in the output.
If you are executing Sloth per file using bash loops, changing to this method is recommended (>=v0.10.0
) because it will have a huge impact performance (e.g: CI time).
Example
$ sloth generate -i ./examples/home-wifi.yml -o /tmp/home-wifi.yml
INFO[0000] Generating from Prometheus spec version=v0.1.0-43-g5715af5
INFO[0000] Multiwindow-multiburn alerts generated slo=home-wifi-good-wifi-client-satisfaction svc=generate.prometheus.Service version=v0.1.0-43-g5715af5
INFO[0000] SLI recording rules generated rules=8 slo=home-wifi-good-wifi-client-satisfaction svc=generate.prometheus.Service version=v0.1.0-43-g5715af5
INFO[0000] Metadata recording rules generated rules=7 slo=home-wifi-good-wifi-client-satisfaction svc=generate.prometheus.Service version=v0.1.0-43-g5715af5
INFO[0000] SLO alert rules generated rules=2 slo=home-wifi-good-wifi-client-satisfaction svc=generate.prometheus.Service version=v0.1.0-43-g5715af5
INFO[0000] Multiwindow-multiburn alerts generated slo=home-wifi-risk-wifi-client-satisfaction svc=generate.prometheus.Service version=v0.1.0-43-g5715af5
INFO[0000] SLI recording rules generated rules=8 slo=home-wifi-risk-wifi-client-satisfaction svc=generate.prometheus.Service version=v0.1.0-43-g5715af5
INFO[0000] Metadata recording rules generated rules=7 slo=home-wifi-risk-wifi-client-satisfaction svc=generate.prometheus.Service version=v0.1.0-43-g5715af5
INFO[0000] SLO alert rules generated rules=2 slo=home-wifi-risk-wifi-client-satisfaction svc=generate.prometheus.Service version=v0.1.0-43-g5715af5
INFO[0000] Prometheus rules written format=yaml groups=6 out=/tmp/home-wifi.yml svc=storage.IOWriter version=v0.1.0-43-g5715af5