Aller au contenu

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


.Shad.

Messages recommandés

Voila, j'ai terminé !

@.Shad. @Jeff777

 

Source : https://unifipoller.com/

Prérequis : 

Creation d'un user admin (mode read-only) dans le controller UNIFI.
Il sera renseigné dans le docker compose (voir étape 4)

2019033033_Capturedcran.thumb.png.ddf69da9e5c125102b81f1dfa3be3256.png

 

 

Etape 1 :
Création d'une nouvelle database dans influxdb

CREATE DATABASE unifipoller
USE unifipoller

Etape 2 :
Création d'un user spécifique pour cette database

CREATE USER unifipoller WITH PASSWORD 'unifipoller'

Etape 3 : 
Donner les droits d'accès à la database

GRANT ALL ON unifipoller TO unifipoller

Etape 4: 

Création du docker compose pour unifipoller 
 

version: "2"
services:
      
 unifi-poller:
      image: golift/unifi-poller:latest
      container_name: unifipoller
      networks:
         - monitoring
      
      volumes:
         - /volume1/docker/unifipoller:/config
      environment:
      - UP_INFLUXDB_DB=unifipoller
      - UP_INFLUXDB_USER=unifipoller
      - UP_INFLUXDB_PASS=unifipoller
      - UP_INFLUXDB_URL=http://influxdb:8086
      - UP_UNIFI_DEFAULT_USER=monitoring
      - UP_UNIFI_DEFAULT_PASS=mdp de l'unifi controller
      - UP_UNIFI_DEFAULT_URL=https://IP unificontroller
      - UP_POLLER_DEBUG=true
      - UP_UNIFI_DEFAULT_SAVE_DPI=true (true si on veut récupérer les données DPI)
        
networks:
   monitoring:
      external: true

Etape 6 : grafana :

Ajouter une data source
Name: InfluxDB [unifi]
URL: http://influxdb:8086
Database: unifipoller
User: unifipoller
Password: unifipoller

https://grafana.com/orgs/twitchcaptain

Etape 7

Importer un dashboard, par exemple via l'ID 10415

App   Influx ID  
Client DPI   10419 Dashboard DPI
Sites   10414 Dashboard Site
USW   10417 Dashboard UniFi Switches
USG   10416 Dashboard UniFi gateway (UDM-P, UDM, USG, ...)
UAP   10415 Dashboard UniFi Access Points
Clients   10418 Dashboard des clients connectés

 

 

 

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

@MilesTEG1

Bonjour,

Comment tu comprends cela :

Citation

To use this feature, you have to set an API token and enable the metrics API, as well as creating a port mapping for your container for port 8080.

Il faut ajouter les variables d'environnement telles que :

environnement:
  - WATCHTOWER_HTTP_API_METRICS=true
  - WATCHTOWER_HTTP_API_TOKEN="OnMetQuoiCommeString?"
ports:
  - 8080:8080

Mais l'API_TOKEN on le récupère où ? Là je ne saisi pas bien ...🥴

En plus, je n'ai rien trouvé concernant les champs à ajouter dans le fichier telegraf.conf, je ne pige pas non plus, là ...

Dans leur docker-compose.yml il y a aussi cette ligne :

    
command: --interval 10 --http-api-metrics --http-api-token demotoken --debug prometheus grafana parent child

Il faut la mettre aussi ? O/N ?

Enfin après tout cela on recharge le dashbord.json pour grafana disponible sur Github et cà roule ???

Ton avis STP ?

Cordialement

oracle7😉

Lien vers le commentaire
Partager sur d’autres sites

il y a 51 minutes, oracle7 a dit :

Mais l'API_TOKEN on le récupère où ? Là je ne saisi pas bien ...🥴

Pour moi tu vas justement le définir dans cette variable, pour y accéder avec un script ou Telegraf par exemple, et exporter ça vers Prometheus.

Lien vers le commentaire
Partager sur d’autres sites

Et bah pas de bras, pas de chocolat. 😄 

Visiblement les métriques exposées sont formatées pour Prometheus, pas InfluxDB. Je regarde juste ce que dit leur doc.

Je pense que c'est utile si une seule et même instance gère plusieurs sites à la fois.

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

Il y a 13 heures, Jeff777 a dit :

 

Ah oui. Si tu peux mettre une image du dashboard pour voir ce que ça donne. En échange voici le mien du moins le début:

Capture.thumb.JPG.07edf5ff95c0eee64accf7bfe4aafca8.JPG

 

@Jeff777Oui, je vais faire quelques screenshots, actuellement, je n'ai pas encore fait le tri dans les différents dashboard.

J'ai gardé les dashboards tels qu'ils étaient (via grafana).
Et toi ? as tu customisé les tiens ?

 

Next step pour moi, mettre en place le speedtest, par contre, j'ai essayé de suivre la procédure de @bruno78, lorsque je lance le docker, celui-ci est complètement vide et je ne sais pas comment je dois procéder !?

 

Lien vers le commentaire
Partager sur d’autres sites

il y a 10 minutes, Dimebag Darrell a dit :

Et toi ? as tu customisé les tiens ?

Bonjour,

Non pas que je me souvienne...ou à la marge.

il y a 11 minutes, Dimebag Darrell a dit :

mettre en place le speedtest, par contre, j'ai essayé de suivre la procédure de @bruno78,

As tu utilisé l'image speedtest2 avec le correctif du 8 avril ? Si ça peut aider mon docker-compose (data-export c'est le network commun à telegraf influxdb et grafana) :

version: "2.1"
services:

    speedtest2:
        image: speedtest2:latest
        container_name: speedtest2
        volumes:
          - ./config.ini:/src/config.ini
        networks:
            data_export:
                ipv4_address: 172.18.0.5
        restart: unless-stopped
        mem_limit: 256M
networks:
    data_export:
        external: true

Lien vers le commentaire
Partager sur d’autres sites

il y a 16 minutes, oracle7 a dit :

@MilesTEG1

Bonjour,

Pas grave, puisque d'après @.Shad. c'est configuré pour Prometheus que je n'utilise pas.

@Dimebag Darrell

As-tu bien configuré le fichier config.ini ? Je te garanti que cela marche sans problème avec la procédure de @bruno78.

Cordialement

oracle7😉

Je vais faire le test et honnêtement, j'étais tellement occupé avec la mise en place du monitoring du NAS + UNIFI qu'un moment, j'en ai eu plein les lattes !

Vu que j'avais fait pas mal de tests et des docker-compose un peu dégueux, au final, j'ai tout repris depuis le début avec des vrais mot de passes (merci bitwarden) et un vrai adressage IP, un vrai naming au niveau de docker...

Maintenant que j'ai mis en place ma méthodo, je peux continuer avec d'autres sources...

Lien vers le commentaire
Partager sur d’autres sites

Le 29/04/2021 à 09:00, Jeff777 a dit :

Bonjour,

Non pas que je me souvienne...ou à la marge.

As tu utilisé l'image speedtest2 avec le correctif du 8 avril ? Si ça peut aider mon docker-compose (data-export c'est le network commun à telegraf influxdb et grafana) :

version: "2.1"
services:

    speedtest2:
        image: speedtest2:latest
        container_name: speedtest2
        volumes:
          - ./config.ini:/src/config.ini
        networks:
            data_export:
                ipv4_address: 172.18.0.5
        restart: unless-stopped
        mem_limit: 256M
networks:
    data_export:
        external: true

WARNING: Some networks were defined but are not used by any service: data_export
ERROR: Service "speedtest2" uses an undefined network "monitoring"
 

Salut les gars,

Concernant network,
On pourrait m'expliquer la différence entre deux entrées network ? (surtout celle avec l'ip) ?

Quant à influxdb, j'ai créé une nouvelle db spécifiquement pour speedtest
 

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

@Dimebag Darrell

Bonjour,

  1. Pour ta gouverne, dans tes réponses, il n'est pas nécessaire de re citer le post précédant dans sa totalité, ce serait bien que tu ne cites que la partie à la quelle tu réponds, cela surcharge moins les posts et ils sont plus faciles à lire. Merci.

  2. Si tu as fait un docker-compose spécifique pour speedtest2 alors soit tu laisses docker créer/associer un sous-réseau (ave une @IP "quelconque" au conteneur sinon tu définis toi même de façon externe le network à utiliser par ex "data_export" en fixant l'@IP de ton choix au conteneur. Dans ce derier cas, et veilles à ce que ce sous-réseau ne soit pas  non plus déjà utilisé par un autre conteneur. Pour cela regarde le TUTO Introduction à Docker @.Shad. l'a très expliqué comment faire.
    Par contre si tu as adjoint le service spedtest2 au docker-compose du triplet InfluxTelegrafGrafana alors tu dois utiliser le network "monitoring" de celui-ci. Au final il te faut juste rester cohérent au niveau network ...

    Sinon pour les deux entrées network que tu évoques, elles permettent de dire pour la première que tu utilises le network "data_export" et que ton conteneur sera joignable avec l'@IP 172.18.0.5 dans le sous-réseau 172.18.0.0 celui-ci étant alors spécifique au conteneur speedtest2 car non attribué automatiquement par docker).
    La seconde entrée network quant à elle signifie que le réseau data-export est un réseau bridge qui a été créé de façon externe. Il sera alors "persistant" lorsque tu supprimeras le conteneur sinon le sous-réseau associé au conteneur est détruit et est recréé avec la création du conteneur mais cette fois avec une possible @IP diférente. Donc créer le network en externe te permet de le rendre persistant et ainsi de garder toujours la même @IP pour ton conteneur si besoin en est.
    Voilà en espérant ne pas avoir été trop confus ... 🤪

Cordialement

oracle7😉

Lien vers le commentaire
Partager sur d’autres sites

@oracle7

merci pour les différentes remarques, j'en tiendrai compte à l'avenir.

Sans vouloir offusqué, pour moi la procédure proposée n'est pas du tout claire
J'ai réalisé mon docker compose ainsi que mon fichier config.ini (qui est dans le répertoire racine de speedtest)
J'ai ce message quand je lance de docker-compose

Pulling speedtest2 (speedtest2:latest)...
ERROR: The image for the service you're trying to recreate has been removed. If you continue, volume data could be lost. Consider backing up your data before continuing.

Continue with the new image? [yN]y
Pulling speedtest2 (speedtest2:latest)...
ERROR: pull access denied for speedtest2, repository does not exist or may require 'docker login'

 

Lien vers le commentaire
Partager sur d’autres sites

@Dimebag Darrell

Bonjour,

Le message d'erreur me semble clair, vérifies le chemin que tu as donné.

Sinon je te propose de regarder en page 22 du présent post mon message du 30/03 où j'ai donné la procédure complète qui marche chez moi.

Edit : Utilises-tu bien le nouveau fichier "Dockerfile" fournit dans le fichier "speedtest_fix.tar" de @bruno78 ?

Cordialement

oracle7😉

 

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

@oracle7
 

Voici mon docker-compose
version: "2.1"
services:
    speedtest2:
        image: speedtest2:latest
        container_name: speedtest
        networks:
         - monitoring
        volumes:
          - ./config.ini:/src/config.ini
        restart: unless-stopped
        mem_limit: 256M
        
networks:
   monitoring:
      external: true

Pour info, j'ai créé un répertoire speedtest dans /volume1/docker/speedtest
Dans celui-ci, à la racine, il y a le fichier config.ini

Ensuite ?

Oui, je l'utilise bien, quand j'essaie de l'importer dans docker, il m'indique "format de fichier" incorrecte 

ps : quand je décompresse le fichier .tar, ce n'est pas speedtest2, mais speedtest_fix... !

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

@Dimebag Darrell

Bonjour,

J'ai édité entre temps ma précédente réponse.

Ton docker-compose me semble presque correct mais il te manque la variable d'environnement TZ sinon tu auras des décalages de valeurs :

        environment:
            - TZ=Europe/Paris

et pour container_name c'est speedtest2 et pas speedtest.

Vérifies aussi tes indentations : avec que des blancs pas de tabulations !

J'ai une architecture un peu différente (tous mes scripts d'installation sont dans un répertoire spécifique qui contient un dossier spécifique à chaque conteneur ou groupe de conteneurs (comme monitoring pour le triplet ITG):
 

/volume1/docker/scripts_instal/speedtest2
          config.ini
          docker-compose.yml

/volume1/docker/speedtest
          Dockerfile
          speedtest.py

Cordialement

oracle7😉

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

@oracle7

Super merci pour le retour,

Question bête et idiote, si je souhaite avoir dans mon répertoire /volume1/docker/speedtest
mon config.ini ainsi que l'image du docker file et le  speedtest.py 

Comment dois-je parametrer mon docker-compose

Ps : je suis tjs entrain de découvrir docker-compose et la gestion des chemins, je suis complètement perdu...

 

PS:2

Afin d'être plus complet

J'organise comme ceci
/volume1/docker/influxdb
/volume1/docker/telegraf
/volume1/docker/grafana
...

et dans chaque répertoire, on retrouve les docker-compose et sous répertoire nécessaire (config ou data ...)

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

@Dimebag Darrell

Bonjour,

il y a une heure, Dimebag Darrell a dit :

si je souhaite avoir dans mon répertoire /volume1/docker/speedtest
mon config.ini ainsi que l'image du docker file et le  speedtest.py 

Comment dois-je parametrer mon docker-compose

IL n'y a pas de question "bête". Attention quand même, les fichiers Dockerfile et speedtest.py ne servent que lorsque tu crées la nouvelle image speedtest2. Après ils ne sont plus d'aucune utilité.

Le fichier "config.ini" doit se trouver dans le MEME répertoire que le docker-compose.yml du conteneur speedtest2. Que je saches tu ne peux les séparer vu la configuration retenue. C'est le pourquoi du "./config.ini" dans la section volumes où le "./" signifie "le même répertoire" qui contient le docker-compose. C'est de la notation UNIX/LINUX de base ...

Maintenant tu pourrais très bien aussi mettre le fichier "config.ini" ailleurs par ex dans  : "/volume1/mondossier/monsousdossier/" mais cela n'aurait pas de sens en tout cas pas cohérent. Mais c'est toi qui voit ...

il y a une heure, Dimebag Darrell a dit :

Afin d'être plus complet

J'organise comme ceci
/volume1/docker/influxdb
/volume1/docker/telegraf
/volume1/docker/grafana
...

et dans chaque répertoire, on retrouve les docker-compose et sous répertoire nécessaire (config ou data ...)

Oui pas de soucis, c'est ce qu'il faut faire pour que chaque conteneur trouve bien ses "petits" à la réserve d'indiquer correctement les chemins respectifs aux sous-répertoires respectif dans la section volumes de chaque conteneur.

A coté de cela, si tu utilises un docker-compose "commun" à ces trois applications, il vaut mieux sauf erreur de ma part, mettre ce fichier "docker-compose.yml" dans un répertoire spécifique nommé comme tu le veux (par ex "monitoring" comme dans le TUTO).

Cordialement

oracle7😉

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

Merci beaucoup pour toutes les infos @oracle7

ça va paraître lourd, mais il ne trouve toujours pas le chemin de l'image speedtest,
Il doit y avoir une erreur dans mon docker-compose
Sachant que toutes les fichiers (config.ini, speedtest.py, Dockerfile, docker-compose) sont dans le dossier /volume1/docker/speedtest1870069302_Capturedcran1.png.56adde8c7183e57ffb4fb1a91ac8f77f.png

version: "2.1"
services:
    speedtest2:
        image: speedtest2:latest
        container_name: speedtest2
        networks:
         - monitoring
        volumes:
          - ./config.ini:/src/config.ini
        restart: unless-stopped
        mem_limit: 256M
        
networks:
   monitoring:
      external: true

 

Lien vers le commentaire
Partager sur d’autres sites

Bonjour @Dimebag Darrell

Avec le docker-compose que je t'ai donné j'obtiens ces fichiers :

Capture.thumb.JPG.3750dbdb529a057a3c1daf334400400c.JPG

Tu as dû manquer une étape. Tu as bien pris en compte le tuto initial de bruno78 puis son correctif ?

Edit : bien sûr tu dois adapter ton docker-compose à ton cas. Entre autre le network doit être celui de telegraf, influxdb et grafana

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

@Jeff777 @oracle7

En suivant le tuto de  @bruno78 je retrouve bien l'image de speedtest,

 

REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE

speedtest2                202151              91b743e838af        6 minutes ago       67.3kB

 

lorsque je lance la commande docker ps, speedtest est absent de la liste...

Je bloque à partir de cette étape

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.