Bonsoir,
Je vais essayer d’etre le plus précis possible.
En fait ce qui ma inspiré ce projet c’est a la base un reporting de stats pour Freebox sous cacti + diverses choses de mon réseau aussi dont l’onduleur PrestaOpen - Page 404 Il m’a été nécéssaire de faire pas mal d’adaptation car rien ne fonctionne sur ce qui est décrit dans ce lien + un bug de l’authentification de la freebox mais passons.
Pour ce faire je me suis donc installé un conteneur tout pret cacti sur docker pour Synology.
https://hub.docker.com/r/quantumobject/docker-cacti/
on configure le par defaut pour la partie port + un mapping du port http pour browser l’instance et hop tout fonctionne tout seul.
Lire les reférences si on ne connais pas le principe de ce grapheur https://cacti.net/
Ici une petite idée de mon intégration de l’EDRT2 sur la partie des infos de tele info du compteur.
Plus bas les fichiers de data collection et de graph template
Le principe est simple, depuis cacti on joue un custom script de data collector en datasource qui va renvoyer les données souhaitées. Pour ce faire on va dans le menu console > Data Collection > Data Input
On declare ensuite les datasources et les graphs templates s’appuient sur les datasources
Pour le script
On lui donne un petit nom, pour l’exemple « Ecodevice-rt - TeleInfo » ainsi que son emplacement /tmp/source/gce_ecodevices_rt.sh et ensuite plus bas on va declarer autant d’output fields que les champs que vous avez déclaré dans votre script.
Le script en détail :
#!/bin/sh
curl -H "Content-type: application/json" -X GET http://XXX.XXX.XXX.XXX/user/status.xml>/tmp/gceecodevices.log 2>/dev/null
hchp=`perl -nle '/<etiquetteEC5>.*?<\/etiquetteEC5>/ && print $&' /tmp/gceecodevices.log | grep -oP '(?<=<etiquetteEC5>).*?(?=</etiquetteEC5>)'`
hchc=`perl -nle '/<etiquetteEC4>.*?<\/etiquetteEC4>/ && print $&' /tmp/gceecodevices.log | grep -oP '(?<=<etiquetteEC4>).*?(?=</etiquetteEC4>)'`
iinst=`perl -nle '/<etiquetteEC16>.*?<\/etiquetteEC16>/ && print $&' /tmp/gceecodevices.log | grep -oP '(?<=<etiquetteEC16>).*?(?=</etiquetteEC16>)'`
isousc=`perl -nle '/<etiquetteEC2>.*?<\/etiquetteEC2>/ && print $&' /tmp/gceecodevices.log | grep -oP '(?<=<etiquetteEC2>).*?(?=</etiquetteEC2>)'`
papp=`perl -nle '/<etiquetteEC25>.*?<\/etiquetteEC25>/ && print $&' /tmp/gceecodevices.log | grep -oP '(?<=<etiquetteEC25>).*?(?=</etiquetteEC25>)'`
ptec=`perl -nle '/<etiquetteEC14>.*?<\/etiquetteEC14>/ && print $&' /tmp/gceecodevices.log | grep -oP '(?<=<etiquetteEC14>).*?(?=</etiquetteEC14>)'`
if [ $ptec = "HP.." ]
then
ptec=1
elif [ $ptec = "HC.." ]
then
ptec=0
fi
cuisson=`perl -nle '/<sspindex30>.*?<\/sspindex30>/ && print $&' /tmp/gceecodevices.log | grep -oP '(?<=<sspindex30>).*?(?=</sspindex30>)' | sed -e 's/\.//g'`
four=`perl -nle '/<sspindex31>.*?<\/sspindex31>/ && print $&' /tmp/gceecodevices.log | grep -oP '(?<=<sspindex31>).*?(?=</sspindex31>)' | sed -e 's/\.//g'`
lv=`perl -nle '/<sspindex32>.*?<\/sspindex32>/ && print $&' /tmp/gceecodevices.log | grep -oP '(?<=<sspindex32>).*?(?=</sspindex32>)' | sed -e 's/\.//g'`
mal=`perl -nle '/<sspindex33>.*?<\/sspindex33>/ && print $&' /tmp/gceecodevices.log | grep -oP '(?<=<sspindex33>).*?(?=</sspindex33>)' | sed -e 's/\.//g'`
sl=`perl -nle '/<sspindex34>.*?<\/sspindex34>/ && print $&' /tmp/gceecodevices.log | grep -oP '(?<=<sspindex34>).*?(?=</sspindex34>)' | sed -e 's/\.//g'`
ce=`perl -nle '/<sspindex35>.*?<\/sspindex35>/ && print $&' /tmp/gceecodevices.log | grep -oP '(?<=<sspindex35>).*?(?=</sspindex35>)' | sed -e 's/\.//g'`
vdi=`perl -nle '/<sspindex36>.*?<\/sspindex36>/ && print $&' /tmp/gceecodevices.log | grep -oP '(?<=<sspindex36>).*?(?=</sspindex36>)' | sed -e 's/\.//g'`
vmc=`perl -nle '/<sspindex37>.*?<\/sspindex37>/ && print $&' /tmp/gceecodevices.log | grep -oP '(?<=<sspindex37>).*?(?=</sspindex37>)' | sed -e 's/\.//g'`
lum=`perl -nle '/<sspindex40>.*?<\/sspindex40>/ && print $&' /tmp/gceecodevices.log | grep -oP '(?<=<sspindex40>).*?(?=</sspindex40>)' | sed -e 's/\.//g'`
pc=`perl -nle '/<sspindex41>.*?<\/sspindex41>/ && print $&' /tmp/gceecodevices.log | grep -oP '(?<=<sspindex41>).*?(?=</sspindex41>)' | sed -e 's/\.//g'`
chauffcli=`perl -nle '/<sspindex42>.*?<\/sspindex42>/ && print $&' /tmp/gceecodevices.log | grep -oP '(?<=<sspindex42>).*?(?=</sspindex42>)' | sed -e 's/\.//g'`
tech=`perl -nle '/<sspindex43>.*?<\/sspindex43>/ && print $&' /tmp/gceecodevices.log | grep -oP '(?<=<sspindex43>).*?(?=</sspindex43>)' | sed -e 's/\.//g'`
piscine=`perl -nle '/<sspindex44>.*?<\/sspindex44>/ && print $&' /tmp/gceecodevices.log | grep -oP '(?<=<sspindex44>).*?(?=</sspindex44>)' | sed -e 's/\.//g'`
dependance=`perl -nle '/<sspindex45>.*?<\/sspindex45>/ && print $&' /tmp/gceecodevices.log | grep -oP '(?<=<sspindex45>).*?(?=</sspindex45>)' | sed -e 's/\.//g'`
printf "hchp:%s hchc:%s papp:%s iinst:%s isousc:%s ptec:%s cuisson:%s four:%s lv:%s mal:%s sl:%s ce:%s vdi:%s vmc:%s lum:%s pc:%s chauffcli:%s tech:%s piscine:%s dependance:%s \n" $hchp $hchc $papp $iinst $isousc $ptec $cuisson $four $lv $mal $sl $ce $vdi $vmc $lum $pc $chauffcli $tech $piscine $dependance;
Le script fais dans l’ordre
1- il browse votre user status
2- fais une lecture des balise de l’xml retournépour identifier les champs que l’on souhaite récupérer et les mes chacun dans sa variable.
3- A la lecture des valeurs on nettoie pour que ce soit interpretable (suppression des . dans les index par ex)
4- on fais un print dans le bon ordre et ca renvoit tout sur une ligne
Ici l’exemple vaut pour mon ecodevice mais on peut faire pareil avec l’IPX
Data template pour importer plus rapidement la conf :
cacti_data_template_ecodevice_-_teleinfo.xml.zip (20,5 Ko)
Ensuite on cree les template de graph en voici 4 pour l’exemple.
cacti_graph_template_teleinfo_-_consommations.xml.zip (34,7 Ko) cacti_graph_template_teleinfo_-_intensite_consommee.xml.zip (29,6 Ko) cacti_graph_template_teleinfo_-_puissance_appliquee.xml.zip (28,1 Ko) cacti_graph_template_teleinfo_-_tarification.xml.zip (28,8 Ko)
Bien sur ne pas oublier de declarer le host de l’ecodevice pour mapper les graphs au bon endroit dans l’arborescence, tout ceci c’est de l’administration de cacti standard en terme de principe on active les graphs sur le host et ensuite toutes les 5 minutes ca update
Attention les fichiers doivent etre renomés en .xml pour etre importés.
Cdt