Tableau de bord Grafana pour système de bière BeerTender

Explication. BeerTender - un appareil pour refroidir et mettre en bouteille la bière de Krups et Heineken. Selon les fabricants, il maintient la qualité de la bière fraîche pendant 30 jours après l'ouverture du fût. Bien sûr, il est pratique pour les administrateurs système et les développeurs de surveiller la température et le niveau de bière dans leur fût en utilisant les tableaux de bord en ligne habituels. L'article précédent décrivait comment connecter BeerTender à Warp 10 , et maintenant nous allons configurer le tableau de bord Grafana



OVHcloud, le plus grand hébergeur et fournisseur de cloud européen, utilise activement la plate-forme Warp 10. Toutes leurs données de surveillance circulent dans un cluster Warp 10. Ce sont 400 000 serveurs, 27 centres de données, un total de plusieurs millions de métriques par seconde!

Ils ont de nombreux tableaux de bord, et maintenant OVHcloud est le mainteneur du plugin open source Warp 10 Grafana , que nous avons commencé à développer il y a quelque temps. Nous allons parler de lui. Si vous voulez l'essayer vous-même, les données sont dans le domaine public - vous pouvez copier WarpScript ci-dessous.


Nous avons déjà expliqué comment connecter BeerTender à Warp 10.

L'installation


Tout d'abord, installez Grafana. Suivez les instructions sur leur site Web .

Nous nous connectons à l' http://localhost:3000/ par défaut http://localhost:3000/ , accédez au mot de passe par défaut admin / admin, puis changez le mot de passe administrateur.

Pour la dernière version de Grafana, le plug-in devra être installé manuellement. La méthode avec grafana-cli ne fonctionnera pas. Il vous suffit de cloner le référentiel de plugins dans le répertoire des plugins de Grafana et de fixer les autorisations partout.

 sudo systemctl stop grafana-server.service sudo chown -R grafana:mygroup /var/lib/grafana/ sudo chmod g+rw /var/lib/grafana/plugins git clone git@github.com:ovh/ovh-warp10-datasource.git /var/lib/grafana/plugins/ovh-warp10-datasource sudo chown -R grafana:mygroup /var/lib/grafana/plugins sudo systemctl start grafana-server.service 

La configuration


Dans la configuration Grafana, accédez à la section Sources de données et ajoutez une source de données de type Warp 10. Assurez-vous qu'elle pointe vers l'instance souhaitée de Warp 10. Vous pouvez spécifier les mêmes paramètres que les nôtres:



Il est temps de prendre les données du BeerTender ...

Affichage de la température


Créez un nouveau tableau de bord, ajoutez un panneau avec le type de visualisation Graphique et passez en mode Requêtes:


Température initiale (valeurs entières du capteur)

  • Dans la source de données, sélectionnez Warp 10 (ou la valeur par défaut)
  • Activez l'éditeur WarpScript
  • Copiez WarpScript ci-dessous
  • Dans le coin supérieur droit, sélectionnez "30 derniers jours"
  • Enregistrez le résultat

 "gCA1SVjbDkaxtmTx9ydI4TI2iGc5hFgcbCWnzMRZSt45XW8dZ53Z7VK_if28i0kXwNDLazXHgLrXUKgxLK0RbS79eJmBCpyBlIxw9US7bPfdWH4Fta51.kXN.D4Hsk5OZOwl.vLRBzMpP7F2pAMfclMXSGtCOT6F" 'rt' STORE [ $rt 'beertender.rawtemperature' {} NOW 30 d ] FETCH 0 GET 

Ce script affichera les valeurs initiales du capteur ADC. Veuillez noter que l'éditeur WarpScript dans Grafana n'est pas aussi puissant qu'auparavant, il n'y a plus de saisie automatique ici. Vous pouvez écrire un script dans WarpStudio ou VSCode, vous aurez donc la coloration syntaxique et la documentation en ligne, puis copiez et collez le résultat dans Grafana.

Espacement automatique


Dans cet exemple, sélectionnez l'intervalle de 30 jours et définissez le mode d'affichage dans graphan au cours des 30 derniers jours. Si nous sélectionnons le mode d'affichage pour le dernier jour ou l'année, WarpScript demandera toujours des données tous les 30 jours. Le plugin résout ce problème: deux variables sont disponibles pour une utilisation dans WarpScript - $end et $interval .

 [ $rt 'beertender.rawtemperature' {} $end $interval ] FETCH 0 

Température de la bière


J'ai pris plusieurs mesures d'eau, de glace et d'eau chaude, en comparant avec un capteur de référence ... Le résultat était le suivant:

  T (° C) valeur initiale
 18,3 680
 41,5 870
 37,6 841
 10 586
 11 596
 8 559
 1,467
 4,500
 6.5 535 

Insérez ces valeurs dans la série temporelle GTS et triez le résultat selon les valeurs initiales du capteur:

 NEWGTS 'linearInterpolation' RENAME 680 NaN NaN NaN 18.3 ADDVALUE 870 NaN NaN NaN 41.5 ADDVALUE 841 NaN NaN NaN 37.6 ADDVALUE 586 NaN NaN NaN 10 ADDVALUE 596 NaN NaN NaN 11 ADDVALUE 559 NaN NaN NaN 8 ADDVALUE 467 NaN NaN NaN 1 ADDVALUE 500 NaN NaN NaN 4.5 ADDVALUE 535 NaN NaN NaN 6.5 ADDVALUE SORT 


Interpolation attendue

Les données source du capteur se présentent sous la forme d'entiers. La façon la plus simple d'interpoler consiste à créer d'abord la courbe, puis à utiliser la fonction ATTICK pour en lire les valeurs en degrés.

L'interpolation dans WarpScript est facile. Nous créons un bucket pour définir la période souhaitée, puis commençons l'interpolation, en remplissant les valeurs manquantes.

 [ $linearInterpolation bucketizer.last 0 1 0 ] BUCKETIZE 0 GET INTERPOLATE 'truthtableGTS' STORE 




Super. Vous devez maintenant écrire votre propre mappeur afin de remplacer chaque valeur du capteur par une vraie valeur de température physique et amener le résultat au format utilisé par le graphane.

Avertissement : les valeurs arrivent toutes les 10 secondes. En trois mois, 270 000 valeurs s'accumuleront. Trop pour Grafana ... Il suffit de garder la valeur maximale de chaque heure. Dans WarpScript, c'est BUCKETIZE avec le bucketizer.max bucketizer .

Vous pouvez copier ce WarpScript dans Grafana:

 // raw value interpolation "gCA1SVjbDkaxtmTx9ydI4TI2iGc5hFgcbCWnzMRZSt45XW8dZ53Z7VK_if28i0kXwNDLazXHgLrXUKgxLK0RbS79eJmBCpyBlIxw9US7bPfdWH4Fta51.kXN.D4Hsk5OZOwl.vLRBzMpP7F2pAMfclMXSGtCOT6F" 'rt' STORE NEWGTS 'linearInterpolation' RENAME 680 NaN NaN NaN 18.3 ADDVALUE 870 NaN NaN NaN 41.5 ADDVALUE 841 NaN NaN NaN 37.6 ADDVALUE 586 NaN NaN NaN 10 ADDVALUE 596 NaN NaN NaN 11 ADDVALUE 559 NaN NaN NaN 8 ADDVALUE 467 NaN NaN NaN 1 ADDVALUE 500 NaN NaN NaN 4.5 ADDVALUE 535 NaN NaN NaN 6.5 ADDVALUE SORT 'linearInterpolation' STORE [ $linearInterpolation bucketizer.last 0 1 0 ] BUCKETIZE 0 GET INTERPOLATE 'truthtableGTS' STORE [ $rt 'beertender.rawtemperature' {} NOW $end $interval ] FETCH // subsampling, keep max of every hour [ SWAP bucketizer.max 0 1 h 0 ] BUCKETIZE UNBUCKETIZE // do not try to interpolate missing buckets. // interpolation [ SWAP <% 'l' STORE [ $l 0 GET //same tick NaN NaN NaN //no latitude/longitude/elevation $truthtableGTS $l 7 GET 0 GET ATTICK 4 GET //take the interpolated value ] %> MACROMAPPER 0 0 0 ] MAP 'temperature (°C)' RENAME 


5 ° C, normal pour la bière


Tableau de bord BeerTender, première version

Niveau baril


La jauge de contrainte mesure le niveau dans le baril ... Mais il s'agit d'un capteur à trois fils bon marché sur un support en métal rouillé. Il n'est pas possible d'obtenir des informations précises de ces équipements. Par conséquent, il n'est pas surprenant que la sortie soit vraiment un résultat bruyant et que les valeurs absolues ne soient pas fiables. Pour notre BeerTender, j'ai trouvé une formule expérimentale pour Grafana pour afficher le niveau actuel en pourcentage.

Astuce: le plugin Warp 10 ne récupère que les données de GTS. Même si vous souhaitez afficher une seule valeur, vous devez la présenter à un moment donné dans les données GTS.

Voici WarpScript, qui prend le dernier point de données et le transforme en valeur de pourcentage, et crée également une série chronologique avec un point:

 "gCA1SVjbDkaxtmTx9ydI4TI2iGc5hFgcbCWnzMRZSt45XW8dZ53Z7VK_if28i0kXwNDLazXHgLrXUKgxLK0RbS79eJmBCpyBlIxw9US7bPfdWH4Fta51.kXN.D4Hsk5OZOwl.vLRBzMpP7F2pAMfclMXSGtCOT6F" 'rt' STORE //read for beer level [ $rt 'beertender.rawvalue' {} NOW -1 ] FETCH 0 GET VALUES 0 GET 'rawSensorValue' STORE //raw correction: // empty: 30.8e6 // full (and cold): 30.5e6 30.8e6 $rawSensorValue - 0 MAX 2800 / 100 MIN 'beerlevelPercent' STORE $beerlevelPercent NEWGTS 'Barre Level (%25)' RENAME 1 NaN NaN NaN $beerlevelPercent ADDVALUE 

Utilisez ce WarpScript comme demande pour un panneau avec un type de visualisation Gauge:


Bel indicateur

Si vous êtes intéressé, vous pouvez consulter les données sources ... Nous avons maintenant un jeton pour accéder à des statistiques uniques sur la consommation de bière!

Conclusions


  • Si les données de surveillance étaient récemment sous votre contrôle, Grafana peut facilement intégrer la source de données Warp 10.
  • Le plugin Grafana attend une série chronologique GTS ou une liste GTS.
  • OVHcloud est le mainteneur actuel du plugin. N'hésitez pas à contribuer!
  • Lisez la documentation pour plus d'informations.
  • Si vous souhaitez enrichir la visualisation des données, vous pouvez prendre nos composants Web prêts à l'emploi .

Source: https://habr.com/ru/post/fr477870/


All Articles