Exporters

Un exporter est un composant qui envoie des données de métriques à un backend de monitoring. Les exporters sont configurés pour envoyer des données à un serveur Prometheus. Les exporters sont configurés dans le fichier de configuration de Prometheus.

Liste des exporters

Nous utilisons les exporters suivants :

  • Node exporter
  • Kubernetes exporter
  • CAdvisor exporter
  • Minio exporter
  • MySQL exporter
  • SNMP exporter
  • Ping exporter
  • XCPng exporter
  • Windows Exporter
Warning

Nous n’avons pas pu déployer tous les exporters, car certains d’entre eux étaient complexes à déployer et à implémenter

Node exporter

Explication

Le node exporter est un exporter qui permet de récupérer des métriques sur le système d’exploitation. Il permet de récupérer des métriques sur le CPU, la mémoire, le disque, le réseau, etc.

Configuration

Dans notre cas, nous avons deux utilisations différentes du node exporter. L’une pour les vm et l’autre pour les nœuds kubernetes.

Configuration pour les VM

Tout d’abord pour une vm “Debian 12” il va falloir installer le paquet node exporter. Pour cela il faut ajouter le dépôt de node exporter.

echo "deb https://packagecloud.io/prometheus-community/exporter/debian/ bullseye main" >
 /etc/apt/sources.list.d/prometheus-community-exporter.list
curl -s https://packagecloud.io/gpg.key | apt-key add -
apt-get update
apt-get install prometheus-node-exporter

Ensuite activer le service

```bash
systemctl enable --now prometheus-node-exporter
```

Configuration pour les nœuds Kubernetes

Il faut créer un demonset qui créera une instance de node exporter par nœud.

apiVersion: apps/v1
kind: DaemonSet
metadata:
  labels:
    app.kubernetes.io/component: exporter
    app.kubernetes.io/name: node-exporter
  name: node-exporter
  namespace: monitoring
spec:
  selector:
    matchLabels:
      app.kubernetes.io/component: exporter
      app.kubernetes.io/name: node-exporter
  template:
    metadata:
      labels:
        app.kubernetes.io/component: exporter
        app.kubernetes.io/name: node-exporter
    spec:
      containers:
        - args:
            ## Configuration pour le node exporter
            - --path.sysfs=/host/sys
            - --path.rootfs=/host/root
            - --no-collector.wifi
            - --no-collector.hwmon
            - --collector.filesystem.ignored-mount-points=
            ^/(dev|proc|sys|var/lib/docker/.+|var/lib/kubelet/pods/.+)($|/)
            - --collector.netclass.ignored-devices=^(veth.*)$
          name: node-exporter
          ## Image du node exporter
          image: prom/node-exporter
          ports:
            - containerPort: 9100
              protocol: TCP
          resources:
            ## Limite de ressources pour le node exporter
            limits:
              cpu: 250m
              memory: 180Mi
            requests:
              cpu: 102m
              memory: 180Mi
          volumeMounts:
            ## Montage des volumes pour le node exporter
            - mountPath: /host/sys
              mountPropagation: HostToContainer
              name: sys
              readOnly: true
            - mountPath: /host/root
              mountPropagation: HostToContainer
              name: root
              readOnly: true
      volumes:
        - hostPath:
            path: /sys
          name: sys
        - hostPath:
            path: /
          name: root

Puis, nous importons le dashboard grafana pour le node exporter.

Dashboard

Windows exporter

Explication

Le windows exporter est un exporter qui permet de récupérer des métriques sur le système d’exploitation windows. Il permet de récupérer des métriques sur le CPU, la mémoire, le disque, le réseau, etc.

Configuration

Pour l’installation du windows exporter, il faut télécharger le fichier msi sur le site de prometheus. Puis l’installer sur la machine windows.

installation

installeur prometheus

Il est possible de voir que le service est fonctionnel

Service Windows

Pour automatiser l’ajout des machines windows dans prometheus, il est possible de créer une GPO

Création de GPO

Tout d’abord, il faut créer un répertoire réseau qui contiendra l’installeur windows

gpo-folder.png

Ensuite, il faut créer un GPO

Création de la GPO

Nommage de la GPO

Il faut ajouter le chemin UNC du répertoire réseau avec le package

Repertoire UNC

La GPO devrait ressembler à cela

Résultat final de la GPO

Kubernetes exporter

Explication

Le Kubernetes exporter est un exporter qui permet de récupérer des métriques sur les nœuds Kubernetes. Celui-ci s’occupe de récupérer les informations sur l’api de kubernetes, et de les envoyer à Prometheus. Tel que le nombre de pods, le nombre de nœuds, etc.

Nous n’avons pas pu déployer le Kubernetes exporter car nous n’avons pas réussi à configurer correctement le service account. Afin que cela fonctionne correctement. Sans utiliser le template helm.

CAdvisor exporter

Explication

CAdvisor est un outil qui permet de récupérer des métriques sur les conteneurs docker. Il permet de récupérer des métriques sur le CPU, la mémoire, le disque, le réseau, etc. Mais cadvisor n’est pas un exporter, c’est un outil qui permet de récupérer des métriques sur les conteneurs docker.

Minio exporter

Explication

Cet exporter permet de récupérer les metrics de minio qui est utilisé pour stocker les backups.

SNMP exporter

Explication

L’exporter SNMP permet de récupérer des métriques sur les équipements réseaux qui supportent le protocole SNMP.

Ping exporter

Explication

Cet exporter est particulier, mais nous permet de faire du health check sur des services qui ne supportent pas le protocole