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…
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
- 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).