Code et fichiers de configuration pour la supervision de routeurs Mikrotik via Grafana, Prometheus, SNMP Exporter.
src contient le code source de mikromap-cli qui permet d'ajouter un nouveau routeur à tous les fichiers nécessaires, et de mikromap-api, un serveur HTTP qui transmet les informations au panel Geomap de Grafana.
conf contient les fichiers de configuration utilisés par les composants.
Le dashboard est une version modifiée de Mikrotik monitoring par igorkha.
Télécharger les binaires stand-alone de Grafana, Prometheus, SNMP-Exporter et de ce dépôt (ou le clôner et le build).
Depuis le dossier où ils ont été téléchargés, placer dans le répertoire personnel et extraire:
mv *.tar.gz ~
cd ~
tar -xf mikrotik*
tar -xf grafana*
tar -xf prometheus*
tar -xf snmp_exporter*
rm -rf *.tar.gz
Sur les pare-feux, veiller à ce que :
- les protocoles SNMP (pour les infos) et ICMP (pour la vérification de l'état sur la carte) soient autorisés pour l'IP du serveur de supervision ( et de préférence bloqués pour les autres);
- la communauté public soit bien en lecture seule (elle devrait l'être par défaut);
N. B.- Ajouter des services systemd pour chaque exécutable est recommandé pour éviter d'avoir à les relancer manuellement à chaque redémarrage.
Lancer Prometheus:
~/prometheus*/prometheus --config.file=$HOME/mikrotik-grafana/conf/prometheus_config.yml
Lancer SNMP Exporter:
~/snmp_exporter*/snmp_exporter --config.file=$HOME/mikrotik-grafana/conf/snmp_config.yml
Lancer Grafana:
cd ~/grafana*/bin/
./grafana server --config=$HOME/mikrotik-grafana/conf/grafana_config.ini
Lancer l'API pour la carte:
cd ~/mikrotik-grafana/bin/
sudo ./mikromap-api
N. B.- L'API doit obligatoirement être lancée en sudo pour que les pings fonctionnent.
Ouvrir l'interface web à l'adresse localhost:3000
.
Se connecter (username:admin
/ password:admin
).
Dans la barre latérale: Administration > Plugins and data > Plugins et a côté de la barre de recherche: State = All
Installer les plugins JSON API de Marcus Olsson, et Orchestra Cities Map de Orchestra Cities by Martel
Dans la barre latérale: Connections > Data sources
Ajouter deux sources de données:
- Prometheus (Prometheus server URL =
http://localhost:9090
) - JSON API (URL =
http://localhost:3333
)
N.B.- Laisser les noms par défaut (sinon il faudra re-sélectionner les sources partout où elles sont utilisées).
Dans la barre latérale: Dashboards, puis New > Import > Upload dashboard JSON file , et choisir ~/mikrotik-grafana/conf/grafana_dashboard.json
. Séléctionner les sources de données précédemment crées.
Dans la barre latérale: Administration > General > Default preferences, sélectionner Home Dashboard = General/Supervision Mikrotik
.
Créer d'autres utilisateurs si besoin (dans la barre latérale: Administration > Users and access > Users puis New user)
N.B.- Dans la configuration actuelle, tous les utilisateurs ont accès à tous les dashboards du dossier principal, donc éviter d'en créer d'autres. Sinon, les mettre dans des dossiers à accès restreint.
En cas de modification ou de migration de l'instance, penser à faire un backup de routers.json, global_targets.json et mikrotik_targets.json pour ne pas avoir à ajouter tous les routeurs à nouveau.
L'ajout de routeur à la supervision se fait via mikromap-cli:
cd ~/mikrotik-grafana/bin/
./mikromap-cli
Pour ajouter plusieurs routeurs sans redémarrer l'application à chaque fois, utiliser le flag -n [valeur positive]
.
- Si l'adresse IP à ajouter correspond à un Watchguard, l'indiquer en ajoutant un W sans espace avant l'adresse IP pour éviter des problèmes de compatibilité (ex: W8.8.8.8)
- Si le routeur ne doit pas être affiché sur la carte, laisser l'adresse postale vide.
N.B.- L'adresse postale entrée n'a pas besoin d'être parfaitement écrite (pas besoin d'accents, tirets, etc.) mais veiller à inclure un minimum d'informations pour que l'API renvoie les bonnes coordonnées (ex: 1 rue leclerc st etienne suffit à obtenir 1 Rue du Général Leclerc 42100 Saint-Étienne)
- Le nom d'utilisateur Grafana renseigné est comparé à celui renvoyé directement par Grafana, et doit donc être identique à celui du compte Grafana associé (pas grave si les majuscules sont différentes), sinon il n'apparaîtra pas sur le dashboard de cet utilisateur. Laisser le champ vide si le routeur ne doit être visible que par l'admin.
Pour supprimer un routeur, utiliser mikromap-cli avec le flag -n [valeur négative]
. Il n'y a besoin que de l'adresse IP du routeur, et le préfixe W n'est pas nécessaire pour désigner un Watchguard.
Si le flag --users
est activé, l'outil parcourera tous les routeurs et pour chacun tentera un appel à l'API d'administration de Grafana pour ajouter un utilisateur. Si l'utilisateur n'existe pas encore, il est créé et la paire login:password générée est stockée dans un fichier sous mikrotik-grafana/users/.
Pour que les appels à l'API puissent passer, indiquer le mot de passe de l'administateur Grafana avec --pass [mot de passe]
. De même, si on fait un appel à une instance distante ou sur un port autre que 3000, indiquer son IP avec --grafana [{ip}:{port}]
.