HAProxy

Supported OS Linux Mac OS Windows

Dashboard HAProxy par défaut

Présentation

Enregistrez l’activité HAProxy dans Datadog pour :

  • Visualiser les performances d’équilibrage de charge de HAProxy
  • Être informé lorsqu’un serveur tombe en panne
  • Corréler les performances de HAProxy avec le reste de vos applications

Configuration

Installation

Le check HAProxy est inclus avec le package de l’Agent Datadog : vous n’avez donc rien d’autre à installer sur votre serveur HAProxy.

Préparer HAProxy

Utiliser Prometheus

Pour configurer cette intégration, il est recommandé d’activer l’endpoint Prometheus sur HAProxy. Depuis la version 2 (ou la version Enterprise 1.9rc1), cet endpoint est intégré à HAProxy. Si vous utilisez une version antérieure, pensez à configurer l’exportateur Prometheus HAProxy, ou configurez l’ancienne intégration basée sur les sockets décrite dans la section suivante.

  1. Configurez votre haproxy.conf en suivant le guide officiel.

  2. Activez le paramètre use_prometheus dans haproxy.d/conf.yaml.

  3. Redémarrez HAProxy pour activer l’endpoint Prometheus.

  4. Redémarrez l’Agent.

Utiliser l’endpoint stats

Remarque : cette stratégie de configuration est donnée à titre de référence pour les utilisateurs des versions antérieures. Si vous configurez l’intégration pour la première fois, appliquez plutôt la configuration Prometheus décrite dans la section précédente.

L’Agent recueille des métriques via un endpoint stats :

  1. Configurez un endpoint dans votre fichier haproxy.conf :

      listen stats # Define a listen section called "stats"
      bind :9000 # Listen on localhost:9000
      mode http
      stats enable  # Enable stats page
      stats hide-version  # Hide HAProxy version
      stats realm Haproxy\ Statistics  # Title text for popup window
      stats uri /haproxy_stats  # Stats URI
      stats auth Username:Password  # Authentication credentials
    
  2. Redémarrez HAProxy pour activer l’endpoint stats.

Configuration

Host

Pour configurer ce check lorsque l’Agent est exécuté sur un host :

Modifiez le fichier haproxy.d/conf.yaml dans le dossier conf.d/ à la racine du répertoire de configuration de votre Agent pour commencer à recueillir vos métriques et logs HAProxy. Consultez le fichier d’exemple haproxy.d/conf.yam pour découvrir toutes les options de configuration disponibles.

Collecte de métriques
  1. Ajoutez ce bloc de configuration à votre fichier haproxy.d/conf.yaml pour commencer à recueillir vos métriques HAProxy :

    init_config:
    
    instances:
      ## @param url - string - required
      ## Haproxy URL to connect to gather metrics.
      ## Set the according <USERNAME> and <PASSWORD> or use directly a unix stats
      ## or admin socket: unix:///var/run/haproxy.sock
      #
      - url: http://localhost/admin?stats
    
  2. Redémarrez l’Agent.

Collecte de logs

Par défaut, Haproxy envoie des logs via UDP sur le port 514. L’Agent peut effectuer une écoute afin d’obtenir ces logs sur ce port. Toutefois, il est nécessaire de procéder à une élévation des privilèges pour toute association vers un numéro de port inférieur à 1024. Pour ce faire, suivez les instructions ci-dessous. Vous pouvez également choisir d’utiliser un autre port. Dans ce cas, ignorez l’étape 3.

  1. La collecte de logs est désactivée par défaut dans l’Agent Datadog. Vous devez l’activer dans datadog.yaml :

    logs_enabled: true
    
  2. Ajoutez ce blog de configuration à votre fichier haproxy.d/conf.yaml pour commencer à recueillir vos logs HAProxy ;

    logs:
      - type: udp
        port: 514
        service: <SERVICE_NAME>
        source: haproxy
    

    Modifiez la valeur du paramètre service et configurez-le pour votre environnement. Consultez le fichier d’exemple haproxy.d/conf.yaml pour découvrir toutes les options de configuration disponibles.

  3. Autorisez l’accès au port 514 à l’aide de la commande setcap :

    sudo setcap CAP_NET_BIND_SERVICE=+ep /opt/datadog-agent/bin/agent/agent
    

    Pour vérifier que tout fonctionne, exécutez la commande getcap :

    sudo getcap /opt/datadog-agent/bin/agent/agent
    

    Voici le résultat attendu :

    /opt/datadog-agent/bin/agent/agent = cap_net_bind_service+ep
    

    Remarque : exécutez cette commande setcap à chaque mise à niveau de l’Agent.

  4. Redémarrez l’Agent.

Docker

Pour configurer ce check lorsque l’Agent est exécuté sur un conteneur :

Collecte de métriques

Définissez les modèles d’intégration Autodiscovery en tant qu’étiquettes Docker sur votre conteneur d’application :

LABEL "com.datadoghq.ad.check_names"='["haproxy"]'
LABEL "com.datadoghq.ad.init_configs"='[{}]'
LABEL "com.datadoghq.ad.instances"='[{"url": "https://%%host%%/admin?stats"}]'
Collecte de logs

La collecte des logs est désactivée par défaut dans l’Agent Datadog. Pour l’activer, consultez la section Collecte de logs avec Docker.

Définissez ensuite des intégrations de logs en tant qu’étiquettes Docker :

LABEL "com.datadoghq.ad.logs"='[{"source":"haproxy","service":"<NOM_SERVICE>"}]'

Kubernetes

Pour configurer ce check lorsque l’Agent est exécuté sur Kubernetes :

Collecte de métriques

Définissez des modèles d’intégration Autodiscovery en tant qu’annotations de pod sur votre conteneur d’application. Cette configuration peut également être réalisée avec un fichier, une configmap ou une paire key/value.

apiVersion: v1
kind: Pod
metadata:
  name: haproxy
  annotations:
    ad.datadoghq.com/haproxy.check_names: '["haproxy"]'
    ad.datadoghq.com/haproxy.init_configs: '[{}]'
    ad.datadoghq.com/haproxy.instances: |
      [
        {
          "url": "https://%%host%%/admin?stats"
        }
      ]      
spec:
  containers:
    - name: haproxy
Collecte de logs

Disponible à partir des versions > 6.0 de l’Agent

La collecte des logs est désactivée par défaut dans l’Agent Datadog. Pour l’activer, consultez la section Collecte de logs avec Kubernetes.

Définissez ensuite des intégrations de logs en tant qu’annotations de pod. Cette configuration peut également être réalisée avec un fichier, une configmap ou une paire key/value.

apiVersion: v1
kind: Pod
metadata:
  name: haproxy
  annotations:
    ad.datadoghq.com/mongo.logs: '[{"source":"haproxy","service":"<NOM_SERVICE>"}]'
spec:
  containers:
    - name: haproxy

ECS

Pour configurer ce check lorsque l’Agent est exécuté sur ECS :

Collecte de métriques

Définissez les modèles d’intégration Autodiscovery en tant qu’étiquettes Docker sur votre conteneur d’application :

{
  "containerDefinitions": [{
    "name": "haproxy",
    "image": "haproxy:latest",
    "dockerLabels": {
      "com.datadoghq.ad.check_names": "[\"haproxy\"]",
      "com.datadoghq.ad.init_configs": "[{}]",
      "com.datadoghq.ad.instances": "[{\"url\": \"https://%%host%%/admin?stats\"}]"
    }
  }]
}
Collecte de logs

Disponible à partir des versions > 6.0 de l’Agent

La collecte des logs est désactivée par défaut dans l’Agent Datadog. Pour l’activer, consultez la section Collecte de logs avec ECS.

Définissez ensuite des [intégrations de logs][5] en tant qu’étiquettes Docker :

{
  "containerDefinitions": [{
    "name": "haproxy",
    "image": "haproxy:latest",
    "dockerLabels": {
      "com.datadoghq.ad.logs": "[{\"source\":\"haproxy\",\"service\":\"<SERVICE_NAME>\"}]"
    }
  }]
}

Validation

Lancez la sous-commande status de l’Agent et cherchez haproxy dans la section Checks.

Données collectées

Métriques

Événements

Le check HAProxy n’inclut aucun événement.

Checks de service

haproxy.backend_up :
Convertit la page de statut HAProxy en checks de service. Renvoie CRITICAL pour un service donné si HAProxy le signale comme down. Renvoie OK pour les états maint, ok et tout autre état.

Dépannage

Besoin d’aide ? Contactez l’assistance Datadog.

Pour aller plus loin

PREVIEWING: may/embedded-workflows