# Blackbox Exporter
https://github.com/prometheus/blackbox_exporter
---
<!-- .slide: style="text-align: left;"> -->
## Principe de fonctionnement
* peut être vu comme un "curl à la demande" qui renvoie un résultat compatible avec Prometheus
* URL de probe pour Prometheus : [`http://<blackbox_exporter>:9115/probe?module=http_check&target=https://mondomaine.fr`]()
* Les modules (comme `http_check`) sont définis dans la configuration de blackbox_exporter
----
<!-- .slide: style="text-align: left;"> -->
## Blackbox interactif
```
k -n monitoring port-forward \
svc/blackbox-exporter-prometheus-blackbox-exporter \
9115:9115
```
http://localhost:9115 dans mon navigateur
---
<!-- .slide: style="text-align: left;"> -->
## Support Blackbox_exporter chez Monitoring
* ajouter une URL à monitorer
* ajouter un module et une nouvelle target
* visualiser les métriques générées
* créer des alertes à partir de ces métriques
Note : on doit aussi savoir le déployer, le mettre à jour... Et un jour, migrer son déploiement sur Trackbone ?
---
<!-- .slide: style="text-align: left;"> -->
## Ajouter une URL à monitorer
* Documentation : [howto/blackbox-exporter/BlackboxExporter.md](https://git.corp.cloudwatt.com/caascad/monitoring/blob/master/documentation/howto/blackbox-exporter/BlackboxExporter.md)
* Principe : ajouter un servicemonitor
----
<!-- .slide: style="text-align: left;"> -->
## Ajouter une URL à monitorer chez Monitoring
* modifier [ansible/inventory/group_vars/all/blackbox_exporter.yaml](https://git.corp.cloudwatt.com/caascad/monitoring/blob/master/ansible/inventory/group_vars/all/blackbox_exporter.yaml)
* redéployer avec ansible
Paramétrage facultatif
* `module` : `http_2xx` par défaut
* `url` : [`https://<your name>.<The blackbox exporter zonename>.caascad.com`]() par défaut
---
<!-- .slide: style="text-align: left;"> -->
## Ajouter un nouveau module
* Documentation :
* [howto/blackbox-exporter-maintenance/modules.md](https://git.corp.cloudwatt.com/caascad/monitoring/blob/master/documentation/howto/blackbox-exporter-maintenance/modules.md)
* Upstream : https://github.com/prometheus/blackbox_exporter/blob/master/CONFIGURATION.md
* Principe :
* modifier [ansible/roles/blackbox-exporter/templates/blackbox-exporter.yaml.j2](https://git.corp.cloudwatt.com/caascad/monitoring/blob/master/ansible/roles/blackbox-exporter/templates/blackbox-exporter.yaml.j2)
* redéployer avec ansible
----
<!-- .slide: style="text-align: left;"> -->
## Pour tester
* ajouter le module dans le ConfigMap : `kubectl edit cm blackbox-exporter-prometheus-blackbox-exporter`
* faire prendre en compte la nouvelle modif avec `kubectl -n monitoring delete pod ...`
* ajouter un servicemonitor à la main : `kubectl apply -f servicemonitor-de-test.yaml`
* ne pas oublier de faire le ménage
----
<!-- .slide: style="text-align: left;"> -->
## Pour déboguer
... parce que ça ne marche pas toujours du premier coup !
Voir les logs de blackbox_exporter en filtrant sur la target qui vient d'être ajoutée.
Et on peut utiliser cette méthode à tout moment. Elle n'est pas limitée au développement !
---
<!-- .slide: style="text-align: left;"> -->
## Visualiser les métriques
* Grafana : dashboard "Blackbox-exporter" (la liste des probes est générée dynamiquement)
* Grafana : explore. Les métriques sont préfixées de `probe_`
* `kubectl port-forward` sur le port 9115
----
<!-- .slide: style="text-align: left;"> -->
## Les métriques à disposition des clients
Les clients ont un blackbox_exporter à leur disposition. Il monitore en particulier les services qui lui sont exposés :
* grafana
* karma
Ils peuvent consulter les métriques sur leur Grafana et disposent également d'un dashboard "Blackbox Exporter".
---
<!-- .slide: style="text-align: left;"> -->
## Créer des alertes
* Documentation : [howto/blackbox-exporter/rules.md](https://git.corp.cloudwatt.com/caascad/monitoring/blob/master/documentation/howto/blackbox-exporter/rules.md)
* Principe : il s'agit de PrometheusRules. Il n'y a rien de spécifique pour Blackbox_exporter.
---
## The end
* mais on n'a pas parlé de l'upgrade de blackbox_exporter
* ni de la création de l'image que nous utilisons
* ni du rôle Ansible
* encore moins de tout ce qu'on pourrait améliorer pour nous faciliter la vie...
Des questions ?
{"type":"slide","slideOptions":{"transition":"slide","theme":"white"}}