Aller au contenu

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


.Shad.

Messages recommandés

il y a 37 minutes, oracle7 a dit :

investir environ 70€ dans un RPI4 4Go de nouvelle génération serait un bon plan

Hé ! c'est pas parce qu'on est de l'ancienne génération que l'on est plus bon a rien 🤣

il y a 16 minutes, .Shad. a dit :

il y aurait des problèmes de compatibilité de Docker avec le Rpi 1st gen.

Bon mon RPi 1B rev2 32bits ne semble pas compatible avec Docker. Tant pis pour le monitoring, je réinstalle pi hole car ce Pi c'est un cadeau et je suis un grand sentimental, alors il faut qu'il serve.

Lien vers le commentaire
Partager sur d’autres sites

Il y a 2 heures, .Shad. a dit :

Hello, aucun champ de l'UPS n'est remonté par Telegraf ?

Pour ton autre question : https://docs.influxdata.com/influxdb/v1.8/administration/config/#reporting-disabled-false

 

Bonjour, 

Merci pour l info sur influxdb. 

En ce qui concerne ups, j ai récupéré votre dashbord, tout fonctionne sauf l ups pourtant j ai bien suivi votre tuto est vérifier qu il y avait bien les mib d ups dans le fichier de Telegraf. 

Je ne vois pas trop où chercher

 

Lien vers le commentaire
Partager sur d’autres sites

@.Shad., @Jeff777, @oracle7,

ce sera effectivement bien si le support de docker 32/64 bit et docker-compose était plein et entier. Je vais aller creuser de ce côté, ... d'autant que mon pi4 serait déjà en service si je n'avais pas oublier la carte micro SD :-(.

Mais bon j'ai toujours mon pi3. Et donc comme je vous l'avais indiqué quelques postes plus haut, il y a la méthode suivante qui fonctionne parfaitement (sur le pi3 en Raspbian) pour faire tourner docker et docker-compose : https://www.berthon.eu/2017/getting-docker-compose-on-raspberry-pi-arm-the-easy-way/

Telegraf tourne parfaitement avec cette config.. Comme j'avais été fainéant et avait juste copié le fichier telegraf.conf depuis le NAS, j'ai quand même vérifié ce matin en repartant de 0 sur le pi3

1) on télécharge l'image telegraf:latest

root@Pibrw:/home/pi/Scripts/Docker/tmp# docker pull telegraf:latest
latest: Pulling from library/telegraf
d8925d905dad: Pull complete
abd9c5a6d774: Pull complete
22e1f8e87a65: Pull complete
02ec62dff305: Pull complete
1f7e36c129df: Pull complete
11adad9bc0d1: Pull complete
0246e9806698: Pull complete
Digest: sha256:2c462d284d4aaaca99f88cd6d9c00ab39c73cdfd5882c94bb139761967a17d9a
Status: Downloaded newer image for telegraf:latest
docker.io/library/telegraf:latest

root@Pibrw:/home/pi/Scripts/Docker/tmp#
root@Pibrw:/home/pi/Scripts/Docker/tmp#
root@Pibrw:/home/pi/Scripts/Docker/tmp# ls
root@Pibrw:/home/pi/Scripts/Docker/tmp# docker image ls
REPOSITORY         TAG                  IMAGE ID       CREATED         SIZE
telegraf           latest               7136df9355ff   3 days ago      229MB
...

2) on génère le fichier de conf comme indiqué par .Shad :

root@Pibrw:/home/pi/Scripts/Docker/tmp# docker run --rm telegraf telegraf config | sudo tee telegraf.conf
# Telegraf Configuration
#
# Telegraf is entirely plugin driven. All metrics are gathered from the
# declared inputs, and sent to the declared outputs.
#
# Plugins must be declared in here to be active.
# To deactivate a plugin, comment out the name and any variables.

[.....]

#     path = "/rollbar"
#
#   [inputs.webhooks.papertrail]
#     path = "/papertrail"
#
#   [inputs.webhooks.particle]
#     path = "/particle"


# # This plugin implements the Zipkin http server to gather trace and timing data needed to troubleshoot latency problems in microservice architectures.
# [[inputs.zipkin]]
#   # path = "/api/v1/spans" # URL path for span data
#   # port = 9411            # Port on which Telegraf listens

On a une sortie écran du fichier.

3) on vérifie que le fichier telegraf.conf a bien été créé et qu'il n'est pas vide :

root@Pibrw:/home/pi/Scripts/Docker/tmp# ls -lisa
total 284
533600   4 drwxr-xr-x 2 root root   4096 janv. 16 07:18 .
397235   4 drwxr-xr-x 7 pi   pi     4096 janv. 16 07:07 ..
533639 276 -rw-r--r-- 1 root root 278989 janv. 16 07:18 telegraf.conf

Voilà.

Dés que le PI4 sera en service, je vais regardé si il y a effectivement le support "officiel" de docker et docker-compose.

Bruno78

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

il y a 47 minutes, .Shad. a dit :

C'est juste pour le Pi 1 apparemment que ça pose problème. Sur les autres il n'y a aucun problème.

Oui c'est ce qui est écrit mais ça vaut peut-être le coup de vérifier la méthode indiquée par @bruno78 et puis ça me permet de pratiquer le RPi que je n'avais pas beaucoup utilisé jusqu'à ce tuto 😁

Lien vers le commentaire
Partager sur d’autres sites

Hum... J'ai quand même un doute sur la méthode indiquée par @bruno78 :

However, docker-compose is not (yet) available for Raspberry Pi or any other ARM architecture.

(Update 2019-03-24: it is now easily available using pip. Doing pip install docker-compose works on ARM.)

Alors quel est l'intérêt du tuto ?? J'ai rien compris ou bien suivre ce tuto conduit à un résultat différent?

 

 

Lien vers le commentaire
Partager sur d’autres sites

@Jeff777 oui désolé j'avais mal lu, j'étais persuadé que tu étais sur Pi3 et pas Pi1.

ben ou mais après :

So I forked the official Docker Compose repository and did a few minimalistic changes in order to get a built of docker-compose for Raspberry Pi. I have created a Pull Request in the hope that it might get accepted and that ARMv7 be officially built. But while waiting for the review process to be triggered, here is how to do it for yourself.

Et ensuite tu construis ton docker-compose

Chez moi ca m'a conduit à avoir un docker-compose operationnel par une autre methode que celle de Shad (peut-être plus officielle).  Sur le nouveau pi4, j'essaierai d'abord de rester dans les version "officielles"

et puis comme tu dis, ca fait pratiquer ....

Lien vers le commentaire
Partager sur d’autres sites

@Lestat69

J'ai remis ce que j'avais pour l'UPS (et qui fonctionne chez moi) dans le fichier snmp.conf
Au cas où j'aurais fait un c/c malheureux.

Dis-moi si ça marche mieux, et n'oublie pas de redémarrer le conteneur après modification du fichier de configuration.

Lien vers le commentaire
Partager sur d’autres sites

@Sudo

Voilà 🙂.
grafana-dashboard.json.7z

J'ai généré le json pour une exportation externe, il y a donc ceci en plus au début du fichier :

"__inputs": [
    {
      "name": "DS_NAS_INFLUXDB",
      "label": "NAS_InfluxDB",
      "description": "",
      "type": "datasource",
      "pluginId": "influxdb",
      "pluginName": "InfluxDB"
    }
  ],
  "__requires": [
    {
      "type": "panel",
      "id": "bargauge",
      "name": "Bar gauge",
      "version": ""
    },
    {
      "type": "panel",
      "id": "gauge",
      "name": "Gauge",
      "version": ""
    },
    {
      "type": "grafana",
      "id": "grafana",
      "name": "Grafana",
      "version": "7.3.7"
    },
    {
      "type": "panel",
      "id": "grafana-piechart-panel",
      "name": "Pie Chart",
      "version": "1.6.1"
    },
    {
      "type": "panel",
      "id": "graph",
      "name": "Graph",
      "version": ""
    },
    {
      "type": "datasource",
      "id": "influxdb",
      "name": "InfluxDB",
      "version": "1.0.0"
    },
    {
      "type": "panel",
      "id": "stat",
      "name": "Stat",
      "version": ""
    },
    {
      "type": "panel",
      "id": "table",
      "name": "Table",
      "version": ""
    },
    {
      "type": "panel",
      "id": "table-old",
      "name": "Table (old)",
      "version": ""
    }
  ],

Je pense que tu devrais pouvoir le modifier pour faire correspondre tes bases de données 😉 ça évitera de modifier chaque panel à la main ^^

Avant l'importation de ton coté, je te conseille de remplacer avec un éditeur de texte toutes mes adresses IP par les tiennes 😉 (fait une recherche sur 192.168.).

Lien vers le commentaire
Partager sur d’autres sites

Pour info j'ai remis à jour mes tableaux de bord personnels avec les nouveaux modèles Table, Single Stat, etc... C'est pas mal de boulot, et il faut passer par l'onglet Transform pour plusieurs anciennes fonctionnalités.

Donc ne pas se lancer là-dedans si on n'a que 5 minutes.

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

J'ai utiliséz un panel que m'avait filé @oracle7 mais le rendu est pas tout à fait le même :
en haut avec le vieux modèle Table, en bas le nouveau Table :

cP9SI2s.png

Je n'arrive pas à faire en sorte que ça prenne tout l'espace automatiquement sans redimensionner à la main les colonnes... 
 

Ha si, en fait j'avais pas vu que j'avais fixé les tailles dans l'onglet override :

WDTRs61.png

Mais sinon c'est vrai que c'est carrément plus chiant à faire 😮 

Le JSON de ce panel :

{
  "datasource": "NAS_InfluxDB",
  "fieldConfig": {
    "defaults": {
      "custom": {
        "width": 130,
        "align": "center",
        "displayMode": "auto",
        "filterable": false
      },
      "unit": "none",
      "decimals": 1,
      "thresholds": {
        "mode": "absolute",
        "steps": [
          {
            "color": "red",
            "value": null
          }
        ]
      },
      "mappings": []
    },
    "overrides": [
      {
        "matcher": {
          "id": "byName",
          "options": "Modèle"
        },
        "properties": [
          {
            "id": "custom.width"
          }
        ]
      },
      {
        "matcher": {
          "id": "byName",
          "options": "N° Série"
        },
        "properties": [
          {
            "id": "custom.align",
            "value": "left"
          },
          {
            "id": "custom.width"
          }
        ]
      },
      {
        "matcher": {
          "id": "byName",
          "options": "Version DSM"
        },
        "properties": [
          {
            "id": "custom.width"
          }
        ]
      },
      {
        "matcher": {
          "id": "byName",
          "options": "Mise à Jour"
        },
        "properties": [
          {
            "id": "custom.width",
            "value": 149
          },
          {
            "id": "custom.displayMode",
            "value": "color-background"
          },
          {
            "id": "mappings",
            "value": [
              {
                "from": "",
                "id": 0,
                "text": "Disponible",
                "to": "",
                "type": 1,
                "value": "1"
              },
              {
                "from": "",
                "id": 1,
                "text": "Version à Jour",
                "to": "",
                "type": 1,
                "value": "2"
              },
              {
                "from": "3",
                "id": 3,
                "text": "En cours",
                "to": "5",
                "type": 2,
                "value": "4"
              }
            ]
          },
          {
            "id": "thresholds",
            "value": {
              "mode": "absolute",
              "steps": [
                {
                  "color": "red",
                  "value": null
                },
                {
                  "color": "green",
                  "value": 2
                },
                {
                  "color": "blue",
                  "value": 3
                },
                {
                  "color": "#6ED0E0",
                  "value": 4
                },
                {
                  "color": "#EF843C",
                  "value": 5
                }
              ]
            }
          }
        ]
      },
      {
        "matcher": {
          "id": "byName",
          "options": "Temps Fonc."
        },
        "properties": [
          {
            "id": "unit",
            "value": "timeticks"
          },
          {
            "id": "custom.width"
          }
        ]
      },
      {
        "matcher": {
          "id": "byName",
          "options": "Time"
        },
        "properties": [
          {
            "id": "custom.width"
          }
        ]
      }
    ]
  },
  "gridPos": {
    "h": 5,
    "w": 12,
    "x": 12,
    "y": 4
  },
  "id": 95,
  "options": {
    "showHeader": true,
    "sortBy": [
      {
        "displayName": "Adresse IP",
        "desc": false
      }
    ]
  },
  "pluginVersion": "7.3.7",
  "targets": [
    {
      "groupBy": [
        {
          "type": "tag",
          "params": [
            "agent_host"
          ]
        }
      ],
      "hide": false,
      "limit": "",
      "measurement": "snmp.SYNO",
      "orderByTime": "ASC",
      "policy": "default",
      "query": "SELECT last(\"modelName\") AS \"Modèle\", last(\"serialNumber\") AS \"N° Série\", last(\"version\") AS \"Version DSM\", last(\"upgradeAvailable\") AS \"Mise à Jour\", last(\"sysUpTime\")  / 100 AS \"Temps Fonc.\" FROM \"snmp.SYNO\" WHERE (\"agent_host\" = '192.168.2.1') AND $timeFilter",
      "rawQuery": false,
      "refId": "A",
      "resultFormat": "table",
      "select": [
        [
          {
            "type": "field",
            "params": [
              "modelName"
            ]
          },
          {
            "type": "last",
            "params": []
          },
          {
            "type": "alias",
            "params": [
              "Modèle"
            ]
          }
        ],
        [
          {
            "type": "field",
            "params": [
              "serialNumber"
            ]
          },
          {
            "type": "last",
            "params": []
          },
          {
            "type": "alias",
            "params": [
              "N° Série"
            ]
          }
        ],
        [
          {
            "type": "field",
            "params": [
              "version"
            ]
          },
          {
            "type": "last",
            "params": []
          },
          {
            "type": "alias",
            "params": [
              "Version DSM"
            ]
          }
        ],
        [
          {
            "type": "field",
            "params": [
              "sysUpTime"
            ]
          },
          {
            "type": "last",
            "params": []
          },
          {
            "type": "alias",
            "params": [
              "Temps Fonc."
            ]
          }
        ],
        [
          {
            "type": "field",
            "params": [
              "upgradeAvailable"
            ]
          },
          {
            "type": "last",
            "params": []
          },
          {
            "type": "alias",
            "params": [
              "Mise à Jour"
            ]
          }
        ]
      ],
      "tags": [],
      "tz": ""
    }
  ],
  "title": "RouteurSynology",
  "transformations": [
    {
      "id": "organize",
      "options": {
        "excludeByName": {
          "Time": true
        },
        "indexByName": {},
        "renameByName": {
          "Modèle": "",
          "agent_host": "Adresse IP"
        }
      }
    }
  ],
  "type": "table",
  "description": "",
  "timeFrom": null,
  "timeShift": null
}

 

Lien vers le commentaire
Partager sur d’autres sites

Il y a 2 heures, MilesTEG1 a dit :

Je pense que tu devrais pouvoir le modifier pour faire correspondre tes bases de données 😉 ça évitera de modifier chaque panel à la main ^^

Avant l'importation de ton coté, je te conseille de remplacer avec un éditeur de texte toutes mes adresses IP par les tiennes 😉 (fait une recherche sur 192.168.).

@MilesTEG1 merci pour le fichier. il faut vraiment s'y connaitre bien même pour modifier..

chez moi ça ne donne presque pas grande chose. même avec un simple plugins.

Lien vers le commentaire
Partager sur d’autres sites

@Sudo

Bonjour,

il y a 19 minutes, Sudo a dit :

il faut vraiment s'y connaitre bien même pour modifier..

chez moi ça ne donne presque pas grande chose. même avec un simple plugins.

Je viens de reprendre le dashbord de @MilesTEG1 pour voir. Comme il te l'a dit, modifies dans une éditeur de texte, avant d'importer le json, toutes les @IP pour faire correspondre à ton environnement. Au moins une grande partie va correspondre. Après tu ne couperas pas à examiner individuellement les panels qui n'affichent rien. Dans certains cas ce n'est pas que l'@IP qu'il faut modifier, cela aurait été trop facile ! Il faut bien réfléchir à la source des données des requêtes.

Attention aussi, certains panels sont spécifiques et très liés à l'architecture matérielle en place (Routeur, Nas, etc ...).

Cordialement

oracle7😉

Lien vers le commentaire
Partager sur d’autres sites

il y a une heure, oracle7 a dit :

Après tu ne couperas pas à examiner individuellement les panels qui n'affichent rien. Dans certains cas ce n'est pas que l'@IP qu'il faut modifier, cela aurait été trop facile ! Il faut bien réfléchir à la source des données des requêtes.

Bonjour @oracle7, effectivement j'ai modifié l'adresse IP pour le NAS ( je n'ai pas de routeur SNMP à monitorer).

 

il y a une heure, oracle7 a dit :

Attention aussi, certains panels sont spécifiques et très liés à l'architecture matérielle en place (Routeur, Nas, etc ...).

je vais encore m'y mettre en soirée pour voir.

Lien vers le commentaire
Partager sur d’autres sites

@Jeff777 : Pour ton souci de docker-compose incompatible avec le Rpi 1, je viens de voir que Linuxserver a sorti une image docker-compose, ça fonctionnera peut-être (vu que l'image docker-compose est basée sur une distribution compatible).

A vérifier : https://hub.docker.com/r/linuxserver/docker-compose

Lien vers le commentaire
Partager sur d’autres sites

@.Shad.

Je ne crois pas que l'image soit compatible :

 

The architectures supported by this image are:

Architecture Tag
x86-64 amd64-latest
arm64 arm64v8-latest
armhf arm32v7-latest

 

et mon model est en arm32v6:

Capture.JPG.10f1427eb05b06e49d8d3f2930b76e6c.JPG

Si j'ai bien tout compris 🙄

Lien vers le commentaire
Partager sur d’autres sites

@.Shad.

J'ai trouvé ça  mais j'ose pas trop 😜

Edit : Avant de me lancer j'aimerais ton avis. J'ai lu un peu sur HypriotOS et suis tenté.

Je me sers du RPi uniquement pour Pi-Hole et je pourrais installer Pi-Hole et ton monitoring via 2 containers Docker. 

Question : si je flash HypriotOS sur une autre carte SD puis l'installe sur le RPi, est-ce que je peux revenir en arrière en rebootant sur mon ancienne carte SD ?

Je n'ai pas l'occasion de me consacrer à ce projet avant une bonne semaine ça me donne le temps de me documenter.

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