Aller au contenu

[TUTO] Monitorer sa Freebox Revolution


bruno78

Messages recommandés

il y a 1 minute, bruno78 a dit :

tout d'abord je ne m'explique pas ces deconnexions intempestives. Je redemarre la box ou le NAS (bon pas tous les jours non plus !) mais c'est arrivé une fois ou 2 ces derniers temps, et je n'ai jamais à tout reconstruire !

ce n'est pas systématique. Il faut que je regarde dans quelles circonstances cela se produit.

Lien vers le commentaire
Partager sur d’autres sites

@Jeff777,

a priori les commandes docker save et docker load devraient répondre à ton problème de sauvegarde d'image docker (ps je n'ai pas testé).

https://docs.docker.com/engine/reference/commandline/save/

https://docs.docker.com/engine/reference/commandline/load/

Lien vers le commentaire
Partager sur d’autres sites

Bonsoir @bruno78

J'ai essayé de sauvegarder mon docker telegraf et j'ai obtenu ceci

Capture.JPG.8148c49b36d323a61adf3152204281fc.JPG

J'ai, semble-t-il, bien fait un fichier .tar mais lorsque je l'ai sauvegardé cela c'est moins bien passé.

Je ne comprends pas "no space left on device" alors que mon NAS est loin d'être saturé.

A moins que ce soit dû au  " mem_limit: 75M" du docker-compose.

C'est cela ??

Par contre dans le root j'ai un fichier telegraf.tar de 632 111 KB. Est-ce que c'est la sauvegarde correcte?

 

Modifié par Jeff777
Lien vers le commentaire
Partager sur d’autres sites

alors a priori il serait conseillé de faire un docker commit -p ...  avant le backup, et de ne pas le faire dans la partition / qui n'est pas taillée pour cela. Si on se met dans /homes  ca ne pose pas de problème.

J'essaie de mettre cela au clair ce weekend.

 

Lien vers le commentaire
Partager sur d’autres sites

@Jeff777,

pour ce que l'on veut faire ici, càd disposer d'une image telegraf incluant l'installation de Python3, la commande "docker commit" fait le boulot.

Voici donc comment j'ai procédé : (les outputs sont tronqués car trop longs)

1) Je charge une image de telegraf vierge, je vérifie qu'il n'y a pas de python et j'y installe mon python3 selon la procédure du tuto :

root@vdsm2:/volume1/docker/monitoring# cat docker-compose.yaml

services:
    test_telegraf:
        image: telegraf:latest
        container_name: test_telegraf
        hostname: test_telegraf

        mac_address: d2:ca:ab:cd:00:06
        networks:
           data_grafana:
               ipv4_address: 172.18.0.6
        environment:
            - PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/bin:/sbin:/usr/local:/usr/src
            - TZ=CET
        volumes:
            - "/volume1/docker/dev3/telegraf/telegraf.conf:/etc/telegraf/telegraf.conf:ro"
            - "/volume1/docker/dev3/telegraf/py:/usr/local/py:ro
 mem_limit: 50M
        ports:
            - 5125:8125/udp
            - 5092:8092/udp
            - 5094:8094
        restart: unless-stopped

root@vdsm2:/volume1/docker/monitoring#
root@vdsm2:/volume1/docker/monitoring# docker-compose up -d test_telegraf
Creating test_telegraf ... done
root@vdsm2:/volume1/docker/monitoring# docker images
REPOSITORY                       TAG                 IMAGE ID            CREATED             SIZE
telegraf                         latest              79fd1e5d0a8f        3 months ago        276MB
root@vdsm2:/volume1/docker/monitoring# docker ps
CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS              PORTS                                                                    NAMES
0de5d8966d84        telegraf:latest          "/entrypoint.sh tele…"   16 seconds ago      Up 11 seconds       0.0.0.0:5092->8092/udp, 0.0.0.0:5094->8094/tcp, 0.0.0.0:5125->8125/udp   test_telegraf
root@vdsm2:/volume1/docker/monitoring# docker exec -it test_telegraf /bin/bash
root@test_telegraf:/# python -V
bash: python: command not found
root@test_telegraf:/# python3 -V
bash: python3: command not found


root@test_telegraf:/# apt update
root@test_telegraf:/# apt upgrade
….
root@test_telegraf:/# dpkg --configure -a
root@test_telegraf:/# apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
root@test_telegraf:/# wget https://bootstrap.pypa.io/get-pip.py
root@test_telegraf:/# apt-get install python3-distutils
root@test_telegraf:/# python3 get-pip.py --prefix=/usr/local
root@test_telegraf:/# python3 -m pip install requests
root@test_telegraf:/# pip install unidecode

root@test_telegraf:/# python3 -V
Python 3.7.3
root@test_telegraf:/# exit
exit

 

2) je fais dessus un "docker commit -p <reference docker> <nom_nouvelle_image>". Cela produit une nouvelle image contenant toutes les modifications effectuées auparavant. L'option -p met en pause le docker pendant la création de la nouvelle image afin de garantir qu'il n'y ai pas d'incohérence dans le file system.

root@vdsm2:/volume1/docker/monitoring# docker ps
CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS              PORTS                                                                    NAMES
0de5d8966d84        telegraf:latest          "/entrypoint.sh tele…"   16 minutes ago      Up 15 minutes       0.0.0.0:5092->8092/udp, 0.0.0.0:5094->8094/tcp, 0.0.0.0:5125->8125/udp   test_telegraf
root@vdsm2:/volume1/docker/monitoring# docker commit -p 0de5d8966d84 telegraf_py:latest
sha256:e9ac730929f7698a4264ff762f2b86a34a28113a48fda598d065fa04a19260cf
root@vdsm2:/volume1/docker/monitoring# docker images
REPOSITORY                       TAG                 IMAGE ID            CREATED             SIZE
telegraf_py                      latest              e9ac730929f7        8 seconds ago       466MB
telegraf                         latest              79fd1e5d0a8f        3 months ago        276MB
root@vdsm2:/volume1/docker/monitoring

3) je modifie mon docker-compose.yaml pour utiliser cette nouvelle image

version: "2"

services:
    test_telegraf:
        image: telegraf_py:latest
        container_name: test_telegraf
        hostname: test_telegraf

        mac_address: d2:ca:ab:cd:00:06
        networks:
           data_grafana:
               ipv4_address: 172.18.0.6
        environment:
            - PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/bin:/sbin:/usr/local:/usr/src
            - TZ=CET
        volumes:
            - "/volume1/docker/dev3/telegraf/telegraf.conf:/etc/telegraf/telegraf.conf:ro"
            - "/volume1/docker/dev3/telegraf/py:/usr/local/py:ro"  
        mem_limit: 50M
        ports:
            - 5125:8125/udp
            - 5092:8092/udp
            - 5094:8094
        restart: unless-stopped

4) j'efface le docker mis à jour manuellement, et je relance le docker-compose avec la nouvelle image telegraf_py:latest

root@vdsm2:/volume1/docker/monitoring# docker stop test_telegraf
test_telegraf
root@vdsm2:/volume1/docker/monitoring# docker rm test_telegraf
test_telegraf


root@vdsm2:/volume1/docker/monitoring# docker-compose up -d test_telegraf
Creating test_telegraf ... done
root@vdsm2:/volume1/docker/monitoring#

5) je vérifie les détails du nouveau docker : il a bien pris en compte l'image telegraf_py:latest

root@vdsm2:/volume1/docker/monitoring# docker inspect test_telegraf
[
    {
        "Id": "a778a6d7d5e50a1e29837205d3fbe5710dafc2884f0f26e5cae09981b0737219",
        "Created": "2020-11-28T06:29:51.30628885Z",
        "Path": "/entrypoint.sh",
        "Args": [
            "telegraf"
        ],
        
	….

            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/bin:/sbin:/usr/local:/usr/src",
                "TELEGRAF_VERSION=1.15.2",
                "TZ=CET"
            ],
            "Cmd": [
                "telegraf"
            ],
            "ArgsEscaped": true,
            "Image": "telegraf_py:latest",
            "Volumes": {
                "/etc/telegraf/telegraf.conf": {},
                "/usr/local/py": {}
            },
	…..
                }
            }
        }
    }
]
root@vdsm2:

6) et enfin je vérifie que mon docker basé sur l'image commitée telegraf_py:latest contient le python fonctionnel :

root@vdsm2:/volume1/docker/monitoring# docker exec -it test_telegraf /bin/bash
root@test_telegraf:/# python3 -V
Python 3.7.3

Voilà.

Désolé c'était un peu long, mais je voulais être sûr que c'était bon. Donc pas besoin de docker save/load.

Cdt

Bruno78

Modifié par bruno78
Lien vers le commentaire
Partager sur d’autres sites

Merci @bruno78

Quel boulot je t'ai donné !

Je vais mettre cela en oeuvre dans la journée 😉

PS Je me demande si mes pertes de connexion n'était pas dues au retrait de la clé usb de la pop. Je n'ai pas trouvé de solution pour la débrancher proprement (peut-être faut-il arrêter la box tout simplement).

Lien vers le commentaire
Partager sur d’autres sites

Bonjour @bruno78

Super ! Je viens de le faire et tout s'est déroulé comme tu l'as écrit.😉

Maintenant j'ai deux questions :

A quoi sert l'adresse mac que tu as dans ton docker-compose ?

Deuxième question peut-être aussi pour @.Shad. :

Dans mon nouveau docker-compose j'ai laissé le label de watchtower. Je pense que j'aurai dû le retirer. Que va-t-il se passer au prochain déclenchement de watchtower si je ne le retire pas ?

Bon dimanche

Edit : et j'ai toujours mon Dashboard Freebox " up and running " !

Modifié par Jeff777
Lien vers le commentaire
Partager sur d’autres sites

@Jeff777,

l'adresse MAC fixée pour le docker telegraf .... ne sert à rien ici. Je l'avais mise en place pour certains dockers en mode macvlan et donc pour lesquels l'adresse IP et l'adresse MAC sont visibles sur le réseau. C'est le cas en particulier de mon docker pihole.

Mais ici pour telegraf .... aucun intérêt on est d'accord. C'est un reliquat.

Bruno78

Lien vers le commentaire
Partager sur d’autres sites

@Jeff777

Il va mettre à jour ton conteneur. Si il y a des ajouts par rapport à la version de base (python3 je crois ?) et s'il n'y a pas de volume monté comprenant l'ensemble des fichiers dont python3 a besoin pour fonctionner, il se peut qu'il disparaisse à la màj.

Si c'est effectivement le cas, la solution la plus propre me semble d'utiliser cette fonctionnalité de watchtower : https://containrrr.dev/watchtower/lifecycle-hooks/

Tu crées un script qui va télécharger python3, l'installer, et faire tout ce qu'il y y a besoin de faire, le rendre exécutable et le mettre dans le dossier telegraf de ton NAS. Dans le compose, tu montes ce script à la racine du conteneur :

...
volumes:
   - chemin/vers/script.sh:/script.sh
...
labels:
   - "com.centurylinklabs.watchtower.lifecycle.post-update=/script.sh"
...

Si je comprends bien le fonctionnement, une fois le conteneur telegraf recréé, il va exécuter ce script, à toi de faire en sorte que le script remette ton conteneur en état de fonctionnement.

Lien vers le commentaire
Partager sur d’autres sites

@Jeff777,

je vois que tu galères pas mal avec ce fichu docker telegraf dans lequel on ajoute python. Je n'ai pas eu le temps de regarder watchover, donc je ne peux guère t'aider. Mais pour info, je suis en train de voir à remplacer, pour la freebox uniquement, le docker telegraf par un docker python. Je ne sais pas si cela pourrait rendre l'utilisation de watchover plus facile, car de toute façon même ainsi il faut légèrement modifier l'image et créer une image locale, mais cela se ferait via "docker build".

Je vais voir si il y a des possibilités ... et jeter un coup d'oeil à Wacthover (mais il y a 11 pages de posts à lire .....)

Cdt

Bruno78

Lien vers le commentaire
Partager sur d’autres sites

il y a 22 minutes, bruno78 a dit :

Mais pour info, je suis en train de voir à remplacer, pour la freebox uniquement, le docker telegraf par un docker python.

Ah j'ai ma réponse à ma question posée sur le sujet "monitoring du nas". Ne t'inquiète pas il y a pire comme galère.😉

Lien vers le commentaire
Partager sur d’autres sites

  • 4 semaines après...

Hello @bruno78,

Je voulais savoir si tu avais rencontré cette erreur?

 

python3 freebox_059.py -SPHDIWX

Traceback (most recent call last):

  File "freebox_059.py", line 10, in <module>

    import requests

ModuleNotFoundError: No module named 'requests'

Pourtant, j'ai fait toutes les commandes avec succès, j'ai du mal à voir d'où ça vient.

 

Merci d'avance pour ton aide.

Lien vers le commentaire
Partager sur d’autres sites

Hello @bruno78,

Je me rends compte qu'à cause de différentes version de python, ça bug un peu.

J'ai relance depuis le container, voici ce que j'obtiens:

root@fbx_telegraf:/usr/local/py# python3.7 freebox_059.py -r

Doing registration

Traceback (most recent call last):

  File "freebox_059.py", line 906, in <module>

    do_register(auth)

  File "freebox_059.py", line 799, in do_register

    write_auth(register_infos['result'])

  File "freebox_059.py", line 770, in write_auth

    with open(cfg_file, "ab") as authFile:

OSError: [Errno 30] Read-only file system: '/usr/local/py/.credentials'

root@fbx_telegraf:/usr/local/py#

 

 

Lien vers le commentaire
Partager sur d’autres sites

@Drickce Kangel

Pour réaliser l'authentification initiale, le volume ./py ne doit pas être monté en 'ro' dans le docker compose,  pour pouvoir justement y écrire le fichier .credentials .

Ensuite  seulement il pourra être mis en read only 'ro'. 

Sauvegarde ce fichier .credentials,  il ne changera pas, et pourra toujours, éviter à l'avenir de refaire cette phase d'enregistrement. Tant que tu as la même freebox ' ce fichier restera valable 

Lien vers le commentaire
Partager sur d’autres sites

@bruno78

[EDIT] Finalement, j'ai trouvé, j'ai retiré le fichier .credentials et relancé.

 

Merci, je me rends compte que j'ai fait une boulette, l'accès était refusé sur ma Freebox, du coup, je l'ai supprimé. Comment dois-je faire pour qu'il relance la demande de connexion à la free?

Par ailleurs mon LCD bug sur la freebox🙄, pour valider, c'est la flèche de droite ou de gauche?😅

Dernière chose, j'ai ça quand je lance la commande :

 

 

root@fbx_telegraf:/usr/local/py# python3 /usr/local/py/freebox_059.py -SPHDIWX

Failed request: {"uid":"xxx","success":false,"msg":"Erreur d'authentification de l'application","result":{"password_salt":"xxxx","challenge":"xxx"},"error_code":"invalid_token"}

 

Traceback (most recent call last):

  File "/usr/local/py/freebox_059.py", line 910, 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_059.py", line 235, in get_and_print_metrics

    session_token = resp['result']['session_token']

TypeError: 'NoneType' object is not subscriptable

root@fbx_telegraf:/usr/local/py#

 

Modifié par Drickce Kangel
Lien vers le commentaire
Partager sur d’autres sites

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.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.