Surveiller BTRFS avec Telegraf

dim. 01 nov. 2020 by Marmotte

J'utilise Telegraf pour la supervision de mes machines, et le système de fichiers BTRFS sur certaines d'entre-elles. Cependant, aucune information n'est collectée par défaut sur la structure et les fonctionnalités spécifiques de BTRFS par Telegraf.

J'ai donc décidé d'écrire un petit script python pour permettre à Telegraf de récupérer ces informations manquantes.

Pourquoi écrire ce script ?

En plus de l'espace total et utilisé, d'autres informations sont utiles et disponibles pour la supervision d'un système de fichiers BTRFS :

  • Le nombre de périphériques faisant partie du système de fichiers
  • Les statistiques des périphériques (compteurs d'erreurs)
  • Le détail d'allocation et d'utilisation de l'espace disque par périphérique
  • Le détail d'allocation et d'utilisation de l'espace disque par type de donnée

Il existait déjà un autre script proposant de collecter des informations sur BTRFS pour Telegraf, mais il lance des commandes de la forme sudo btrfs ... avec le module subprocess, ce qui ne me convenait pas.

J'ai donc décidé d'écrire un nouveau script, en utilisant la bibliothèque python python-btfs, qui interroge le système de fichiers sans passer par un autre binaire.

Note : Certains attributs nécessitent cependant de lancer mon script avec sudo, puisqu'ils ne sont accessibles que par un utilisateur privilégié.

Mise en place

L'installation et l'utilisation sont décrites dans le README du projet, que j'ai décidé d'héberger sur Framagit.

En résumé :

  • Copier le script dans un répertoire quelconque
  • Autoriser Telegraf à le lancer avec sudo
  • Ajouter un nouveau bloc inputs.exec dans la configuration de Telegraf

Le détail des données collectées, ainsi qu'un dashboard basique pour Grafana sont aussi fournis dans le dépôt git du projet.