Alerting Grafana 4 et images sur Amazon S3



  • 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…

    0_1522744585863_grafana.png

    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

    0_1522744608308_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).
    0_1522744666741_alerting_grafana.png

    Sur RocketChat

    0_1522744624764_alerting_grafana_rocketchat.png