Docker, Pi-Hole, Pi-Hole Exporter, Prometheus et Grafana

Voulant mettre en place un contrôle parental à la maison, j’ai eu recours  à l’installation d’un serveur Pi-Hole. Simple et léger, tournant sur un Raspberry Pi de première génération, proposant aussi une gestion DHCP, c’est une solution parfaite qui ne présente que des avantages.

Pi-Hole propose un dashboard d’administration complet et sympathique. Je souhaitais cependant avoir plus de statistiques et intégrer le tout dans la stack docker de monitoring que je venais d’installer.

Une rapide recherche m’a permis de tomber sur le Github Pi-Hole Exporter. La solution est codée en go et propose déjà des binaires compilés pour x86, x64 et ARM. Cependant le container docker proposé utilise le binaire x86.

J’ai par conséquent créé un container ARM fonctionnel pour mon Raspberry Pi 4. Vous trouverez le Dockerfile sur mon Github.

Ci dessous le Dockerfile:

FROM ubuntu:18.04

WORKDIR /root

RUN apt-get update && apt-get -y upgrade &&  apt-get -y install wget

RUN wget https://github.com/eko/pihole-exporter/releases/latest/download/pihole_exporter-linux-arm

RUN chmod +x pihole_exporter-linux-arm

EXPOSE 9617

CMD  ["./pihole_exporter-linux-arm"]

Le Dockerfile ci dessous pourra être build avec la commande suivante:

docker build -t pihole-exporter .

L’exporter ira chercher lui même les informations dont il a besoin dans le Pi-Hole pour générer les metrics intégrables à Prometheus.
Ainsi nous pourrons démarrer le container avec la commande et les paramètres suivants:

docker run -d -p 0.0.0.0:9617:9617 -e 'PIHOLE_HOSTNAME=192.168.XXX.XXX' -e 'PIHOLE_PASSWORD=XXXXXXX' -e 'INTERVAL=5s' pihole_exporter

Paramètres:

docker run -d : nous démarrerons le container en mode daemon
-p 0.0.0.0:9617:9617: nous publierons de manière publique le port 9617
-e ‘PIHOLE_HOSTNAME=192.168.XXX.XXX’ : nous donnerons le nom FQDN ou l’IP de notre Pi-Hole
-e ‘PIHOLE_PASSWORD=XXXXXX’: ici nous spécifierons le mot de passe admin du Pi-Hole
-e ‘INTERVAL=5s’: nous définirons l’intervalle auquel le Pi-Hole sera interrogé.

Afin de ne pas avoir à relancer le container à la main à chaque fois, nous pourrons utiliser le docker-compose ci dessous (également disponnible sur mon Github):

version: '3.3'

networks:
  monitoring:

services:

  pihole_exporter:
    image: remiflandrois/pihole-exporter:latest
    environment:
        - PIHOLE_HOSTNAME=XXXXX
        - PIHOLE_PASSWORD=XXXXX
        - INTERVAL=5s
        - PORT=9617
    ports:
        - 9617:9617
    networks:
        - monitoring
    restart: always


Comme vous pouvez le constater le container utilisé ici est « remiflandrois/pihole-exporter:latest ». Ce dernier est disponible sur DockerHub.

Enfin nous pourrons importer le Dashboard Grafana pré-existant disponible ici.

%d blogueurs aiment cette page :