bruno78 Posté(e) le 18 avril 2020 Partager Posté(e) le 18 avril 2020 (modifié) Il s'agit ici de présenter un tuto pour monitorer sa Freebox, avec les outils telegraf / influxdb / grafana, en complément du [TUTO] Monitoring NAS et Réseau qui reste la référence. En conséquence, je suppose déjà opérationnelle chez vous une chaine complète telegraf / influxdb / grafana pour la supervision de votre NAS Il faudra bien entendu faire les adaptations spécifiques à votre environnement. Principe : Le docker telegraf va utiliser un script python pour récupérer les infos de la Freebox. Limites : je n'ai pu valider cette méthode que sur ma Freebox, et donc pour les autres modèles et/ou configuration ... ? Freebox Révolution au dernier Firmware (4.0.7) à ce jour. Accès réseau fibre ftth (et donc pas testé les compteurs xDSL) Chaine existante (hypothèse) : je suppose donc que vous avez une chaine telegraf / influxdb / grafana opérationnelle pour votre NAS, en docker mode bridge. Ajout Freebox : On va rajouter un second docker telegraf, qui portera le script Python. Ce docker telegraf dédié Freebox va transmettre ses données vers une seconde database que l'on va créer dans le docker Influx Sur grafana, on créera une nouvelle source de données (la nouvelle database d'influx) qui nous permettra d'afficher les données Freebox. Voir schéma de principe ci-dessous : Configuration des dockers existants : subnet: 172.20.0.0/29 gateway: 172.20.0.1 ip_range: 172.20.0.0/29 Adressage existant grafana d2:ca:ab:cd:00:02 172.20.0.2 influxdb d2:ca:ab:cd:00:03 172.20.0.3 nas_telegraf d2:ca:ab:cd:00:04 172.20.0.4 Création du nouveau docker : fbx_telegraf Adressage sur le réseau bridge : fbx_telegraf d2:ca:ab:cd:00:05 172.20.0.5 Déclaration du service fbx_telegraf dans le docker-compose.yaml (extrait): EDIT du 02/septembre 2020 : la dernière branche de developpement du docker telegraf, 1.15.x, semble poser problème avec Python. Il faut donc se limiter au max à la version 1.14.5. L'image à charger sera donc telegraf:1.14.5 au lieu de telegraf:latest EDIT du 08/septembre 2020 : installation résolue pour python sur la branche telegraf 1.15.x (i.e. tag : latest). Voir détails plus bas. services: fbx_telegraf: image: telegraf:latest container_name: fbx_telegraf hostname: fbx_telegraf mac_address: d2:ca:ab:cd:00:05 networks: monitoring: ipv4_address: 172.20.0.5 environment: - PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/bin:/sbin:/usr/local:/usr/src - TZ=CET mem_limit: 75M volumes: - "/volume1/docker/monitoring/fbx_telegraf/telegraf.conf:/etc/telegraf/telegraf.conf:ro" # pour le fichier de commande python d'acces a la freebox, # pour le fichier de commande python, # pour le fichier get-pip.py (install module pip puis requests) - "/volume1/docker/monitoring/fbx_telegraf/py:/usr/local/py" # pour le fichier log si on le met en place - "/volume1/docker/monitoring/fbx_telegraf/log:/usr/local/log" ports: - 9125:8125/udp - 9092:8092/udp - 9094:8094 restart: unless-stopped On notera la création et le mapping de 2 répertoires pour le docker fbx_telegraf: un répertoire pour le fichier Python et le fichier d'installation de l'utilitaire python "pip" : /usr/local/py un répertoire pour d’éventuels logs : /usr/local/log Création et démarrage du docker fbx_telegraf: docker-compose pull fbx_telegraf docker-compose up -d fbx_telegraf Via un accès ssh sur le NAS : mise à jour du docker fbx_telegraf docker exec -it fbx_telegraf apt update docker exec -it fbx_telegraf apt upgrade docker exec -it fbx_telegraf apt install -y software-properties-common Installation de python3 dans le docker telegraf télécharger get-pip.py (https://bootstrap.pypa.io/get-pip.py) dans le répertoire /usr/local/py installation des modules pip et requests docker exec -it fbx_telegraf wget https://bootstrap.pypa.io/get-pip.py docker exec -it fbx_telegraf python3 get-pip.py --prefix=/usr/local docker exec -it fbx_telegraf python3 -m pip install requests docker exec -it fbx_telegraf pip install unidecode EDIT du 08/septembre 2020 : installation Python sur la branche telegraf:1.5.x (i.e. tag latest) Au lieu des 7 commandes ci-dessus, on procèdera de la sorte : docker exec -it fbx_telegraf apt update docker exec -it fbx_telegraf apt upgrade docker exec -it fbx_telegraf dpkg --configure -a docker exec -it fbx_telegraf apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common docker exec -it fbx_telegraf wget https://bootstrap.pypa.io/get-pip.py docker exec -it fbx_telegraf apt-get install python3-distutils docker exec -it fbx_telegraf python3 get-pip.py --prefix=/usr/local docker exec -it fbx_telegraf python3 -m pip install requests docker exec -it fbx_telegraf pip install unidecode Il se peut que vous ayez une erreur du type : E: dpkg was interrupted, you must manually run 'dpkg --configure -a' to correct the problem Dans ce cas, .... suivre à la lettre la consigne et lancer donc la commande # dpkg --configure -a . Puis poursuivre normalement Script Python : On place le script Python fbx_telegraf_059.py dans le répertoire /usr/local/py (ce script a été mis à jour pour mes propres besoins. N’hésitez pas à le reprendre, en particulier en fonction de l'API Freebox si il vous manque des éléments) EDIT du 27/04/2021 : mise à jour du fichier python en version ed061. version basée sur l'API V8 de FreeboxOs compatibilité avec Freebox POP je conseille de repartir d'une database InfluxDB vierge cf message en page 9 pour plus de détails c'est par ici : https://github.com/bruno78310/Freebox-Revolution-Monitoring.git Modification du fichier de configuration telegraf : 1) Dans la section "Input Plugin" : ############################################################################### # INPUT PLUGINS # ############################################################################### ############################################################################### # INPUT PLUGINS FREEBOX # ############################################################################### # Read metrics from one or more commands that can output to stdout [[inputs.exec]] ## Commands array # commands = [ "python3 /usr/local/py/freebox_059.py -SPHDIWX" ] ## Timeout for each command to complete. timeout = "5s" ## Data format to consume. ## Each data format has it's own unique set of configuration options, read ## more about them here: ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md # data_format = "graphite" data_format = "influx" A noter : le script python "freebox_059.py" est lancé avec un certain nombre d'options, chacune correspondant à un groupe de données récupérées. Si on n'a pas besoin de toutes ces données, selon les besoins, il est tout à fait possible de supprimer les options que l'on ne souhaite pas grapher. freebox_059.py -SPHDIWX : S : état du switch 4 ports X : liste les hosts connectés P : état des ports du switch H : system status D : status disque interne I : status des interfaces LAN W : status du Wifi 4 : status aggregation xdsl / 4g 2) modification de la base influxdb cible, section "Output Plugins" : On va envoyer nos données vers une base de données du nom de fbx_database, user fbx_databse, password fbx_database De plus, on va créer nous même cette database => skip_database_creation = true ############################################################################### # OUTPUT PLUGINS # ############################################################################### # Configuration for sending metrics to InfluxDB [[outputs.influxdb]] ## The full HTTP or UDP URL for your InfluxDB instance. ## ## Multiple URLs can be specified for a single cluster, only ONE of the ## urls will be written to each interval. # urls = ["unix:///var/run/influxdb.sock"] # urls = ["udp://127.0.0.1:8089"] urls = ["http://influxdb:8086"] ## The target database for metrics; will be created as needed. ## For UDP url endpoint database needs to be configured on server side. database = "fbx_telegraf" ## The value of this tag will be used to determine the database. If this ## tag is not set the 'database' option is used as the default. database_tag = "" ## If true, the database tag will not be added to the metric. # exclude_database_tag = false ## If true, no CREATE DATABASE queries will be sent. Set to true when using ## Telegraf with a user without permissions to create databases or when the ## database already exists. skip_database_creation = true ## Name of existing retention policy to write to. Empty string writes to ## the default retention policy. Only takes effect when using HTTP. retention_policy = "" ## Write consistency (clusters only), can be: "any", "one", "quorum", "all". ## Only takes effect when using HTTP. write_consistency = "any" ## Timeout for HTTP messages. timeout = "30s" ## HTTP Basic Auth username = "fbx_telegraf" password = "fbx_telegraf" ## HTTP User-Agent # user_agent = "telegraf" On redémarre le docker fbx_telegraf pour prise en compte Création de la database fbx_telegraf sur influxdb Se connecter en console sur le docker influxdb, puis créer la database : root@influxdb:/# influx -username admin -password admin Connected to http://localhost:8086 version 1.7.9 InfluxDB shell version: 1.7.9 > show databases name: databases name ---- _internal nas_telegraf > create database fbx_telegraf > use fbx_telegraf Using database fbx_telegraf > create user fbx_telegraf with password 'fbx_telegraf' > grant all on fbx_telegraf to fbx_telegraf > > show databases name: databases name ---- _internal nas_telegraf fbx_telegraf > show users user admin ---- ----- admin true nas_telegraf false fbx_telegraf false > On redémarre le docker influxdb pour prise en compte. Autorisation de l'application sur le Freebox. il faut autoriser l'application sur la Freebox. Pour cela se placer dans une console fbx_telegraf et aller dans le dossier /usr/local/py root@fbx_telegraf:/usr/local/py# python3 freebox_059.py -h usage: freebox_050.py [-h] [-s] [-r] [-n app_name] [-i app_id] [-d device_name] [-f format] [-e endpoint] [-S] [-P] [-H] [-D] [-L] [-W] [-I] [-X] optional arguments: -h, --help show this help message and exit -s, --register-status Get register status -r, --register Register app with Freebox API -n app_name, --appname app_name Register with app_name -i app_id, --appid app_id Register with app_id -d device_name, --devicename device_name Register with device_name -f format, --format format Specify output format between graphite and influxdb -e endpoint, --endpoint endpoint Specify endpoint name or address -S, --status-switch Get and show switch status -P, --status-ports Get and show switch ports stats -H, --status-sys Get and show system status -D, --internal-disk-usage Get and show internal disk usage -L, --lan-config Get and show LAN config -W, --wifi-usage Get and show wifi usage -I, --lan-interfaces Get and show lan interfaces -X, --interfaces-hosts Get and show interfaces hosts On va demander d'enregistrer notre application sur la Freebox: root@fbx_telegraf:/usr/local/py# python3 freebox_059.py -r => il faut valider sur l'ecran LCD de la Freebox. => le nom de l'application codée dans le fichier fbx_telegraf_059.py est : grafanamonitor. => controler sur la Freebox que l'application a bien été acceptée : Paramètres / Gestion des Accès / Applications on peut aussi vérifier sur la console fbx_telegraf : root@fbx_telegraf:/usr/local/py# python3 freebox_059.py -s Status: auth already done root@fbx_telegraf:/usr/local/py# root@fbx_telegraf:/usr/local/py# python3 freebox_059.py -r Already registered, exiting root@fbx_telegraf:/usr/local/py# Vous trouverez alors un fichiers .credentials dans le répertoire /usr/local/py . A partir de là, fbx_telegraf est en mesure de collecter les données sur la Freebox, et de les envoyer sur la base de données fbx_telegraf du docker influxdb. on peut contrôler à la main que les valeurs sont bien accessibles, par exemple : root@fbx_telegraf:/usr/local/py# python3 freebox_059.py -H | grep System freebox,endpoint=mafreebox.freebox.fr,tag1=System,tag2=NULL,tag3=NULL sys_uptime_val=2787529 freebox,endpoint=mafreebox.freebox.fr,tag1=System,tag2=NULL,tag3=NULL uptime="32 jours 6 heures 18 minutes 49 secondes" freebox,endpoint=mafreebox.freebox.fr,tag1=System,tag2=NULL,tag3=NULL firmware_version="4.2.5" freebox,endpoint=mafreebox.freebox.fr,tag1=System,tag2=NULL,tag3=NULL board_name="fbxgw2r" freebox,endpoint=mafreebox.freebox.fr,tag1=System,tag2=NULL,tag3=NULL disk_status="active" freebox,endpoint=mafreebox.freebox.fr,tag1=System,tag2=NULL,tag3=NULL user_main_storage="Disque dur" freebox,endpoint=mafreebox.freebox.fr,tag1=System,tag2=NULL,tag3=NULL has_ext_telephony=True freebox,endpoint=mafreebox.freebox.fr,tag1=System,tag2=NULL,tag3=NULL has_speakers_jack=True freebox,endpoint=mafreebox.freebox.fr,tag1=System,tag2=NULL,tag3=NULL wifi_type="2d4_5g" freebox,endpoint=mafreebox.freebox.fr,tag1=System,tag2=NULL,tag3=NULL pretty_name="Freebox Server (r2)" freebox,endpoint=mafreebox.freebox.fr,tag1=System,tag2=NULL,tag3=NULL customer_hdd_slots=0 freebox,endpoint=mafreebox.freebox.fr,tag1=System,tag2=NULL,tag3=NULL name="fbxgw-r2/full" freebox,endpoint=mafreebox.freebox.fr,tag1=System,tag2=NULL,tag3=NULL has_speakers=True freebox,endpoint=mafreebox.freebox.fr,tag1=System,tag2=NULL,tag3=NULL internal_hdd_size=250 freebox,endpoint=mafreebox.freebox.fr,tag1=System,tag2=NULL,tag3=NULL has_femtocell_exp=True freebox,endpoint=mafreebox.freebox.fr,tag1=System,tag2=NULL,tag3=NULL has_internal_hdd=True freebox,endpoint=mafreebox.freebox.fr,tag1=System,tag2=NULL,tag3=NULL has_dect=True freebox,endpoint=mafreebox.freebox.fr,tag1=System,tag2=Fan,tag3=NULL id="fan0_speed" freebox,endpoint=mafreebox.freebox.fr,tag1=System,tag2=Fan,tag3=NULL name="Ventilateur 1" freebox,endpoint=mafreebox.freebox.fr,tag1=System,tag2=Fan,tag3=NULL value=2436 freebox,endpoint=mafreebox.freebox.fr,tag1=System,tag2=Sensor,tag3=temp_hdd id="temp_hdd" freebox,endpoint=mafreebox.freebox.fr,tag1=System,tag2=Sensor,tag3=temp_hdd name="Disque dur" freebox,endpoint=mafreebox.freebox.fr,tag1=System,tag2=Sensor,tag3=temp_hdd value=36 freebox,endpoint=mafreebox.freebox.fr,tag1=System,tag2=Sensor,tag3=temp_sw id="temp_sw" freebox,endpoint=mafreebox.freebox.fr,tag1=System,tag2=Sensor,tag3=temp_sw name="Temperature Switch" freebox,endpoint=mafreebox.freebox.fr,tag1=System,tag2=Sensor,tag3=temp_sw value=48 freebox,endpoint=mafreebox.freebox.fr,tag1=System,tag2=Sensor,tag3=temp_cpum id="temp_cpum" freebox,endpoint=mafreebox.freebox.fr,tag1=System,tag2=Sensor,tag3=temp_cpum name="Temperature CPU M" freebox,endpoint=mafreebox.freebox.fr,tag1=System,tag2=Sensor,tag3=temp_cpum value=58 freebox,endpoint=mafreebox.freebox.fr,tag1=System,tag2=Sensor,tag3=temp_cpub id="temp_cpub" freebox,endpoint=mafreebox.freebox.fr,tag1=System,tag2=Sensor,tag3=temp_cpub name="Temperature CPU B" freebox,endpoint=mafreebox.freebox.fr,tag1=System,tag2=Sensor,tag3=temp_cpub value=53 root@fbx_telegraf:/usr/local/py# Dans la console du docker influxdb, on verifie que l'on recoit bien les données de nas_telegraf et fbx_telegraf Grafana : sur grafana, definir une nouvelle source de données : Name : InfluxDB-1 Freebox (example) URL : http://@NAS:8086 (comme pour le nas_telegraf,car c'est le même docker influxdb) Access : serveur Basic auth : yes Basic auth details : user : fbx_telegraf password : fbx_telegraf Database : fbx_telegraf User : fbx_telegraf password : fbx_telegraf http method : GET On valide (SAVE & TEST) et ce doit être OK. Il ne reste plus qu'à créer le ou les Dashboard souhaités ! => Ne pas oublier de préciser l'origine des données : InfluxDB-1 Freebox Pour ma part, j'ai réalisé: un Dashboard général (trafic, CPU, status des ports du switch, températures ....) un Dashboard listant les stations actives (globales et Wifi) Resterait à faire : l'API de la Freebox est accessible ici en http. Je n'ai pas réussi par manque de connaissances à passer en https je n'ai pas regardé du tout le cas d'un accès xDSL .... le script python s'appuie sur l'API V8 de la Freebox, et est donc compatible avec les Freebox Revolution et POP. La description de cet API peut se trouver ici : https://dev.freebox.fr/sdk/os/# Enfin, tous les paramètres disponibles n'ont pas forcement été implémentés dans le script. Mais les principaux sont là. SI il y avait un besoin particulier, faites le moi savoir. Freebox-1585840825569.json Liste stations FreeBox-1585840845020.json freebox_054.py freebox_058.py Modifié le 27 avril 2021 par bruno78 edition 061 du script 2 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Einsteinium Posté(e) le 18 avril 2020 Partager Posté(e) le 18 avril 2020 cela me semble complet, je valide. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
firlin Posté(e) le 18 avril 2020 Partager Posté(e) le 18 avril 2020 Le confinement a du bon on voit apparaitre de nouveau tutos 😁 Merci @bruno78 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bruno78 Posté(e) le 18 avril 2020 Auteur Partager Posté(e) le 18 avril 2020 You're welcome ! Je suis ouvert aux remarques / commentaires ... sur le fonds bien sûr, mais également sur la forme, c'est mon premier ! 1 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
kestouf Posté(e) le 18 avril 2020 Partager Posté(e) le 18 avril 2020 (modifié) re 🙂 Je viens de me lancer sur ton tuto. Je ne passe pas par docker mais je ne suis pas certain que le problème que je rencontre aie quelque chose avoir avec les dockers. Je suis donc sous Ubuntu 18.04 LTS. J'ai du créer un dossier py dans /user/local car il n'existait pas. J'ai installé python3 avec la commande : sudo apt-get install python3 Puis j'ai lancé l' éxecution du fichier python :sudo python3 get-pip.py --prefix=/usr/local L'erreur que je rencontre est : sudo python3 get-pip.py --prefix=/usr/local Traceback (most recent call last): File "get-pip.py", line 22711, in <module> main() File "get-pip.py", line 198, in main bootstrap(tmpdir=tmpdir) File "get-pip.py", line 82, in bootstrap from pip._internal.cli.main import main as pip_entry_point File "/tmp/tmpxqqhkzt4/pip.zip/pip/_internal/cli/main.py", line 10, in <module> File "/tmp/tmpxqqhkzt4/pip.zip/pip/_internal/cli/autocompletion.py", line 9, in <module> File "/tmp/tmpxqqhkzt4/pip.zip/pip/_internal/cli/main_parser.py", line 7, in <module> File "/tmp/tmpxqqhkzt4/pip.zip/pip/_internal/cli/cmdoptions.py", line 19, in <module> ModuleNotFoundError: No module named 'distutils.util' Je n'y connais rien du tout en python 😞 Pourriez-vous me donner un coup de main? Merci Modifié le 18 avril 2020 par kestouf 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
eirock67 Posté(e) le 18 avril 2020 Partager Posté(e) le 18 avril 2020 Bonjour, Merci pour ce tuto, j'ai bien suivi la procédure mais j'ai une erreur au moment de l'enregistrement de l'appli sur la Fbx : root@telegraf_fbx:/usr/local/py# python3 freebox_050.py -r Doing registration Traceback (most recent call last): File "freebox_050.py", line 784, in <module> do_register(auth) File "freebox_050.py", line 670, in do_register write_auth(register_infos['result']) File "freebox_050.py", line 642, in write_auth f.write(authFile) File "/usr/lib/python3.5/configparser.py", line 916, in write self._sections[section].items(), d) File "/usr/lib/python3.5/configparser.py", line 920, in _write_section fp.write("[{}]\n".format(section_name)) TypeError: a bytes-like object is required, not 'str' 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bruno78 Posté(e) le 19 avril 2020 Auteur Partager Posté(e) le 19 avril 2020 Bonjour, @kestouf, je ne "connais" Python que depuis que je me suis intéressé au sujet du monitoring de le Freebox ! Le docker telegraf est basé sur une Debian 9. Je n'ai pas regardé les autres cas. Pour installer Python sur Ubuntu, je suppose qu'il y a une manière spécifique .... Je n'ai pas d'autre choix que de te proposer notre moteur de recherche préféré. Cela semble largement documenté. Par exemple https://linuxize.com/post/how-to-install-pip-on-ubuntu-18.04/ Mais je n'ai pas essayé cette configuration. @eirock67 bonjour, il sera apprécié de passer par la case présentation afin de mieux te connaitre, et ainsi mieux connaitre ta configuration, ce qui nous aidera à mieux répondre. Là c'est un peu compliqué de répondre sans savoir quelle est ta configuration, et les actions que tu as menées précédemment à ce message d'erreur. Ceci dit, en reprenant mes notes, j'avais eu des soucis sur cette partie. Ma Freebox n'étant pas opérationnelle pour le moment, je ne vais pas trop pouvoir regarder ni tester. En plus, c'est une manip que je n'ai fait qu'une fois. Une fois la Freebox enregistrée, on passe à autre chose et on ne se soucie plus trop de cet aspect. C'est un point qu'il faut sécuriser, si il y a un problème, tu ne seras pas le seul à tomber dessus. Une piste néanmoins pour le moment : ligne 641 du fichier freebox_050.py : remplace open(cfg_file, "ab") par open(cfg_file, "a") "a" était la valeur initiale du script lorsque je l'ai repris. Pour le faire marcher , j'ai dû mettre "ab" ... 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
kestouf Posté(e) le 19 avril 2020 Partager Posté(e) le 19 avril 2020 Salut @bruno78: Merci de m'avoir mis sur la piste de l'installation des pip. J'ai pu avancé. je n'avais jamais entendu parlais de ces PIP @bruno78 , @eirock67, Je vous confirme que le remplacement de "ab" par "a" fonctionne. Je rencontrais exactement le même problème. Merci 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
eirock67 Posté(e) le 19 avril 2020 Partager Posté(e) le 19 avril 2020 @bruno78 Oops, j'ai complètement zappé, présentation faite 😊 J'ai ma Freebox Revolution en mode Bridge avec derrière un routeur Asus RT-AC88U, après avoir modifié la ligne 641 ca fonctionne ! Merci à toi. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bruno78 Posté(e) le 19 avril 2020 Auteur Partager Posté(e) le 19 avril 2020 Pour info, j'ai rajouté dans le TUTO : le script Python ed 051 : corrections pour les accès xDSL (ajout de tags, pour ceux qui ont été voir dans le python lui même). /!\ je n'ai pas pu le tester /!\ 2 fichiers .json pour exemple qui correspondent aux graphes grafana que je montre. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
kestouf Posté(e) le 19 avril 2020 Partager Posté(e) le 19 avril 2020 Re bonjour Je suis navré de revenir vers vous, mais je rencontre un problème avec soit avec le scripte freebox_05X.py soit avec telegraf. Quand le lance le telegraf je rencontre une erreur : telegraf --config /etc/telegraf/telegraf.conf 2020-04-19T10:52:46Z I! Starting Telegraf 1.14.1 2020-04-19T10:52:46Z I! Loaded inputs: cpu exec 2020-04-19T10:52:46Z I! Loaded aggregators: 2020-04-19T10:52:46Z I! Loaded processors: 2020-04-19T10:52:46Z I! Loaded outputs: influxdb 2020-04-19T10:52:46Z I! Tags enabled: host=odroid 2020-04-19T10:52:46Z I! [agent] Config: Interval:10s, Quiet:false, Hostname:"odroid", Flush Interval:10s 2020-04-19T10:52:53Z E! [inputs.exec] Error in plugin: exec: exit status 1 for command 'python3 /usr/local/py/freebox_050.py -SPHDIWX': Traceback (most recent call last):... 2020-04-19T10:53:01Z E! [inputs.exec] Error in plugin: exec: exit status 1 for command 'python3 /usr/local/py/freebox_050.py -SPHDIWX': Traceback (most recent call last):... 2020-04-19T10:53:11Z E! [inputs.exec] Error in plugin: exec: exit status 1 for command 'python3 /usr/local/py/freebox_050.py -SPHDIWX': Traceback (most recent call last):... 2020-04-19T10:53:21Z E! [inputs.exec] Error in plugin: exec: exit status 1 for command 'python3 /usr/local/py/freebox_050.py -SPHDIWX': Traceback (most recent call last):... 2020-04-19T10:53:31Z E! [inputs.exec] Error in plugin: exec: exit status 1 for command 'python3 /usr/local/py/freebox_050.py -SPHDIWX': Traceback (most recent call last):... 2020-04-19T10:53:42Z E! [inputs.exec] Error in plugin: exec: exit status 1 for command 'python3 /usr/local/py/freebox_050.py -SPHDIWX': Traceback (most recent call last):... 2020-04-19T10:53:51Z E! [inputs.exec] Error in plugin: exec: exit status 1 for command 'python3 /usr/local/py/freebox_050.py -SPHDIWX': Traceback (most recent call last):... 2020-04-19T10:54:01Z E! [inputs.exec] Error in plugin: exec: exit status 1 for command 'python3 /usr/local/py/freebox_050.py -SPHDIWX': Traceback (most recent call last):... 2020-04-19T10:54:11Z E! [inputs.exec] Error in plugin: exec: exit status 1 for command 'python3 /usr/local/py/freebox_050.py -SPHDIWX': Traceback (most recent call last):... 2020-04-19T10:54:21Z E! [inputs.exec] Error in plugin: exec: exit status 1 for command 'python3 /usr/local/py/freebox_050.py -SPHDIWX': Traceback (most recent call last):... Quand je lance le scripte manuellement : python3 /usr/local/py/freebox_050.py -SPHDIWX Traceback (most recent call last): File "/usr/local/py/freebox_050.py", line 788, in <module> get_and_print_metrics(auth, args.status_switch, args.status_ports, args.status_sys, args.disk_usage, args.lan_config, args.wifi_usage, args.lan_interfaces, args.interfaces_hosts) File "/usr/local/py/freebox_050.py", line 502, in get_and_print_metrics l=len(sys_json_raw['result']) KeyError: 'result' Mais quand je lance le test que tu donne dans ton tuto, le script récupère bien les infos : python3 freebox_050.py -H | grep System freebox,endpoint=mafreebox.freebox.fr,tag1=System,tag2=NULL,tag3=NULL sys_fan_rpm=2036 freebox,endpoint=mafreebox.freebox.fr,tag1=System,tag2=NULL,tag3=NULL sys_temp_sw=52 freebox,endpoint=mafreebox.freebox.fr,tag1=System,tag2=NULL,tag3=NULL sys_uptime_val=1094728 freebox,endpoint=mafreebox.freebox.fr,tag1=System,tag2=NULL,tag3=NULL uptime="12 jours 16 heures 5 minutes 28 secondes" freebox,endpoint=mafreebox.freebox.fr,tag1=System,tag2=NULL,tag3=NULL sys_temp_cpub=72 freebox,endpoint=mafreebox.freebox.fr,tag1=System,tag2=NULL,tag3=NULL sys_temp_cpum=62 freebox,endpoint=mafreebox.freebox.fr,tag1=System,tag2=NULL,tag3=NULL firmware_version="4.0.7" Aurais tu une idée? Merci 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bruno78 Posté(e) le 19 avril 2020 Auteur Partager Posté(e) le 19 avril 2020 (modifié) Bonjour, que se passe t'il si tu lances la commande suivante depuis la console : python3 freebox_050.py -W ?? Et par curiosité, as-tu le Wifi configuré sur la box ? Modifié le 19 avril 2020 par bruno78 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
kestouf Posté(e) le 20 avril 2020 Partager Posté(e) le 20 avril 2020 (modifié) Le 19/04/2020 à 16:00, bruno78 a dit : Bonjour, que se passe t'il si tu lances la commande suivante depuis la console : python3 freebox_050.py -W ?? Et par curiosité, as-tu le Wifi configuré sur la box ? Bonjour, Je viens d'essayer et j'ai le même message d'erreur: root@odroid:/usr/local/py# python3 freebox_050.py -W Traceback (most recent call last): File "freebox_050.py", line 788, in <module> get_and_print_metrics(auth, args.status_switch, args.status_ports, args.status_sys, args.disk_usage, args.lan_config, args.wifi_usage, args.lan_interfaces, args.interfaces_hosts) File "freebox_050.py", line 502, in get_and_print_metrics l=len(sys_json_raw['result']) KeyError: 'result' Mon Wifi est désactivé car j'utilise un point d’accès plus évolué. Merci pour ton aide. Modifié le 20 avril 2020 par kestouf 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bruno78 Posté(e) le 21 avril 2020 Auteur Partager Posté(e) le 21 avril 2020 Bonjour, dans ce cas, dans le fichier telegraf.conf, il faut supprimer l'appel aux information Wifi. Il faudrait simplement rajouter dans le script python un test préalable de présence du Wifi. Sinon, la solution immédiate, c'est de supprimer le -W dans les options de lancement du script python, càd : remplacer commands = [ "python3 /usr/local/py/freebox_050.py -SPHDIWX" ] par commands = [ "python3 /usr/local/py/freebox_050.py -SPHDIX" ] 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
kestouf Posté(e) le 21 avril 2020 Partager Posté(e) le 21 avril 2020 (modifié) Bonjour Effectivement en retirant le W cela marche mieux, mais j'ai une nouvelle erreur avec telegraf. Je pense que cela a un lien direct avec le fait que je sois en VDSL: [inputs.exec] Error in plugin: metric parse error: expected tag at 10:44: "freebox,endpoint=mafreebox.freebox.fr,tag1=,tag2=,tag3= dsl_modulation=\"vdsl (vdsl2_17a)\"" Le vdsl2_17a est se qui est affiché sur l’affichage de ma freebox dans protocole (je crois) Aurais tu une idée? Merci Modifié le 21 avril 2020 par kestouf 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bruno78 Posté(e) le 22 avril 2020 Auteur Partager Posté(e) le 22 avril 2020 Bonjour @kestouf, je vais regarder cela dans la journée. Cela fait partie des points que je n'ai pas pu tester, et que j'ai modifiés le plus récemment. Je n'ai pas de VDSL, et pour le moment le DD de ma Fbox est cramé, donc il se peut que je te demande, si tu veux bien, de tester lorsque j'aurai une correction à proposer (dans la journée j'espère). 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
kestouf Posté(e) le 22 avril 2020 Partager Posté(e) le 22 avril 2020 Il y a 1 heure, bruno78 a dit : Bonjour @kestouf, je vais regarder cela dans la journée. Cela fait partie des points que je n'ai pas pu tester, et que j'ai modifiés le plus récemment. Je n'ai pas de VDSL, et pour le moment le DD de ma Fbox est cramé, donc il se peut que je te demande, si tu veux bien, de tester lorsque j'aurai une correction à proposer (dans la journée j'espère). Bonjour @bruno78 Afin de faciliter tes tests, je peux te faire un accès ssh sur un rasp vierge pour que tu puisse tester ton script python sur une freebox en VDSL. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bruno78 Posté(e) le 22 avril 2020 Auteur Partager Posté(e) le 22 avril 2020 @kestouf, effectivement il y avait une erreur (un oubli). Remplacer if 'result' in json_raw: my_data['xdsl_modulation'] = json_raw['result']['status']['modulation'] + " ("+json_raw['result']['status']['protocol']+")" # in seconds par if 'result' in json_raw: my_data[tag1+"."+tag2+"."+tag3+"."+'xdsl_modulation'] = json_raw['result']['status']['modulation'] + " ("+json_raw['result']['status']['protocol']+")" # in seconds freebox_052_draft.py Ça devrait être meilleur ! 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
kestouf Posté(e) le 22 avril 2020 Partager Posté(e) le 22 avril 2020 (modifié) @bruno78 : Merci beaucoup Bruno. Çà marche ! Les données sont bien récupéré. Maintenant il faut que j'adapte des valeur qui ne me corresponde pas, le Thresholds par exemple ou faut que je regarde commande ca marche le systeme de couleur. A la différence de ta solution, j'ai un seul agent telegraf qui récupère les infos de mon ODROID XQ4 (influxdb+telegraf+grafa), de mon DS918+ et de ma Freebox. Merci encore A bientôt ! Modifié le 22 avril 2020 par kestouf 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
pagecp Posté(e) le 26 avril 2020 Partager Posté(e) le 26 avril 2020 (modifié) Bonjour, Je suis tombé par hasard sur ce tuto, et je trouve l'interface graphique de monitoring de la freebox génial!! 🙂 Je n'ai pas de NAS, je n'ai qu'une tour de disques branchée sur mon mac Mini. J'ai une Freebox Mini 4K et la ftth. Dans le tuto tu mentionnes qu'il faut une chaine existante de telegraf/innodb/grafana. Puisque je n'ai pas de NAS je ne peux suivre le tuto pour installer cette chaine. Je suis un peu perdu sur comment installer dans un contexte hors NAS, pour le monitoring freebox exclusivement. J'ai de l'expérience avec docker, boulot oblige, et énormément d'expérience Linux, de même que réseau, alors pas un soucis de compréhension technique... a priori ça devrait être plus simple. Si jamais tu avais des conseils, même rapides, ce serait bien apprécié! Merci! Modifié le 26 avril 2020 par pagecp 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Jeff777 Posté(e) le 27 avril 2020 Partager Posté(e) le 27 avril 2020 Bonjour @bruno78 J'ai suivi le tuto de @.Shad. sans trop de difficulté et j'avais décidé de m'arrêter là. Mais finalement j'y ai pris goût et, laissant l'optimisation du Dashboard obtenu pour plus tard, je me suis décidé à tenter ton tuto pour ma freebox, Je pensais bien qu'il était de difficulté supérieure et je ne suis pas déçu. Dès la première commande sur putty ça plante 😟 Je te pose quelques questions si tu veux bien répondre : 1/Mon réseau créé dans docker s'appelle data_export et son IP est 172.18.0.0/10. Je suppose que je dois remplacer 172.20.0.0 par 172.18.0.0 et monitoring par data_export (dans les captures d'écran du tuto le réseau s'appelle control_monitoring ???). La première fois cela a fonctionné mais à la commande suivante il manquait la création des répertoires log et py. Je les ai créé mais c'est à partir de là que la déroute a commencé. J'ai tenté de repartir du début et j'ai supprimé les répertoires log et py créés manuellement. Est-ce qu'il pourrait y avoir autre chose à supprimer/corriger ? 2/ J'ai alors essayé, sans succès, plusieurs adaptations de l'extrait de fichier yaml que tu donnes pour le docker-compose pour créer le conteneur fbx_telegraf. Voilà la réponse : Service "fbx_telegraf" uses an undefined network "data_export". Si je garde monitoring j'ai la même réponse avec "monitoring". 3/Tu parles d'extrait de fichier pour créer le docker-compose. Faut-il le compléter par autre chose ? Peux-tu me donner quelques conseils ? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bruno78 Posté(e) le 27 avril 2020 Auteur Partager Posté(e) le 27 avril 2020 Bonjour @Jeff777, je me rends compte que le tuto n'est pas forcement hyper clair. Je vais regarder tes questions dans la journée. (là je taffe, c'est un peu compliqué de se concentrer 🙂 ). Si je comprends bien, ton soucis tourne principalement autour de l'utilisation du docker-compose.yaml ? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Jeff777 Posté(e) le 27 avril 2020 Partager Posté(e) le 27 avril 2020 Merci pour ta réponse. Y'a pas urgence...je suis retraité. Oui c'est la création du conteneur fbx_telegraf avec le docker-compose qui me pose problème. Mais en relisant les tutos, de Shad et le tien, je viens de trouver quelque chose que j'avais bien fait lors de mon premier essai et que j'avais omis par la suite. Comme quoi l'informatique c'est comme la musique il faut avoir suivi la partition plusieurs fois avant de pouvoir s'en passer. Je continue et te tiens au courant. Bon courage à ceux qui bossent 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bruno78 Posté(e) le 27 avril 2020 Auteur Partager Posté(e) le 27 avril 2020 OK. Juste une remarque en passant : ne prends pas un réseau en /10 (172.18.0.0/10), c'est beaucoup trop large ! Un /10 te donne plus de 4.000.000 d'adresses IP possibles dans ton réseau. En /29 te donne 6 adresses utilisables pour les hosts sur ce sous réseau. Ca doit suffire ici dans notre example. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bruno78 Posté(e) le 27 avril 2020 Auteur Partager Posté(e) le 27 avril 2020 Hello @Jeff777 peux-tu stp me montrer quel est ton docker-compose pour nas_telegraf/grafana/influxdb (donc fonctionnel avant de rajouter le docker fbx_telegraf)? ce sera plus facile pour voir comment rajouter la partie fbx_telegraf. les dossiers ./py et ./log sont à créer avant de lancer le docker-compose (sinon il va planter en disant que le répertoire est inexistant) le dossier ./py va contenir le script Python freebox_050.py (ou fichier plus récent; J'en suis à la version 052 DRAFT pour corriger le pb avec le xDSL, et le pb lorsque le Wifi est disable. Je mettrai le 052 en ligne une fois sûr qu'il soit bon) le fichier .credentials créé suit à l'association avec la Freebox. Ce fichier peut être sauvegardé ailleurs puis remis dans ce dossier si on repart de zéro, ca évitera de refaire l'association entre notre docker telegraf et la Freebox. le dossier ./log va contenir .... les logs si on s'en sert. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Rejoindre la conversation
Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.