Je suis en train de tester l’alerting de Grafana arrivé récemment avec la version 4.0.0 (beta2). Pour afficher une alerte avec le graphe, il faut utiliser S3 ou un Webdav public. J’en ai donc profité pour tester Amazon S3 et comme la configuration n’a pas fonctionné du premier coup, c’est l’occasion d’un billet rapide sur le sujet ! Bonne lecture…

Installation

Je suis parti de l’image Docker officielle. Vous aurez besoin de persister sur disque la configuration et les datas de Grafana. Pour du docker standalone, je vous renvoie à la documentation sur le docker hub.

Pour du kubernetes vous pouvez utiliser helm et le Grafana Helm Chart. Sinon un exemple de deployment à adapter (il vous restera à faire un un kubectl expose deployment grafana selon votre besoin) :

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    app: grafana
  name: grafana
spec:
  replicas: 1
  selector:
    matchLabels:
      app: grafana
  template:
    metadata:
      labels:
        app: grafana
    spec:
      containers:
      - image: grafana/grafana:4.0.0-beta2
        imagePullPolicy: Always
        name: grafana
        ports:
        - containerPort: 3000
        volumeMounts:
        - mountPath: /etc/grafana
          name: config
        - mountPath: /var/lib/grafana
          name: data
      restartPolicy: Always
      volumes:
      - hostPath:
          path: ??/grafana/etc
        name: config
      - hostPath:
          path: ??/grafana/data
        name: data

Configuration

Amazon bucket

Depuis votre console Amazon AWS, selectionnez le service S3 et créez un nouveau bucket (ou adaptez le vôtre) :

  • Nommez le bucket et choisir une région. Attention : j’avais choisi à la base Frankfurt avant de changer pour Irland car j’avais ces erreurs dans les logs de Grafana : The authorization mechanism you have provided is not supported. Please use AWS4-HMAC-SHA256

create_bucket.png

  • Cliquez sur Create et votre bucket est immédiatement disponible. Il faut maintenant donner des droits à un utilisateur… Il faut se rendre sur le service IAM.
  • Créez un nouvel utilisateur, grafana par exemple, avec le type d’accès Programmatic access. Cliquez ensuite sur le bouton Next: permissions.
  • Il faudra ensuite passer par la création d’un groupe pour lequel il faudra attribuer la policie AmazonS3FullAccess.
  • Après l’étape Review, cliquez sur le bouton Create User et l’utilisateur est dispo.
  • Vous pouvez ensuite sélectionner votre utilisateur et dans l’onglet Security credentials, sélectionner votre clé d’accès ou en créer une. Il faudra récupérer la clé d’accès et la clé secrète pour Grafana.

grafana.ini

Rajoutez dans votre grafana.ini ce bout de configuration puis relancez Grafana.

[external_image_storage]
provider = s3

[external_image_storage.s3]
bucket_url = https://mon_bucket.s3-eu-west-1.amazonaws.com/
access_key = mon_access_key
secret_key = mon_secret_key

Exemple

Sur Grafana

Une fois votre Grafana relancé et votre alerting configuré, vous obtiendrez ce genre de dashboard et de notifications sur un chat de type Slack (RocketChat dans l’exemple). alerting_grafana-resized.png

Sur RocketChat

alerting_grafana_rocketchat.png