Aller au contenu

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


.Shad.

Messages recommandés

@Dimebag Darrell

Ah ? moi, même en root (quand je ne précise pas de user dans le fichier compose), ça ne fonctionne pas.
En revanche j'ai procédé autrement, pour éviter de devoir toucher aux permissions du socket docker.
J'ai utilisé l'image https://github.com/sjawhar/docker-socket-proxy qui permet d'exposer via un conteneur un socket docker. Et ce conteneur est dans un réseau uniquement composé de telegraf et lui-même.
Ainsi Telegraf accède au socket via les permissions natives, et je n'utilise pas de certificat TLS (contrairement à ce que je fais dans ce tutoriel) car seul Telegraf peut avoir accès au socket, ce que j'estime ne pas représenter de danger outre-mesure.

Mon fichier compose pour le proxy :

version: "2.1"
services:

   docker-socket-proxy:
      image: sjawhar/docker-socket-proxy
      container_name: docker-socket-proxy
      hostname: docker-socket-proxy
      networks:
         - net-dsp
      environment:
         - LISTEN_SECURE=false
         - LISTEN_PORT=2375
      volumes:
         - /var/run/docker.sock:/var/run/docker.sock:ro
      labels:
         - "com.centurylinklabs.watchtower.enable=true"
      restart: unless-stopped

networks:

   net-dsp:
      external: true

net-dsp est le réseau qui accueille également Telegraf, dont le compose est le suivant chez moi :

version: "2.1"
services:

   telegraf:
      image: telegraf
      container_name: telegraf
      networks:
         - net-dsp
      # non-root user needed since 1.20.3
      user: telegraf:65536
      volumes:
         # config
         - /volume1/docker/telegraf/telegraf.conf:/etc/telegraf/telegraf.conf:ro
         # additional MIBs
         - /usr/share/snmp/mibs:/usr/share/snmp/mibs:ro
         # local time preset
         - /etc/localtime:/etc/localtime:ro
         - /etc/TZ:/etc/timezone:ro
         # docker socket mounting
         - /var/run/docker.sock:/var/run/docker.sock:ro
      labels:
         # watchtower label only monitoring
         - "com.centurylinklabs.watchtower.enable=true"
      restart: unless-stopped

networks:

   net-dsp:
      external: true

Remarque : C'est normal que Telegraf ne partage pas de réseau commun avec InfluxDB et Grafana, ces derniers sont sur un VPS dans mon cas, il accède donc à InfluxDB via son entrée de proxy inversé sur le VPS directement.

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

  • 4 semaines après...

Je sais que ce n'est pas du monitoring réseau, mais j'ai vu qu'il était possible de monitorer son onduleur (photovoltaique) en utilisant influxdb et grafana,

ça à l'air quand même assez solide à mettre en place

https://github.com/michbeck100/pv-monitoring

Lien vers le commentaire
Partager sur d’autres sites

Tu peux monitorer ce que tu veux, à partir du moment où tu sais comment faire ingérer les données à InfluxDB.
Telegraf prend en charge MQTT, et pour un cadre domotique c'est déjà 50% du boulot qui est fait.

Le reste dépend de ton installation, des protocoles utilisés, des capteurs dont tu disposes, de la passerelle domotique utilisée (Jeedom et Home Assistant embarquent tout un tas de plugin constructeurs permettant de recueillir les informations des onduleurs et automates).

Jeedom propose aussi un plugin InfluxDB qui fonctionne très bien. Je m'en sers pour tracer certains graphiques relatifs aux températures dans ma maison et l'activité des vannes thermostatiques.

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

  • 3 mois après...

Bonjour,

Merci à @.Shad. pour le tuto.

Je suis occuper à mettre en place tout cela.

J'ai réussi à tout implémenter par le terminal et portainer.  Je n'ai eu aucun problème.

Par contre, après avoir modifié le fichier telegraf.conf, j'ai essayé de voir les logs comme indiqué.  Voici ce que j'ai :

/volume1/docker/telegraf# docker-compose logs -f
no configuration file provided: not found

et c'est la même chose pour influxdb.

Qui peut m'aider ?

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

Hello @.Shad.,

Voici le nom du fichier en question : telegraf.conf (j'ai fait un copié-coller du nom).

Et voici le contenu du fichier compose :

version: '2.1'
services:

   telegraf:
      image: telegraf
      container_name: telegraf
      networks:
         - monitoring
      user: 1039:65537        # A adapter suivant vos valeurs
#      ports:                 # Optionnel
#         - 8125:8125         # Optionnel
#         - 8092:8092/udp     # Optionnel
#         - 8094:8094         # Optionnel
      volumes:
         - /volume1/docker/telegraf/telegraf.conf:/etc/telegraf/telegraf.conf:ro
         - /usr/share/snmp/mibs:/usr/share/snmp/mibs:ro
         - /etc/localtime:/etc/localtime:ro
         - /etc/TZ:/etc/timezone:ro
      restart: unless-stopped
        
networks:
   monitoring:
      external: true

 

Lien vers le commentaire
Partager sur d’autres sites

Est-ce que dans le fichier telegraf.conf tu as passé les logs en debug ?

## Logging configuration:
  ## Run telegraf with debug log messages.
  debug = true

Essaie de visualiser les logs depuis Container Manager (ou Docker suivant ta version de DSM), et poste le contenu des logs ici.

Lien vers le commentaire
Partager sur d’autres sites

il y a 1 minute, .Shad. a dit :

Est-ce que dans le fichier telegraf.conf tu as passé les logs en debug ?

## Logging configuration:
  ## Run telegraf with debug log messages.
  debug = true

Essaie de visualiser les logs depuis Container Manager (ou Docker suivant ta version de DSM), et poste le contenu des logs ici.

Je l'ai effectivement fait mais comment puis-je voir les logs car dans la partie Journal, je ne vois rien.

Lien vers le commentaire
Partager sur d’autres sites

Je ne comprends pas pourquoi tu ne vois rien.
Redémarre le conteneur pour voir, tu dois nécessairement avoir des logs, est-ce que l'utilisateur telegraf de ton NAS est bien propriétaire du dossier telegraf dans /volume1/docker ?

Lien vers le commentaire
Partager sur d’autres sites

Ahhhhhhhh, je comprends mieux.
Ton conteneur fonctionne normalement.

Tu as créé ton conteneur via Portainer ? car quand tu écris :

docker-compose logs -f

En fait, ça ne fonctionne que si tu trouves dans un dossier où un fichier docker-compose.yml se trouve nommément.
Sinon, tu peux préciser un path via :

docker-compose -f /volume1/docker/telegraf/docer-compose_telegraf.yml logs -f

par exemple. Ou tout autre chemin/nom de fichier.
C'est ça le fameux fichier de configuration qu'il cherche, le fichier yml.

Et si tu utilises Portainer ou Container Manager tu n'as pas besoin de tout ça.

Félicitations ça fonctionne, maintenant tu peux t'amuser à apprendre Grafana. 🙂 

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

Le 03/09/2021 à 11:53, oracle7 a dit :

Bonjour,

  1. Sinon pour Speedtest, voici une procédure d'installation qui prend en compte les modifs de @bruno78 :
     

    Installation speedtest2
    •	Prérequis : 
      o	Une database dédiée configurée sous influxdb, avec son user/pwd dédié. 
    root@MonNAS:/volume1/docker/speedtest# docker exec -it influxdb influx -username admin -password admin
        	> CREATE DATABASE nas_speedtest
        	> USE nas_speedtest
        	> CREATE USER speedtest WITH PASSWORD 'speedtest'
        	> GRANT ALL ON nas_speedtest TO speedtest
        	> SHOW DATABASES
        	> SHOW USERS
        	> exit
        	docker restart influxdb
    
    •	Télécharger le fichier speedtest2.tar (speedtest2.tar : https://www.nas-forum.com/forum/applications/core/interface/file/attachment.php?id=15317). Il contient : 
      o	Dockerfile : fichier de commande pour générer la nouvelle image 
      o	InfluxdbSpeedtest.py : fichier de lancement du test, très légèrement modifié (on fait un simple 'ping' de la base influxdb) 
      o	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 : 
      o	image 
    root@MonNAS:/volume1/docker/speedtest# docker image ls
    REPOSITORY                                  TAG                 IMAGE ID            CREATED             SIZE
    ...
    atribe/speedtest-for-influxdb-and-grafana   latest              99c2c10d1e41        16 months ago       111MB
    ...
      o	container 
    root@Maeva56:/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 arrête le container speedtest en cours 
    root@MonNAS:/volume1/docker/speedtest# docker stop speedtest
    
    •	On construit la nouvelle image /!\ ne pas oublier le "." (point) à la fin de la commande /!\ 
    root@MonNAS:/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@Maeva56:/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.yml pour prendre en compte cette nouvelle image 
    root@MonNAS:/volume1/docker/speedtest# cat docker-compose.yml
    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@MonNAS:/volume1/docker/speedtest# cat config.ini
    [GENERAL]
    # Duree en secondes entre deux mesures ---> A adapter au besoin !
    # Delay = 3600
    Delay = 10800
    
    [INFLUXDB]
    Address = 172.20.0.2
    Port = 8086
    Database = nas_speedtest
    #Username = admin
    #Password = admin
    Username = speedtest
    Password = speedtest
    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@Maeva56:/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@MonNAS:/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@MonNAS:/volume1/docker/speedtest# docker logs -f 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 ...) : 
     

     

Cordialement

oracle7😉

 

Bonjour @oracle7 et @bruno78,

J'essaye d'implémenter ton script speedtest.

Pour cela, je suis ton mode d'emploi mais j'ai un problème.  La partie Influxdb est faite et j'ai downloader le fichier speedtest2.tar.

Je ne sais par contre pas où je dois le mettre.  Que je le mette dans le dossier docker ou dans le dossier docker/speedtest, j'ai toujours la même chose avec terminal :

REPOSITORY               TAG       IMAGE ID       CREATED        SIZE
grafana/grafana          latest    6fc2a772178b   4 days ago     392MB
telegraf                 latest    1c4cc0044eb2   6 days ago     422MB
influxdb                 1.8       209f5640465f   11 days ago    307MB
neilpang/acme.sh         latest    81314eb50e2c   4 weeks ago    41.1MB
portainer/portainer-ce   latest    9ecc2a9e02ca   7 weeks ago    277MB
containrrr/watchtower    latest    f847e1adb570   7 months ago   14.6MB

Je ne vois pas l'image speedtest2.tar et je ne vois même pas le dossier speedtest qui a été créé dans le dossier Docker 😞

Bref, je suis bloquer et ce même si j'ouvre le dossier speedtest.tar

Pouvez-vous m'aider ?

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

Bonjour @.Shad., @MilesTEG1 et les autres,

Je continue mon exploration et je commence à chipoter dans grafana.  J'ai cependant un problème.

Voici ce que j'ai pour les infos de mon NAS :

Capturedecran2023-08-30a14_34_24.thumb.png.661f852531b581a504b8fa1aac8fcf61.png

Comment faire pour supprimer le champ Time qui ne correspond à rien sauf si on peut avoir l'heure à l'instant T ?
Pourquoi la valeur Uptime est Capturedecran2023-08-30a16_49_54.png.75559d49f33850ed4dc4690f379c9c4f.png ? ==> J'ai regardé mon fichier telegraf.conf et j'ai vu que ce n'étais pas sysUptime mais sysUpTime.  Du coup, j'ai corrigé.  Comment mettre en jours, heures, minutes correcte car mon NAS, il n'est pas si vieux... ?
Pourquoi la valeur Update est à 2.00 et pas un up to date comme ici chez @MilesTEG1 image.png.12de1d68b323bd30daad0cc2fb6d4226.png

Dans une autre fenêtre, j'ai ceci :

Capturedecran2023-08-30a14_53_16.thumb.png.f7c75cf7b69acba11029889ac3c2b0fd.png

Pourquoi tout ces caractères snmp.SYNO.L-last... ?

Je n'ai pas encore trouvé comment monitorer Docker mais je continue à chercher 😉

Merci pour votre aide.

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

  • 3 semaines après...

Bonjour,

J'ai monté un TIG pour surveiller une infra réseau.

Je rencontre un soucis sur mes Time Series, en effet qu'importe l'interval configurée, le retour d'information de ma requête SNMP se fait toute les 1m50, or j'ai bien ma query qui se fait toute les 10s/20s/.., je n'arrive pas à trouver la configuration.

>> https://www.noelshack.com/2023-38-3-1695191285-sup.png

Avez-vous une idée ??

Merci d'avance 😉

 

Lien vers le commentaire
Partager sur d’autres sites

Presque, j'ai configuré un IPSLA icmp-echo sur mon CISCO avec un refresh tous les 3s qui fonctionne, je n'ai pas d'erreur sur ces pings : 

ip sla 2
 icmp-echo x.x.x.x source-ip y.y.y.y
  tag ICMP_ECHO
  threshold 150
  timeout 3000
  frequency 3
ip sla schedule 2 life forever start-time now

 

côté telegraf j'ai :

 

[agent]
   interval = "10s"
  round_interval = true
  metric_batch_size = 1000
  metric_buffer_limit = 10000
  collection_jitter = "3s"
  flush_interval = "10s"
  flush_jitter = "3s"
  precision = "0s"
 

[[outputs.influxdb]]
urls = ["http://127.0.0.1:8086"]
database = "telegraf"
username = "x"
password = "y"
interval = "10s"

[[inputs.snmp]]
  agents = [
        "x.x.x.x:161",
        ]
  community = "public"
  timeout = "10s"
  retries = 3
  [[inputs.snmp.table]]
    name = "CiscoIpSlaMonitor"
    inherit_tags = [ "sysName","sysLocation" ]
    [[inputs.snmp.table.field]]
      oid = "1.3.6.1.4.1.9.9.42.1.2.10.1.1"
 

 

Grafana m'affiche bien une nouvelle ligne toute les Xs (en fonction du scale) mais je n'ai pas de valeur qui remonte en face dans la colonne "Latence ICMP", hormis une toute les x minutes.

 

Merci 😉

Lien vers le commentaire
Partager sur d’autres sites

@Pinpon_112 Désolé j'avais zappé ton message :

Pour l'uptime, tu fais un Add field override pour le champ Uptime. Tu définis l'unité sur Time > duration (s) et tu ajoutes une opération math/100 :

grafana_filer_override.png

Pour enlever le champ Time, il faut choisir l'onglet Transform (à côté de Query, voir image ci-dessus), Add another transformation, Organize field, et là tu peux choisir de cacher les champs que tu souhaites.

Pour la valeur up-to-date, il faut utiliser les value mappings :

grafana_value_mapping.png

Et pour les snmp.XXX c'est lié au fait que tu n'exploites pas les alias pour nommer tes champs et colonnes, c'est la case ALIAS à personnaliser dans la query :

https://stackoverflow.com/questions/42397891/how-to-use-a-influxdb-tag-value-in-a-grafana-legend

@EuphoPlat Si tu fais un ping toutes les 3 secondes, et que tu définis un intervalle de polling de 10 secondes, je ne vois pas trop l'intérêt, à moins d'exploiter ce ping toutes les 3 secondes par ailleurs.

En théorie, je pense que telegraf devrait renvoyer la réelle valeur de ping mesurée lors de son polling.
As-tu essayé d'ajouter un fill(previous) dans GROUP BY ?

Lien vers le commentaire
Partager sur d’autres sites

En faite, c'est l'interrogation SNMP qui se fait toute les 5m, quand je regarde mon switch je vois des requêtes que toutes les 5m.

Donc la question c'est : pourquoi telegraf ne fait-il pas de requête toutes les x sec malgré la configuration.

Je n'ai pas trouvé de paramètre, je vais voir à sniffer pour voir si j'ai pas un blocage quelque part.

 

Après vérification, je confirme que les requêtes partes de mon SRV toute les 5mn...

Modifié par EuphoPlat
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.