Installing Grafana Mimir dashboards and alerts
Grafana Mimir is shipped with a comprehensive set of production-ready Grafana dashboards and alerts to monitor the state and health of a Mimir cluster.
Requirements
- Grafana Mimir dashboards and alerts require specific labels to be set by Prometheus or Grafana Agent when scraping your Mimir cluster metrics
- Some dashboards require recording rules that you should install in your Prometheus
Install from package
Grafana Mimir provides ready to use Grafana dashboards in the .json
format and Prometheus alerts in the .yaml
format, that you can directly import into your Grafana installation and Prometheus config.
The packaged dashboards and alerts have been compiled from the sources using a default configuration and don’t allow you to customize the required metrics label names. If you need to customize the required metrics label names please choose one of the other installation options.
- Download dashboards, recording rules and alerts from Grafana Mimir repository
- Import dashboards in Grafana
- Install recording rules and alerts in your Prometheus
Install from sources
Grafana Mimir dashboards and alerts are built using Jsonnet language and you can compile them from sources. If you choose this option, you can change the configuration to match your deployment, like customizing the required label names.
- Checkout Mimir source code
git clone https://github.com/grafana/mimir.git
- Review the mixin configuration at
operations/mimir-mixin/config.libsonnet
, and apply your changes if necessary. - Compile the mixin
make build-mixin
- Import the dashboards saved at
operations/mimir-mixin-compiled/dashboards/
in Grafana - Install the recording rules saved at
operations/mimir-mixin-compiled/rules.yaml
in your Prometheus - Install the alerts saved at
operations/mimir-mixin-compiled/alerts.yaml
in your Prometheus
Install dashboards from Jsonnet mixin
In case you’re already using Jsonnet to define your infrastructure as a code, you can vendor the Grafana Mimir mixin directly into your infrastructure repository and configure it overriding the _config
fields.
Given the exact setup really depends on a case-by-case basis, the following instructions are not meant to be prescriptive but just show the main steps required to vendor the mixin.
- Initialize Jsonnet
jb init
- Install Grafana Mimir mixin
jb install github.com/grafana/mimir/operations/mimir-mixin@main
- Import and configure it
(import 'github.com/grafana/mimir/operations/mimir-mixin/mixin.libsonnet') + { _config+:: { // Override the Grafana Mimir mixin config here. }, }
Deploy mixin with Terraform
Based on Jsonnet configuration file, you can use Terraform to deploy the mixin in both Grafana and Grafana Mimir. To do so, you can use grafana/grafana, ovh/mixtool, and ovh/mimirtool providers.
Create a Terraform
main.tf
file:# Specify which providers to use terraform { required_version = ">= 1.3.5" required_providers { mixtool = { source = "ovh/mixtool" version = "~> 0.1.1" } mimirtool = { source = "ovh/mimirtool" version = "~> 0.1.1" } grafana = { source = "grafana/grafana" version = "~> 1.32.0" } } } # Configure providers if needed provider "grafana" { url = "http://localhost:9000" auth = "admin:admin" } provider "mimirtool" { address = "http://localhost:9009" tenant_id = "anonymous" } locals { mixin_source = "custom.libsonnet" jsonnet_path = "vendor" } # Build alerts data "mixtool_alerts" "mimir" { source = local.mixin_source jsonnet_path = [local.jsonnet_path] } # Build rules data "mixtool_rules" "mimir" { source = local.mixin_source jsonnet_path = [local.jsonnet_path] } # Build dashboards data "mixtool_dashboards" "mimir" { source = local.mixin_source jsonnet_path = [local.jsonnet_path] } # Deploy rules resource "mimirtool_ruler_namespace" "rules" { namespace = "rules_community" config_yaml = data.mixtool_rules.mimir.rules } # Deploy alerts resource "mimirtool_ruler_namespace" "alerts" { namespace = "alerts_community" config_yaml = data.mixtool_alerts.mimir.alerts } # Deploy dashboards resource "grafana_dashboard" "mimir" { for_each = data.mixtool_dashboards.mimir.dashboards config_json = each.value }
Initialize Terraform:
terraform init
Review the changes that Terraform would apply to your infrastructure:
terraform plan
Deploy the changes:
terraform apply