Aller au contenu

[TUTO] Monitoring réseau (Telegraf + InfluxDB 1.8 + Grafana)


.Shad.

Messages recommandés

@Jeff777 au lieu de mettre dans ton fichier docker-compose :

networks:
   - data_export

Tu mets :

networks:
   data_export:
      ipv4_address: 172.18.0.2

En revanche, si tu mets le conteneur speedtest dans le réseau data_export, tu n'as pas à utiliser l'IP d'InfluxDB mais juste le nom de son conteneur, la résolution DNS embarquée par Docker se charge de tout.

DB_HOST=influxdb # Le nom du conteneur
DB_PORT=8086

De manière générale quand on peut utiliser une résolution DNS à la place des IP c'est préférable, c'est plus résistant au changement d'infra.

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

@Jeff777

Bonjour,

Ahreee grilé par @.Shad. 🤪

Je ne sais si c'est efficace mais dans le docker-compose de création du conteneur influxdb, j'ai fixé en dur l'adresse IP afin que ce soit toujours la la même (idem pour grafana et telegraf) :

        networks:
            monitoring:
                ipv4_address: 172.20.0.2




networks:
    monitoring:
        external: true

Cordialement

oracle7😉

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Pour la petite histoire, je suis allé voir pourquoi le docker "speedtest" demande les droits admin/admin sur influxdb. En regardant le code, je trouve cela (qui ne manque pas d'humour #TODO .... )

 log.debug('Testing connection to InfluxDb using provided credentials')
 influx.get_list_users()  # TODO - Find better way to test connection and permissions

Pour faire son get_list_users(), il semble qu'il ai besoin des privilèges admin/admin, tout ça pour "simplement" vérifier la connexion vers influxdb. Je vais regarder si il n'y  a pas moyen de faire autrement, sans admin/admin .

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

J'avais vu ça aussi ce week-end, ça m'avait bien fait rire, mais je n'ai pas trouvé la commande qu'il utilisait, de plus je ne suis pas familier avec Python, ça n'aide pas.

Depuis le conteneur, c'est en bash :

influx -username 'username' -password 'password'
SHOW USERS

Donc en gros il vérifie s'il a bien un retour de cette commande, j'imagine qu'en cas de non retour d'erreur, il considère que ça fonctionne. Donc je suis sûr qu'en réalité ça marcherait si on commentait cette fonction, car les call ont l'air de se faire correctement (vu qu'en admin ça marche, et qu'en utilisateur normal, la liste des utilisateurs renvoie juste l'utilisateur même, donc il y a un retour dans tous les cas).

Je sais qu'un bon développeur est fainéant, je pense qu'il a poussé le concept un peu loin. 😄 M'enfin il le sait visiblement. 😉 

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

Bah tu donnes au conteneur speedtest la possibilité de faire ce qu'il veut avec toutes les autres bases de données contenues dans InfluxDB, personnellement ça me plaît moyennement.
D'autant que ce n'est pas une image très active, s'il y a une faille quelque part elle n'est pas prête d'être corrigée.

Lien vers le commentaire
Partager sur d’autres sites

Le 18/12/2020 à 14:16, Jeff777 a dit :

Une question aux pros de grafana.

Impossible de changer l'host dans le dashboard unifi ! Je voudrais changer 192.168.1.71 pour 172.18.0.1  comme je l'ai fait pour le DS218+ sous DSM7.

J'ai modifié l'input plugin de unifi AC dans telegraf.conf avec la nouvelle adresse, exporté le json et  l'ai édité (lnouvelle adresse , changé le nom et l'UID). J'ai détruit l'ancien dashboard. importé le nouveau json et je me retrouve avec l'adresse 192.168.1.71...... et 172.18.0.1 n'est pas proposée.🤔

  C'est de la sorcellerie...alors je m'adresse aux sorciers pour savoir ce que j'ai mal fait !

@.Shad. @bruno78

Je reviens sur ce message car j'ai trouvé la réponse. En fait le passage à DSM7 n'a rien à voir avec l'impossibilité de visualiser le dashboard UNIFI AP si ce n'est que les deux fichiers MIB avaient disparus de l'emplacement par défaut : :usr/share/snmp/mibs/.

Pour ceux que ça intéresse de faire un dashboard d'une borne UNIFI :

https://grafana.com/grafana/dashboards/1486   Un .json est à télécharger en haut à droite

il suffit de copier le texte INPUT PLUGIN etc... dans telegraf.conf en remplaçant les agents UAP1 etc.. par les adresses locales de ses bornes.

Puis de placer les fichiers téléchargés de :

- http://dl.ubnt-ut.com/snmp/UBNT-MIB 

- http://dl.ubnt-ut.com/snmp/UBNT-UniFi-MIB

dans le répertoire :usr/share/snmp/mibs/

D'ailleurs à ce propos, est-ce que quelqu'un sait ce que sont les nombreux fichiers txt présents dans ce répertoire ?

 

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

@Jeff777

Bonjour,

Il y a 2 heures, Jeff777 a dit :

D'ailleurs à ce propos, est-ce que quelqu'un sait ce que sont les nombreux fichiers txt présents dans ce répertoire ?

De ce que j'en ai compris en première approche et sous toutes réserves (mais je peux me tromper), hormis certains fichiers qui sont des MIBs "pures", beaucoup sont en quelque sorte des fichiers que j'apelerai "librairies" nécessaires au fonctionnement des MIBs (ils apparaissent dans une section "IMPORTS" de la MIB). Certains décrivent la structure standard (format, syntaxe, type, ...) des champs génériques inclus dans les MIBs (par ex SNMPv2-SMI.txt qui est utilisé dans la MIB SYNOLOGY-DISK-MIB.txt), d'autres décrivent des modules ou macros standardisés pour permettre à d'autres modules de faire leur travail de structuration des données.

Cordialement

oracle7😉

Lien vers le commentaire
Partager sur d’autres sites

Bonjour, les sujets se croisent. A propos de Speedtest :

  • Si quelqu'un est intéressé, je pense pouvoir donner la manip (simple) pour ne plus utiliser le compte influxdb admin/admin (quel qu'il soit) mais bien uniquement un user/pwd dédié à la base utilisée pour stocker les mesures speedtest.
  • Cela implique évidemment que cette base soit créée à l'avance et configurée avec un utilisateur dédié.

Peut-être pas avant ce weekend néanmoins, pas mal d'occupations ....

Lien vers le commentaire
Partager sur d’autres sites

Je vérifie et revérifie pour être certain que c'est propre et qu'il n'y a pas de coquille ... Il s'agira d'une mise à jour (très simple) de l'image docker d'origine. Il faudra donc mettre à jour le user/pwd dans le fichier config.ini, et mettre le nom de la nouvelle image (locale) que l'on va créer dans le docker-compose. C'est tout 🙂

Lien vers le commentaire
Partager sur d’autres sites

Mode d'emploi pour utiliser speedtest sans usr/pwd admin d'influxdb

  • Prérequis :
    • une database dédiée configurée sous influxdb, avec son user/pwd dédié.
  • Télécharger le fichier speedtest2.tar (à la fin du message). Il contient :
    • Dockerfile : fichier de commande pour générer la nouvelle image
    • InfluxdbSpeedtest.py : fichier de lancement du test, très légèrement modifié (on fait un simple 'ping' de la base influxdb)
    • SpeedTest_Net_Server_List.xml : en prime la liste des serveurs utilisés, avec leurs identifiants. Pour amélioration du dashboard grafana (source github)
  • Etat avant modification :
    • image
      root@ds918blam:/volume1/docker/speedtest# docker image ls
      REPOSITORY                                  TAG                 IMAGE ID            CREATED             SIZE
      ...
      atribe/speedtest-for-influxdb-and-grafana   latest              99c2c10d1e41        16 months ago       111MB
      ...
      

       

    • container
      root@ds918blam:/volume1/docker/speedtest# docker ps
      CONTAINER ID        IMAGE                                              COMMAND                  CREATED             STATUS                 PORTS                                                                                                                                       NAMES
      ...
      bc4340b44afd        atribe/speedtest-for-influxdb-and-grafana:latest   "python -u /src/infl…"   3 days ago          Up 43 hours                                                                                                                                                        speedtest
      ...
      
  • On arrete le container speedtest en cours
    root@ds918blam:/volume1/docker/speedtest# docker stop speedtest
    speedtest
    
  • On construit la nouvelle image /!\ ne pas oublier le "." (point) à la fin de la commande /!\
root@ds918blam:/volume1/docker/speedtest# docker build -f Dockerfile --rm --tag speedtest2 .
Sending build context to Docker daemon    959kB
Step 1/2 : FROM atribe/speedtest-for-influxdb-and-grafana:latest
 ---> 99c2c10d1e41
Step 2/2 : COPY ./InfluxdbSpeedtest.py /src/influxspeedtest/
 ---> 08847e4b7b5e
Successfully built 08847e4b7b5e
Successfully tagged speedtest2:latest
  • on vérifie que l'image speedtest2 a bien été créée (on a toujours l'ancienne)
root@ds918blam:/volume1/docker/speedtest# docker image ls
REPOSITORY                                  TAG                 IMAGE ID            CREATED             SIZE
speedtest2                                  latest              08847e4b7b5e        15 seconds ago      111MB
...
atribe/speedtest-for-influxdb-and-grafana   latest              99c2c10d1e41        16 months ago       111MB
...
  • on met à jour le docker-compose.yaml pour prendre en compte cette nouvelle image
root@ds918blam:/volume1/docker/speedtest# cat docker-compose.yaml
version: "2.1"
services:
    speedtest2:
        image: speedtest2:latest
        container_name: speedtest2
        volumes:
          - ./config.ini:/src/config.ini
        restart: unless-stopped
        mem_limit: 256M
        network_mode: bridge
  • on met à jour le fichier config.ini pour modifier le user/pwd à utiliser
root@ds918blam:/volume1/docker/speedtest# cat config.ini
[GENERAL]
# Duree en secondes entre deux mesures
# Delay = 3600
Delay = 10800

[INFLUXDB]
Address = xxx.xxx.xxx.xxx
Port = 8086
Database = nas_speedtest
#Username = admin
#Password = admin
Username = speedtestuser
Password = speedtestpwd
Verify_SSL = True

[SPEEDTEST]
# Leave blank to auto pick server
Server =

[LOGGING]
# Valid Options: critical, error, warning, info, debug
Level = debug
  • On peut enfin lancer le nouveau container avec la nouvelle image :
root@ds918blam:/volume1/docker/speedtest# docker-compose up -d
Creating speedtest2 ... done

  • on attend une petite minute et on vérifie que tout est en place :
root@ds918blam:/volume1/docker/speedtest# docker ps
CONTAINER ID        IMAGE                           COMMAND                  CREATED              STATUS                 PORTS                                                                    NAMES
498d69abfe03        speedtest2:latest               "python -u /src/infl…"   About a minute ago   Up About a minute                                                                               speedtest2
...

 

root@ds918blam:/volume1/docker/speedtest# docker logs speedtest2
Loading Configuration File config.ini
Configuration Successfully Loaded
2021-01-07 13:22:38,148 - DEBUG: Testing connection to InfluxDb using provided credentials
2021-01-07 13:22:38,341 - DEBUG: Successful connection to InfluxDb
2021-01-07 13:22:38,341 - INFO: Starting Speed Test For Server None
2021-01-07 13:22:38,357 - DEBUG: Setting up SpeedTest.net client
2021-01-07 13:22:38,586 - DEBUG: Picking the closest server
2021-01-07 13:23:08,886 - INFO: Selected Server 16676 in Paris
2021-01-07 13:23:08,887 - INFO: Starting download test
2021-01-07 13:23:13,306 - INFO: Starting upload test
2021-01-07 13:23:16,028 - DEBUG: [{'measurement': 'speed_test_results', 'fields': {'download': 741713644.1996006, 'upload': 549366763.0788989, 'ping': 5.709, 'server': '16676', 'server_name': 'Paris'}, 'tags': {'server': '16676', 'server_name': 'Paris', 'server_country': 'France'}}]
2021-01-07 13:23:16,242 - DEBUG: Data written to InfluxDB
2021-01-07 13:23:16,242 - INFO: Download: 741.71Mbps - Upload: 549.37Mbps - Latency: 5.709ms
2021-01-07 13:23:16,242 - INFO: Waiting 10800 seconds until next test
  • et je retrouve ce test dans mon dashboard (je n'ai pas mis à jour le fuseaux horaire ...) :

image.png.9203ea878fce38e3fbf7c374d4042621.png

 

Le fichier tar à télécharger :speedtest2.tar

Remarque : effectué sous DSM7 Beta. Pas de raison que ce soit différent sous DSM6

Si il y a une coquille quelque part, merci de me la signaler.

Bruno78

Lien vers le commentaire
Partager sur d’autres sites

@bruno78

Bonjour,

Super boulot que tu as fait là. 👍👏😀 Je teste cela sous DSM 6 et je te dis ce qu'il en est.

Sinon, comment cela se passe si d'aventure l'image initiale :

atribe/speedtest-for-influxdb-and-grafana

était mise à jour ? Il faudrait relancer toute ta procédure, c'est bien cela ?

Si Oui, alors dans le fichier docker-compose, il faut alors aussi retirer (car plus nécessaire) le label concernant la mise à jour par watchtower ?

Cordialement

oracle7😉

 

Lien vers le commentaire
Partager sur d’autres sites

@oracle7,

oui la mise à jour watchtower ne fonctionnera pas ici. Mais comme j'ai dit à Jeff777, ce n'est pas comme si elle était mise à jour toutes les semaines.

Et effectivement, si mise à jour de l'image de base, alors il faut juste refaire le docker build .... => mais cela suppose que les modifications faites dans l'image de base ne ruinent pas ma modif .... Je dirai donc qu'en cas de modification de l'image de base, il ne faudra pas trop se précipiter ....

Lien vers le commentaire
Partager sur d’autres sites

@bruno78

Bonjour,

OK, je me doutais un peu de ta réponse.

Cela dit, tu dis en prérequis qu'il faut, je te cites :

Citation

une database dédiée configurée sous influxdb, avec son user/pwd dédié.

Très bien mais comment je fait cela ? Que faut-il modifier/créer ? Quelle commande faut-il lancer ?

Désolè, là je suis un peu perdu ...

Cordialement

oracle7😉

Lien vers le commentaire
Partager sur d’autres sites

@bruno78 : ce que tu fais s'appelle faire un fork, ça pullule sur Github, tu as juste à la mettre dans ton propre dépôt : publique ou privé avec des credentials.
La question de watchtower ne se posera plus. ^^
(Je ne l'ai jamais fait, je ne programme pas (encore) mais ça me semble être la meilleure solution).

il y a 3 minutes, oracle7 a dit :

Très bien mais comment je fait cela ? Que faut-il modifier/créer ? Quelle commande faut-il lancer ?

Désolè, là je suis un peu perdu ...

C'est décrit dans mon tutoriel, dans les derniers paragraphes.

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.