Sloctl is a command-line interface (CLI) for Nobl9.
You can use sloctl to manage multiple Nobl9 configuration objects
such as SLOs,
Projects
or Alert Policies.
The web user interface is available to give you an easy way to create
and update SLOs and other resources, while sloctl aims to provide a
systematic and automated approach to maintaining SLOs as code.
You can use it in CI/CD or your terminal power-user workflows 🔥
Usage
Sloctl includes built-in documentation for each command, to access it, run:
If you want to learn how to fully tame the sloctl's potential, see
recipes section below.
Install
Script
The script requires bash and a minimal set of GNU utilities.
On Windows it will work with either MinGW or Cygwin.
You can either pipe it directly into bash or download the file and run it manually.
# Using curl:
curl -fsSL https://raw.githubusercontent.com/nobl9/sloctl/main/install.bash | bash
# On systems where curl is not available:
wget -O - -q https://raw.githubusercontent.com/nobl9/sloctl/main/install.bash | bash
# If you prefer to first download the script, inspect it and then run it:
curl -fsSL -o install.bash https://raw.githubusercontent.com/nobl9/sloctl/main/install.bash
# Or with wget:
wget -O install.bash -q https://raw.githubusercontent.com/nobl9/sloctl/main/install.bash
# Once downloaded, set execution permissions:
chmod 700 install.bash
# The script is well documented and comes with additional options.
# You can display the help message by running:
./install.bash --help
Create a sample Project object and save it to project.yaml file.
cat << EOF > project.yaml
apiVersion: n9/v1alpha
kind: Project
metadata:
displayName: My Project
name: my-project
spec:
description: Just and example Project :)
EOF
Apply the project from project.yaml.
To keep STDIN open and allow piping the contents of project.yaml into
the docker run command, use interactive mode with docker run.
yq is wrapper over jq,
it extends jq's capabilities with YAML support.
Filter out SLOs with specific integration (prometheus in this example):
sloctl get slos -A --jq '
[ .[] | select(
.spec.objectives[] |
(.rawMetric and .rawMetric.query["prometheus"])
or
(.countMetrics and .countMetrics.total["prometheus"])
)]'