Home

Awesome

mixtool

NOTE: This project is alpha stage. Flags, configuration, behavior and design may change significantly in following releases.

The mixtool is a helper for easily working with jsonnet mixins.

Install

Make sure you're using golang v1.17 or higher, and run:

go install github.com/monitoring-mixins/mixtool/cmd/mixtool@main

Usage

All command line flags:

NAME:
   mixtool - Improves your jsonnet mixins workflow

USAGE:
   mixtool [global options] command [command options] [arguments...]

VERSION:
   v0.1.0-pre

DESCRIPTION:
   mixtool helps with generating, building and linting jsonnet mixins

COMMANDS:
   generate  Generate manifests from jsonnet input
   lint      Lint jsonnet files
   new       Create new jsonnet mixin files
   server    Start a server to provision Prometheus rule file(s) with.
   list      List all available mixins
   install   Install a mixin
   help, h   Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --help, -h     show help
   --version, -v  print the version

Generate

NAME:
   mixtool generate - Generate manifests from jsonnet input

USAGE:
   mixtool generate command [command options] [arguments...]

COMMANDS:
   alerts      Generate Prometheus alerts based on the mixins
   rules       Generate Prometheus rules based on the mixins
   dashboards  Generate Grafana dashboards based on the mixins
   all         Generate all resources - Prometheus alerts, Prometheus rules and Grafana dashboards

OPTIONS:
   --help, -h  show help
   

New

NAME:
   mixtool new - Create new files for Prometheus alerts & rules and Grafana dashboards as jsonnet mixin

USAGE:
   mixtool new command [command options] [arguments...]

COMMANDS:
   grafana-dashboard  Create a new file with a Grafana dashboard mixin inside
   prometheus-alerts  Create a new file with Prometheus alert mixins inside
   prometheus-rules   Create a new file with Prometheus rule mixins inside

OPTIONS:
   --help, -h  show help
   

New Examples

mixtool new grafana-dashboard > my-dashboard.jsonnet
mixtool new prometheus-alerts > my-alerts.jsonnet
mixtool new prometheus-rules > my-rules.jsonnet

Lint

NAME:
   mixtool lint - Lint jsonnet files

USAGE:
   mixtool lint [command options] [arguments...]

DESCRIPTION:
   Lint jsonnet files for correct structure of JSON objects

OPTIONS:
   --grafana                Lint Grafana dashboards against Grafana's schema
   --prometheus             Lint Prometheus alerts and rules and their given expressions
   --jpath value, -J value  Add folders to be used as vendor folders
   

Lint Examples

# This will lint the file for Prometheus alerts & rules and Grafana dashboards.
mixtool lint prometheus.jsonnet

# Don't lint Grafana dashboards.
mixtool lint --grafana=false prometheus.jsonnet

# Don't lint Prometheus alerts & rules.
mixtool lint --prometheus=false prometheus.jsonnet

# Lint multiple files sequentially.
mixtool lint prometheus.jsonnet grafana.jsonnet