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
- targetLabel: "cc_prom_source"
replacement: "cloud-caascad"
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.
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.
-
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.
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
et vérifiez que votre cible est présente et up.
La cible est down¶
Rendez-vous sur l'onglet Explore
de Grafana, et choissisez la datasource Loki
.
Récupérez les logs de blackbox-exporter en filtrant sur le module et la cible.
Exemple avec module=https://karma.ocb-demo.caascad.com
et target=http_2xx
:
{app_kubernetes_io_instance="blackbox-exporter"}|="https://karma.ocb-demo.caascad.com"|="http_2xx"