Utiliser une Blackbox-Exporter¶
Ajouter une nouvelle target (cible)¶
ServiceMonitor¶
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
labels:
app.kubernetes.io/instance: blackbox-exporter
caascad.com/prometheus-monitor: caascad
name: blackbox-exporter-OVERRIDEME # Exemple blackbox-exporter-Grafana
spec:
endpoints:
- interval: 60s
params:
module:
- OVERRIDEME # see the available modules below : Example http_2xx
target:
- OVERRIDEME # target to check : Example https://grafana.ZONE_NAME.caascad.com
path: /probe
port: http
relabelings:
- sourceLabels:
- __param_target
- __param_module
separator: /
targetLabel: target
- sourceLabels:
- __param_target
- __param_module
separator: /
targetLabel: instance
- sourceLabels:
- __param_module
targetLabel: module
metricRelabelings:
- regex: 'pod'
action: labeldrop
scheme: http
scrapeTimeout: 60s
jobLabel: blackbox-exporter
namespaceSelector:
matchNames:
- caascad-monitoring
selector:
matchLabels:
app.kubernetes.io/instance: blackbox-exporter
app.kubernetes.io/name: prometheus-blackbox-exporter
Attention
Le contenu de .spec.endpoints[].params.target[]
est de type tableau. Cependant, vous ne devez y placer qu'une seule URL. Toute autre URL sera ignorée.
Attention
Dans .spec.endpoints[]
, le paramètre .scrapeTimeout
ne peut pas être plus grand que le paramètre .interval
.
Modules disponibles¶
Un module est une liste de contrôles qui seront effectués sur une target.
Modules déjà activés dans Blackbox-Exporter :
-
icmp_ckeck
Permet de tester le ping sur un service.
-
smtp_check
Permet de tester un serveur smtp en faisant une liste de commandes et en vérifiant la réponse.
- expect: "^220 ([^ ]+) ESMTP (.+)$" - send: "EHLO ProberCheck\r" - expect: "^250-STARTTLS" - send: "STARTTLS\r" - expect: "^220" - starttls: true - send: "EHLO ProberCheck\r" - expect: "^250-AUTH" - send: "QUIT\r"
-
http_2xx
Envoie une requête http get sur le service et vérifie que le code de retour est 200.
-
http_2xx_ssl
Envoie une requête http get sur le service et vérifie que le code de retour est 200 et que ssl est présent.
-
http_2xx_skip_tls_verify
Envoie une requête http get sur le service et vérifie que le code de retour est 200 en ignorant la vérification du certificat TLS.
-
ssh_banner
Envoie une connexion SSH et vérifie la présence de la banner en retour.
-
tcp_connect
Utilise le protocole tcp sur un port specifique.
-
dns_udp
Utilise le protocole udp et vérifie le champ A.
Le resolved_name est
karma.<cluster_name>.caascad.com
. -
dns_tcp
Utilise le protocole tcp.
Le resolved_name est
karma.<cluster_name>.caascad.com
. -
dns_soa
Vérifie le champ SOA.
Le resolved_name est
karma.<cluster_name>.caascad.com
.
Note
Si vous souhaitez utiliser d'autres modules, contactez le support Caascad.
La configuration complète est disponible ici :
kubectl get cm -n caascad-monitoring -o yaml caascad-blackbox-exporter
Découvrez les différentes possibilités offertes par Blackbox-Exporter : Configuration
Deployer le ServiceMonitor¶
Déployez simplement votre ServiceMonitor avec kubectl
(comme habituellement).
Prometheus-operator effectue une découverte automatique des ServiceMonitors and PodMonitors et les détectera rapidement.
Il obtiendra alors les informations dont il a besoin auprès du ServiceMonitor ou PodMonitor.
Il obtiendra plus d'informations du Service ou du Pod que vous avez sélectionné avec votre définition du monitor.
Et il régénérera la configuration de Prometheus. Tout cela est automatique.
Ajouter des entrées DNS spécifiques¶
Il est possible d'ajouter des entrés DNS spécifiques dans blackbox-exporter en utilisant la fonctionnalité HostAliases.
Note
Si vous souhaitez utiliser cette fonctionnalité, contactez le support Caascad.
Troubleshooting¶
Vérifier cible (target) Prometheus¶
Vous pouvez utiliser un port-forward
sur Prometheus :
kubectl -n caascad-monitoring port-forward svc/caascad-prometheus 9090:9090 &
Allez dans Status/Targets
afin de vérifier si le endpoint de la cible (target) est up (recherchez le nom du servicemonitor), et consultez le message d'erreur si la cible est down.
Vérifier depuis Grafana¶
Allez sur https://grafana.ZONE_NAME.caascad.com/
Selectionnez le dashboard Blackbox-Exporter
, choisissez la datasource Thanos-app et vérifiez que votre cible est présente et up.
La sonde est en échec (probe_success=0)¶
Faites un port-forward sur Blackbox-Exporter :
kubectl -n caascad-monitoring port-forward \
svc/caascad-blackbox-exporter \
9115:9115
Faites une requête http en spécifiant les paramètres suivants :
- target
- module
- debug
Exemple avec target=https://karma.ocb-demo.caascad.com
et module=http_2xx
:
http://localhost:9115/probe?target=https://karma.ocb-demo.caascad.com&module=http_2xx&debug=true
Cette requête renverra des informations de debug pour cette sonde.