Aller au contenu

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


.Shad.

Messages recommandés

@shadowking, j'ai une question. Lorsque je me en marche tout. Mon nas commence à être saturé.

Par exemple j'ai mis sur grafana les appareils suivant :

  • Mon NAS
  • Mon Router
  • Mon Router distant sous OPENVPN
  • Mon autre Router distant sous OPENVPN

Il reçoit apparemment tellement d'info que au bout de 10 minutes je n'ai plus accès à celui ci et je dois éteindre et rallumer le NAS.

Est ce normal ? Aussi je sais pas si cela est du à ma config. DS1511+ avec 1Go RAM.

 

Lien vers le commentaire
Partager sur d’autres sites

Salut,

Oui je pense que c'est normal, c'est notamment un problème de mémoire à mon avis, InfluxDB en réclame pas mal.

Tu peux toujours essayer de déporter InfluxDB sur une autre machine, un raspberry pi ou que sais-je.

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

Hello !

 

Merci pour ce tuto 🙂

J'ai du par contre ajouter les lignes suivantes dans la config de telegraf pour avoir les données pour les graphs "Disk Load" et DiskIO" du dashboard grafana :

 

   # System disk
   [[inputs.snmp.table]]
     oid = "SYNOLOGY-STORAGEIO-MIB::storageIOTable"
   [[inputs.snmp.table.field]]
       is_tag = true
     oid = "SYNOLOGY-STORAGEIO-MIB::storageIODevice"

Après je ne sais pas si cela vient de moi qui suit en DSM 5 ou si cela vient d'ailleurs, mais si cela peut en aider certains 😉

 

Benny

Lien vers le commentaire
Partager sur d’autres sites

Le 31/05/2019 à 22:02, shadowking a dit :

3/ Création du container InfluxDB

On commence par InfluxDB, car sans lui Telegraf ne saura pas exporter ses métriques, et Grafana n'aura pas de source de métrique.
On crée d'abord un dossier data dans le dossier du container.

Salut, Merci pour ce tuto, mais je suis bloqué. 

Où ce trouve le container ? Et quel moyen utiliser pour créer ce dossier "data" ?
C'est pas du tout mon domaine ça, mais avoir une interface graphique pour voir ce qui se passe dans le NAS c'est intéressant. 

Merci pour ton aide.

Lien vers le commentaire
Partager sur d’autres sites

il y a 13 minutes, DaG33K a dit :

Et quel moyen utiliser pour créer ce dossier "data" ?

Je cite le préambule du tutoriel :

Citation

 

Dossier de container

Afin que les données d'un container soient facilement accessibles, il n'est pas rare de monter des volumes à la création d'un container.
Dans mon cas, j'ai un dossier partagé docker, dans lequel on trouve un dossier pour chaque container dont je souhaite pouvoir changer la configuration ou accéder aux données.
Par exemple, pour telegraf, le chemin absolu de son dossier sera /volume1/docker/telegraf

 

En se basant sur l'exemple que je donne avec telegraf, tu pourrais très bien créer un dossier influxdb dans un dossier partagé docker qui reprend les données persistantes de tous tes containers.
Si ce n'est toujours pas clair n'hésite pas.

il y a 13 minutes, DaG33K a dit :

Où ce trouve le container ?

Nulle part pour l'instant, tu vas le créer à partir de l'image que tu as normalement déjà téléchargée à ce stade :

Le 31/05/2019 à 22:02, shadowking a dit :

III/ Installation :

1/ Les images

On télécharge les trois images docker suivantes :


telegraf
influxdb
grafana/grafana
Modifié par shadowking
Lien vers le commentaire
Partager sur d’autres sites

Merci pour ton aide, j'y suis arrivé 🙂 

J'ai malheureusement un autre souci ... je suis pas doué j'ai l'impression. Je "pense" avoir tout bien fait :

- Créer un dossier partagé à la racine de /volume1 que j'ai nommé "docker"
- Dans ce dossier, j'ai créé trois sous-dossiers :
=> telegraf
=> influxdb
=> grafana

- Dans chacun de ces dossiers j'ai créé un dossier "data"

J'ai télécharger et déposé chacun des fichier "xxxxx_docker-compose.yml" que tu as fourni, je les ai renommé en supprimant le "xxxxx" comme demandé pour qu'ils s'appellent tous "docker-compose.yml" (mais chacun dans son dossier spécifique 😉 )
Jusque là pas de soucis particulier.

Je me connecte en SSH, je lance la commande "docker-compose up -d"
Aucun souci pour les trois dossiers !

J'ai remarqué par contre que rien n'as été créé dans le dossier data de telegraf. Pourtant j'ai eu le message "done" sous PuttY lors de la commande.
J'ai continué de suivre ton tuto, et là je me frotte à un autre souci :

image.thumb.png.e4436677cfc4726a4984088a8ea684f9.png

J'ai fait trois tentative différente :

admin / admin => infructueux
admin / (mot de passe modifié) => infructueux
INFLUXDB_USER / INFLUXDB_USER_PASSWORD => infructueux

 

Citation

[EDIT]

Juste pour préciser, car c'était pas clair : j'ai modifier les logins / mdp que tu donnais par défaut qui était "nas_telegraf / nas_telegraf" 
Est-ce que le problème peux venir d'ici ? un endroit dans les fichier où j'aurais pu oublier de modifier ?

 

J'ai dû louper quelque chose, non ?

 

Merci pour ton aide, et pour ta patience 😅

Modifié par DaG33K
Précision sur un point
Lien vers le commentaire
Partager sur d’autres sites

il y a 37 minutes, DaG33K a dit :

- Créer un dossier partagé à la racine de /volume1 que j'ai nommé "docker"
- Dans ce dossier, j'ai créé trois sous-dossiers :
=> telegraf
=> influxdb
=> grafana

Jusque-là tout va bien. 🙂

il y a 37 minutes, DaG33K a dit :

Dans chacun de ces dossiers j'ai créé un dossier "data"

Oui pour InfluxDB et Grafana, pas besoin pour Telegraf.
Si tu regardes le script du docker-compose de Telegraf :

version: "2"
services:

    telegraf:
        image: telegraf
        container_name: telegraf
        hostname: telegraf
        volumes:
            - "/volume1/docker/telegraf/telegraf.conf:/etc/telegraf/telegraf.conf:ro"
            - "/proc:/host/proc:ro"
            - "/usr/share/snmp/mibs:/usr/share/snmp/mibs:ro"
        ports:
            - 8125:8125/udp
            - 8092:8092/udp
            - 8094:8094
        restart: unless-stopped
        
networks:
    default:
        external:
            name: data_export

On ne monte nulle part un dossier data, on monte par contre le fichier telegraf.conf, pour que les données persistent.
Si tu ne fais pas ça, à la moindre màj ou suppression du container, tu seras bon pour tout recommencer, car Telegraf aura généré un nouveau fichier au sein du container.
Là on lui dit que celui dans le container, c'est celui qu'on a dans notre dossier.

il y a 37 minutes, DaG33K a dit :

J'ai remarqué par contre que rien n'as été créé dans le dossier data de telegraf. Pourtant j'ai eu le message "done" sous PuttY lors de la commande.
J'ai continué de suivre ton tuto, et là je me frotte à un autre souci :

image.thumb.png.e4436677cfc4726a4984088a8ea684f9.png

J'ai fait trois tentative différente :

admin / admin => infructueux
admin / (mot de passe modifié) => infructueux
INFLUXDB_USER / INFLUXDB_USER_PASSWORD => infructueux

J'ai dû louper quelque chose, non ?

Oui, en effet 😛 

Tu dois faire correspondre les champs suivants :

influxdb:
        image: influxdb
        container_name: influxdb
        hostname: influxdb
        environment:
            - INFLUXDB_DB=nas_telegraf              # InfluxDB Details : Database
            - INFLUXDB_ADMIN_USER=admin             
            - INFLUXDB_ADMIN_PASSWORD=admin
            - INFLUXDB_USER=nas_telegraf            # InfluxDB Details & Basic Auth Details : User
            - INFLUXDB_USER_PASSWORD=nas_telegraf   # InfluxDB Details & Basic Auth Details : Password
            - INFLUXDB_HTTP_AUTH_ENABLED=true
...

Ce qui est en majuscule, c'est le nom de la variable, après le signe égal, c'est sa valeur, et c'est toujours la valeur qui nous intéresse.

INFLUXDB_DB => Nom de la variable
nas_telegraf => Valeur

N'hésite pas à relire le tutoriel à tête reposée, il n'est pas des plus simples et vérifie que tu as bien validé chaque étape avant Grafana, car cette dernière est triviale par rapport à ce qui la précède.

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

J'ai fait plus simple : J'ai tout repris depuis le début, et je n'ai pas tenté (cette fois-ci) de modifié les valeurs (login et mot de passe) que tu avais défini.
Et cette fois-ci ça fonctionne ! J'ai juste l'encadré "CPU Fan" qui tourne en boucle sans rien m'afficher. C'est le seul qui ne me remonte pas d'infos.

Enfin, n'ayant pas de Rpi pour le moment, j'ai arrêté ton tuto au point "VI/ Monitorer un Raspberry"

Merci pour ton aide, ton temps, ta patience et pour ce tuto 😉 

Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines après...
  • 2 mois après...
  • 1 mois après...

Bonjour et avant tout merci pour le temps passé à développer ce tutoriel !

Je suis malheureusement bloqué à l'étape de création de réseau bridge 😢 En effet, il n'y a nul pas l'onglet "réseau" sur l'app Docker:

J'ai fait quelque recherche mais je n'ai pas trouvé d'information concluante... Faut-il activer un mode 'avancé" ou autre ?

EDIT: j'ai été lire les pages du tutoriel et trouvé ma réponse, encore merci pour ton tuto !

 

Capture d’écran 2019-12-11 à 15.38.54.png

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

  • 3 semaines après...

Bonjour à tous.

Je viens de suivre le tuto très bien construit tout fonctionne correctement.

deux petits soucis :

- Quand on a deux raid dans un synology  : on a l'erreur Only queries that return single series/table is supported

- et je viens de lire tous les commentaires du topic et je vois que d'autre on également le soucis de remonter de l'onduleur via connexion USB sur un Synology.

 

Sinon tout le reste fonctionne, je vais voir maintenant pour remonter les infos de docker j'ai vu qu'il fallait mettre prometheus.

 

 

En tout cas merci.

 

 

 

 

Lien vers le commentaire
Partager sur d’autres sites

Merci de ton retour.

Alors pour l'UPS je n'ai pas réessayé depuis quelques temps je t'avoue, mais le Père Noël étant passé par là avec un 918+ ça va être l'occasion de s'y replonger :p.

Pour l'erreur tu la lis sur Grafana c'est ça ?

Ensuite pour Docker je n'ai jamais eu besoin de Prometheus, InfluxDB a convenu jusque là, en revanche je crois que Prometheus est plus poussé et qu'il permet sûrement plus de choses. As-tu essayé d'appliquer la partie du tutoriel consacrée à la surveillance de Docker ?

Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois après...

Bonjour,

un grand merci à @.Shad. pour ce tuto remarquablement précis et documenté. Je l'ai implémenté sans problème, à part mes propres erreurs .... . Ensuite, faut un peu naviguer pour maitriser Grafana .... mais au final on y arrive, même si on n'a pas les compteurs voulus du premier coup !

Ma question est ailleurs : emporté par l'élan, j'ai voulu implémenter le monitoring de ma Freebox Révolution. A priori cela doit être possible ?  Et là je sèche !!!

Je me concentre donc sur le docker "telegraf", qui collecte les données, puisque c'est lui qui me pose problème

  • installation du docker 'telegraf'
  • configuration supplémentaire à la main du docker 'telegraf' pour y inclure python, python3 en l’occurrence :
    • mise à jour de la distribution
      •         root@dev_telegraf:/# apt update
      •         root@dev_telegraf:/# apt install software-properties-common
    • installation du module 'pip'
      •         telecharger get-pip.py (https://bootstrap.pypa.io/get-pip.py)
      •         root@dev_telegraf:/usr/local/py# python3 get-pip.py --prefix=/usr/local
    • installation du module python 'requests'
      • root@dev_telegraf:/usr/local/py# python3 -m pip install requests
  • à partir de là, on peut suivre le tuto de @.Shad.
    • configuration du fichier telegraf.conf

Résultat :

  • les fichiers que l'on trouve sur GitHub sont relativement anciens. Je ne sais pas sur quelle version de Python ils tournaient. J'ai donc dû faire quelques modifications dans le fichier de commande freebox.py appelé par telegraf.conf. De même, quelques modifications dans la partie ajoutée spécifique à la Freebox dans telegraf.conf. Et l'API en cours sur le Freebox Révolution est maintenant en version 4, et non plus 3, ...
  • au final, après ces modifications :
    • association avec la Freebox OK
    • toutes les commandes (via le script python lancé dans le docker telegraf) vers la Freebox sont OK et retournent les statistiques demandées
      • par exemple :

                            root@dev_telegraf:/usr/local/py# python3 freebox.046.py -f influxdb -S 

  
                            freebox,endpoint=mafreebox.freebox.fr bytes_down=78632745319                                                                
                            freebox,endpoint=mafreebox.freebox.fr switch_2_link=1                                                                       
                            freebox,endpoint=mafreebox.freebox.fr switch_4_mode=3                                                                       
                            freebox,endpoint=mafreebox.freebox.fr switch_1_link=0                                                                       
                            freebox,endpoint=mafreebox.freebox.fr bytes_up=8388886152                                                                   
                            freebox,endpoint=mafreebox.freebox.fr switch_4_link=1                                                                       
                            freebox,endpoint=mafreebox.freebox.fr state=1                                                                               
                            freebox,endpoint=mafreebox.freebox.fr rate_down=593                                                                         
                            freebox,endpoint=mafreebox.freebox.fr rate_up=282                                                                           
                            freebox,endpoint=mafreebox.freebox.fr switch_1_mode=1                                                                       
                            freebox,endpoint=mafreebox.freebox.fr bandwidth_down=1000000000                                                             
                            freebox,endpoint=mafreebox.freebox.fr bandwidth_up=600000000                                                                
                            freebox,endpoint=mafreebox.freebox.fr switch_3_link=0                                                                       
                            freebox,endpoint=mafreebox.freebox.fr switch_2_mode=3                                                                       
                            freebox,endpoint=mafreebox.freebox.fr switch_3_mode=1

  • par contre, lorsque le script est lancé depuis le fichier de commande telegraf.conf:

# Read metrics from one or more commands that can output to stdout
[[inputs.exec]]
  ## Commands array
  commands = [
               "python3 /usr/local/py/freebox_046.py -f influxdb"
  ]

  • j’obtiens invariablement des erreurs du type :
    • [inputs.exec] Error in plugin: invalid character '>' looking for beginning of value
    • [inputs.exec] Error in plugin: invalid character '*' looking for beginning of value
    • ....

Je suis coincé à cette étape. Je ne sais pas comment investiguer, ni où, n'étant pas et de loin expert en python .... Je ne sais pas ce que sont ces caractères '*' ou '>' ni ce beginning of value ....

Je suis donc à la recherche que quelqu'un ayant réussi à prendre sa Freebox Revolution en monitoring via telegraf ..... Ou d'un expert qui me dira tout de suite : "bon sang mais c'est bien sûr ....." et ce sera évident pour lui ..... 🙂

Je ne sais même pas quelles traces ou fichiers peuvent vous être utiles .... donc merci si vous avez des idées, je tiens les infos à disposition ....

Bruno

Lien vers le commentaire
Partager sur d’autres sites

Salut,

Merci de tes retours !

Pour ton problème, je remarque que dans ton inputs.exec du script, tu ne précises rien concernant le format des données ("data format") je ne m'y connais pas plus que ça en exécution de scripts via telegraf, mais est-ce que ça ne pourrait pas avoir son importance ?

 

Lien vers le commentaire
Partager sur d’autres sites

Bonjour @.Shad.,

merci d'avoir passé un peu de temps sur ce problème.

J'ai aussi commencé par suivre strictement le tuto, et j'ai commencé par indiquer data_format = influx. D'ailleurs ce n'est pas clair en lisant les docs si on doit mettre influx ou influxdb.

Ceci dit, cela n'a fonctionné avec aucunes de ces 2 valeurs.

Donc j'ai provisoirement supprimé cette variable, et imposé "en dur" dans le script python de prendre le format influxdb

Mais maintenant que j'y pense ..... c'est peut-être une erreur.. Je vais reprendre cela avec data_format = influxdb.

En parallèle, je suis en train de tester une autre solution, à savoir faire tourner telegraf (sans docker) dans une VM mini ubuntu.

Dés que je trouve une solution, je la poste ....

Bruno78

Lien vers le commentaire
Partager sur d’autres sites

Je n'ai pas trouvé de documentation mentionnant influxdb mais seulement influx en variable acceptable pour data_format, en parallèle as-tu essayé en utilisant le format json ?

Tu peux essayer de t'inspirer de ce qu'on trouve sur cette page, notamment le template de fichier telegraf.conf qui est proposé. Moins facile à utiliser, mais tu peux en dernier recours t'orienter vers collectd à la place de telegraf.
Mais je suis certain que telegraf doit pouvoir fonctionner pour ton application.

Ne pas hésiter à ouvrir une issue sur le github de telegraf sinon. 🙂 

Lien vers le commentaire
Partager sur d’autres sites

Bon, finalement,

  • en insérant bien data_format=influx
  • en corrigeant encore quelques problèmes d'indentation dans le fichier python et le test de l'argument , cela semble passer. => telegraf envoie bien des données à influxdb

Ensuite, je voulais n'avoir qu'un seul influxdb réunissant les données de la Freebox et celles du NAS => pas réussi.  Du coup, 1 groupe (telegraf + influxdb) pour la  Freebox, et 1 groupe (telegraf+influxdb) pour le NAS. Le tout remontant vers une seule instance de Grafana .....ça commence à faire cher en ressources !

La joie n'a été que de courte durée : j'ai l'impression que la base Freebox influxdb est vide, ou ne se remplit pas ..... du coup rien ne remonte vers Grafana (qui portant voit bien cette instance Freebox d'influxdb)

Je continue .....

Lien vers le commentaire
Partager sur d’autres sites

Est-ce que tu as bien précisé dans le fichier telegraf.conf sur la freebox dans [[outputs.influxdb]] l'adresse IP ou le nom de domaine de ton NAS ? On ne peut mettre influxdb que si l'instance de telegraf en question est sur le même réseau docker que l'instance d'influxdb.

Autre chose, même si telegraf a l'air d'envoyer les données, tu peux voir dans les logs d'influxdb si des données sont effectivement reçues, exemple chez moi à l'instant je reçois des données de 3 instances distinctes de telegraf sur mon unique instance d'influxdb :

Capture.thumb.PNG.364743f24d9183d9c692000b2b201dc9.PNG

Tu peux également te connecter au conteneur influxdb et vérifier si les tables sont remplies ou non, as-tu pensé d'ailleurs à créer manuellement un utilisateur et une base de données pour ta freebox ?

Leur documentation est juste très bien faite si besoin : https://docs.influxdata.com/influxdb/v1.7/

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.