1. Le ruler #
Les règles Prometheus, évaluées sur toutes les données.
Principe #
Le ruler évalue les règles d'enregistrement et d'alerte au format Prometheus, par tenant, sur l'ensemble des données de Mimir (pas seulement celles d'un Prometheus). Les résultats des règles d'enregistrement sont réécrits dans Mimir ; les alertes sont envoyées à l'Alertmanager.
ruler:
alertmanager_url: http://localhost:8080/alertmanager # Alertmanager intégré
rule_path: /data/ruler
ruler_storage:
s3: { bucket_name: mimir-ruler }Bonne Pratique : Déplacez les règles des Prometheus vers le ruler dès que vous agrégez plusieurs sources : une règle sum by (service) évaluée dans un Prometheus ne voit que ses propres cibles.Un fichier de règles #
# rules/api.yaml
namespace: api
groups:
- name: api-slo
interval: 1m
rules:
- record: service:http_requests:rate5m
expr: sum by (service) (rate(http_requests_total[5m]))
- alert: ApiHighErrorRate
expr: |
sum by (service) (rate(http_requests_total{code=~"5.."}[5m]))
/ sum by (service) (rate(http_requests_total[5m])) > 0.05
for: 10m
labels: { severity: critical }
annotations:
summary: "{{ $labels.service }} : plus de 5 % d'erreurs" 2. mimirtool #
Le couteau suisse de Mimir.
Installation et configuration #
# Binaire (Linux amd64)
curl -fLo mimirtool https://github.com/grafana/mimir/releases/latest/download/mimirtool-linux-amd64
chmod +x mimirtool
export MIMIR_ADDRESS=http://mimir:8080
export MIMIR_TENANT_ID=team-platformGérer les règles #
# Vérifier la syntaxe et le style
mimirtool rules check rules/*.yaml
mimirtool rules lint rules/*.yaml
# Charger un fichier, lister, comparer, synchroniser (GitOps)
mimirtool rules load rules/api.yaml
mimirtool rules list
mimirtool rules diff rules/*.yaml
mimirtool rules sync rules/*.yaml # supprime aussi ce qui n'est plus dans Git
# Convertir des règles Prometheus existantes
mimirtool rules prepare -i rules/*.yamlBonne Pratique : Placezmimirtool rules diffdans la CI des pull requests etmimirtool rules syncdans le déploiement : les règles deviennent du code relu et versionné.
Analyser l'usage des métriques #
mimirtool analyze compare les métriques utilisées par vos dashboards et règles aux métriques stockées : idéal pour supprimer les séries que personne ne lit.
mimirtool analyze grafana --address=http://grafana:3000 --key=$GRAFANA_TOKEN # metrics-in-grafana.json
mimirtool analyze ruler # metrics-in-ruler.json
mimirtool analyze prometheus --address=http://mimir:8080/prometheus --id=$MIMIR_TENANT_ID3. L'Alertmanager multi-tenant #
Une configuration par tenant.
Configurer et charger #
# mimir.yaml
alertmanager:
data_dir: /data/alertmanager
external_url: http://mimir.example.com/alertmanager
fallback_config_file: /etc/mimir/alertmanager-fallback.yaml# alertmanager.yaml du tenant team-platform
route:
receiver: slack
group_by: [alertname, service]
receivers:
- name: slack
slack_configs:
- api_url: https://hooks.slack.com/services/XXX
channel: '#alertes-plateforme'mimirtool alertmanager load alertmanager.yaml
mimirtool alertmanager getÀ savoir : Grafana sait gérer cet Alertmanager : ajoutez une source de données de type Alertmanager pointant vers http://mimir:8080/ avec l'implémentation « Mimir », puis gérez règles et silences depuis Grafana Alerting.