L'exportateur de boîte noire permet de sonder les points de terminaison via HTTP, HTTPS, DNS, TCP, ICMP et gRPC.
Téléchargez le binaire le plus approprié depuis l'onglet versions
Alors:
./blackbox_exporter
Remarque : vous souhaiterez peut-être activer IPv6 dans la configuration de votre Docker.
docker run --rm
-p 9115/tcp
--name blackbox_exporter
-v $(pwd):/config
quay.io/prometheus/blackbox-exporter:latest --config.file=/config/blackbox.yml
La visite de http://localhost:9115/probe?target=google.com&module=http_2xx renverra des métriques pour une sonde HTTP sur google.com. La probe_success
indique si la sonde a réussi. L'ajout d'un paramètre debug=true
renverra des informations de débogage pour cette sonde.
Les métriques concernant le fonctionnement de l'exportateur lui-même sont disponibles sur le point final http://localhost:9115/metrics.
Blackbox Exporter prend en charge TLS et l'authentification de base. Cela permet un meilleur contrôle des différents points de terminaison HTTP.
Pour utiliser TLS et/ou l'authentification de base, vous devez transmettre un fichier de configuration à l'aide du paramètre --web.config.file
. Le format du fichier est décrit dans le référentiel exportateur-toolkit.
Notez que les paramètres TLS et d'authentification de base affectent tous les points de terminaison HTTP : /metrics pour le scraping, /probe pour le sondage et l'interface utilisateur Web.
make
Après une build locale réussie :
docker build -t blackbox_exporter .
L'exportateur Blackbox est configuré via un fichier de configuration et des indicateurs de ligne de commande (tels que le fichier de configuration à charger, le port à écouter, ainsi que le format et le niveau de journalisation).
L'exportateur Blackbox peut recharger son fichier de configuration au moment de l'exécution. Si la nouvelle configuration n'est pas bien formée, les modifications ne seront pas appliquées. Un rechargement de configuration est déclenché par l'envoi d'un SIGHUP
au processus d'exportateur Blackbox ou par l'envoi d'une requête HTTP POST au point de terminaison /-/reload
.
Pour afficher tous les indicateurs de ligne de commande disponibles, exécutez ./blackbox_exporter -h
.
Pour spécifier le fichier de configuration à charger, utilisez l'indicateur --config.file
.
De plus, un exemple de configuration est également disponible.
HTTP, HTTPS (via le sondeur http
), DNS, socket TCP, ICMP et gRPC (voir section autorisations) sont actuellement pris en charge. Des modules supplémentaires peuvent être définis pour répondre à vos besoins.
Le délai d'expiration de chaque sonde est automatiquement déterminé à partir du scrape_timeout
dans la configuration Prometheus, légèrement réduit pour tenir compte des retards du réseau. Cela peut être encore limité par le timeout
dans le fichier de configuration de l'exportateur Blackbox. Si aucun des deux n'est spécifié, la valeur par défaut est de 120 secondes.
L'exportateur Blackbox implémente le modèle d'exportateur multi-cible, nous vous conseillons donc de lire le guide Comprendre et utiliser le modèle d'exportateur multi-cible pour avoir une idée générale de la configuration.
L'exportateur de boîte noire doit recevoir la cible en tant que paramètre, cela peut être fait avec un réétiquetage.
Exemple de configuration :
scrape_configs :
- job_name : ' blackbox '
metrics_path : /probe
params :
module : [http_2xx] # Look for a HTTP 200 response.
static_configs :
- targets :
- http://prometheus.io # Target to probe with http.
- https://prometheus.io # Target to probe with https.
- http://example.com:8080 # Target to probe with http on port 8080.
relabel_configs :
- source_labels : [__address__]
target_label : __param_target
- source_labels : [__param_target]
target_label : instance
- target_label : __address__
replacement : 127.0.0.1:9115 # The blackbox exporter's real hostname:port.
- job_name : ' blackbox_exporter ' # collect blackbox exporter's operational metrics.
static_configs :
- targets : ['127.0.0.1:9115']
Les sondes HTTP peuvent accepter un paramètre hostname
supplémentaire qui définira l'en-tête Host
et le SNI TLS. Cela peut être particulièrement utile avec dns_sd_config
:
scrape_configs :
- job_name : blackbox_all
metrics_path : /probe
params :
module : [ http_2xx ] # Look for a HTTP 200 response.
dns_sd_configs :
- names :
- example.com
- prometheus.io
type : A
port : 443
relabel_configs :
- source_labels : [__address__]
target_label : __param_target
replacement : https://$1/ # Make probe URL be like https://1.2.3.4:443/
- source_labels : [__param_target]
target_label : instance
- target_label : __address__
replacement : 127.0.0.1:9115 # The blackbox exporter's real hostname:port.
- source_labels : [__meta_dns_name]
target_label : __param_hostname # Make domain name become 'Host' header for probe requests
- source_labels : [__meta_dns_name]
target_label : vhost # and store it in 'vhost' label
La sonde ICMP nécessite des privilèges élevés pour fonctionner :
net.ipv4.ping_group_range
, la capacité CAP_NET_RAW
ou l'utilisateur root est requis.net.ipv4.ping_group_range
par défaut dans /etc/sysctl.conf
ou similaire. Sinon, vous pouvez définir net.ipv4.ping_group_range = 0 2147483647
pour permettre à tout utilisateur d'utiliser le ping.setcap cap_net_raw+ep blackbox_exporter