LibreNMS, généré un graph en png avec curl

Comment générer une image png avec les commandes curl et inkscape

L'idée est de pouvoir générer une image png d'un graph pour pouvoir l'afficher sur une map weathermap, voici comment faire.

Prerequis

curl : cURL est une commande polyvalente utilisée par les programmeurs pour la collecte et le transfert de données.

apt install curl

Dans les parametres de LibreNMS :

Selectionner "PNG" dans les parametres globaux, onglet Interface Web :

 

 

Weathermap : Celebre plugin pour creer des maps

https://github.com/librenms-plugins/Weathermap

Récupération de l'URL du graph

Allez sur la page d'un graph comme sur l'exemple ci-dessous

Sur cette exemple l'url se compose comme suit

http://librenms.url/graphs/to=1718748300/id=1606/type=port_bits/from=1718661900/

Pour récuperer ce graph en png il faut transformer l'url comme suit : 

http://librenms.url/graph.php?to=1718748300&id=1606&type=port_bits&from=1718661900.png

Pour faire court c'est juste une syntaxe à réspecter.

Si on veut voir le graph sur une période nommée (par exemple 6h) 

http://librenms.url/graph.php?id=1606&type=port_bits&from=-6h

Ou 6 jours

http://librenms.url/graph.php?id=1606&type=port_bits&from=-6d

Sans la légend

http://librenms.url/graph.php?type=port_bits&from=-6d&legend=no

Maintenant que nous avons l'URL du graph, nous pouvons commencer les commandes pour récuperer le graph en .png

Récupération du graph en .png avec CURL :

Exemple (la sortie se positionne directement dans le répertoire image de weathermap)

curl -o /opt/librenms/html/plugins/Weathermap/images/graph.png "http://librenms.url/graph.php?device=44&type=device_mempool&height=100&width=512&legend=no"

 

Script Bash

nano graph.sh
#!/bin/bash

curl -o /opt/librenms/html/plugins/Weathermap/images/graph-1.png "http://librenms.url/graph.php?type=port_bits&id=1594&legend=no&height=100&width=512" 

curl -o /opt/librenms/html/plugins/Weathermap/images/graph-2.png "http://librenms.url/graph.php?type=device_zywall_sessions&device=40&legend=no&height=100&width=512"

curl -o /opt/librenms/html/plugins/Weathermap/images/graph-3.png "http://librenms.url/graph.php?device=51&type=device_bits&legend=no&height=100&width=512"

curl -o /opt/librenms/html/plugins/Weathermap/images/graph-4.png "http://librenms.url/graph.php?device=44&type=device_mempool&legend=no&height=100&width=512"

 

Cron

crontab -e

 

Pour une actualisation toute les 5 minutes

 

*/5 * * * * sh /opt/script/graphpng.sh

 

Écrire un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec une *

Quelle est le deuxième caractère du mot tx0vqdu ? :