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 🔥
Sloctl includes built-in documentation for each command, to access it, run:
sloctl <command> --help
For more details check out sloctl user guide.
If you want to learn how to fully tame the sloctl's potential, see recipes section below.
The binaries are available at Releases page.
go install github.com/nobl9/sloctl/cmd/sloctl@latest
brew tap nobl9/sloctl
brew install sloctl
Sloctl official images are hosted on hub.docker.com.
Here's an example workflow for managing Project object:
-
Export sloctl access keys through environment variables.
export SLOCTL_CLIENT_ID=<your-client-id> export SLOCTL_CLIENT_SECRET=<your-client-secret>
-
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 ofproject.yaml
into thedocker run
command, use interactive mode withdocker run
.cat project.yaml | docker run --rm -i \ -e SLOCTL_CLIENT_ID=${SLOCTL_CLIENT_ID} \ -e SLOCTL_CLIENT_SECRET=${SLOCTL_CLIENT_SECRET} \ nobl9/sloctl apply -f -
-
Fetch the applied Project.
docker run --rm \ -e SLOCTL_CLIENT_ID=${SLOCTL_CLIENT_ID} \ -e SLOCTL_CLIENT_SECRET=${SLOCTL_CLIENT_SECRET} \ nobl9/sloctl get project my-project
-
Remove the Project.
docker run --rm \ -e SLOCTL_CLIENT_ID=${SLOCTL_CLIENT_ID} \ -e SLOCTL_CLIENT_SECRET=${SLOCTL_CLIENT_SECRET} \ nobl9/sloctl delete project my-project
-
Download Dockerfile and latest linux sloctl binary from the Releases page. Make sure they are in your working directory.
-
Build the image:
docker build -t <NAME_YOUR_IMAGE> .
-
Set environment variables if you plan to use them for authenticating with SLOCTL. Reference the sloctl environment variables Doc.
-
Run the image:
docker run -e SLOCTL_CLIENT_ID=$SLOCTL_CLIENT_ID \ -e SLOCTL_CLIENT_SECRET=$SLOCTL_CLIENT_SECRET \ <YOUR_IMAGE_NAME> get slos --no-config-file
Prerequisites:
- jq, a popular command-line JSON processor.
- 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 |
yq -Y \
--arg source_type "prometheus" \
'[ .[] | select(
.spec.objectives[] |
(.rawMetric and .rawMetric.query[$source_type])
or
(.countMetrics and .countMetrics.total[$source_type])
)]'