Aller au contenu

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.