HAProxy
Rapport de recherche Datadog : Bilan sur l'adoption de l'informatique sans serveur Rapport : Bilan sur l'adoption de l'informatique sans serveur

HAProxy

Agent Check Check de l'Agent

Supported OS: Linux Mac OS Windows

Dashboard HAProxy par défaut

Présentation

Enregistrez l’activité HAProxy dans Datadog pour :

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

Implémentation

Installation

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

Préparer HAProxy

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

Suivez les instructions ci-dessous pour installer et configurer ce check lorsque l’Agent est exécuté sur un host. Consultez la section Environnement conteneurisé pour en savoir plus sur les environnements conteneurisés.

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

Disponible à partir des versions > 6.0 de l’Agent

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: haproxy
       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.

Environnement conteneurisé

Consultez la documentation relative aux modèles d’intégration Autodiscovery pour découvrir comment appliquer les paramètres ci-dessous à un environnement conteneurisé.

Collecte de métriques
ParamètreValeur
<NOM_INTÉGRATION>haproxy
<CONFIG_INIT>vide ou {}
<CONFIG_INSTANCE>{"url": "https://%%host%%/admin?stats"}
Collecte de logs

Disponible à partir des versions > 6.0 de l’Agent

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

ParamètreValeur
<CONFIG_LOG>{"source": "haproxy", "service": "<NOM_SERVICE>"}

Validation

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

Données collectées

Métriques

haproxy.backend_hosts
(gauge)
Number of backend hosts.
Shown as host
haproxy.backend.bytes.in_rate
(gauge)
Rate of bytes in on backend hosts.
Shown as byte
haproxy.backend.bytes.out_rate
(gauge)
Rate of bytes out on backend hosts.
Shown as byte
haproxy.backend.connect.time
(gauge)
Average connect time over the last 1024 backend requests.
Shown as millisecond
haproxy.backend.denied.req_rate
(gauge)
Number of backend requests denied due to security concerns.
Shown as request
haproxy.backend.denied.resp_rate
(gauge)
Number of backend responses denied due to security concerns.
Shown as response
haproxy.backend.errors.con_rate
(gauge)
Rate of backend requests that encountered an error trying to connect to a backend server.
Shown as error
haproxy.backend.errors.resp_rate
(gauge)
Rate of backend responses aborted due to error.
Shown as error
haproxy.backend.queue.current
(gauge)
Number of backend requests without an assigned backend.
Shown as request
haproxy.backend.queue.time
(gauge)
Average queue time over the last 1024 backend requests.
Shown as millisecond
haproxy.backend.response.1xx
(gauge)
Backend HTTP responses with 1xx code.
Shown as response
haproxy.backend.response.2xx
(gauge)
Backend HTTP responses with 2xx code.
Shown as response
haproxy.backend.response.3xx
(gauge)
Backend HTTP responses with 3xx code.
Shown as response
haproxy.backend.response.4xx
(gauge)
Backend HTTP responses with 4xx code.
Shown as response
haproxy.backend.response.5xx
(gauge)
Backend HTTP responses with 5xx code.
Shown as response
haproxy.backend.response.other
(gauge)
Backend HTTP responses with other code (protocol error).
Shown as response
haproxy.backend.response.time
(gauge)
Average response time over the last 1024 backend requests (0 for TCP).
Shown as millisecond
haproxy.backend.requests.tot_rate
(gauge)
Rate of total number of backend HTTP requests.
Shown as request
haproxy.backend.session.current
(gauge)
Number of active backend sessions.
Shown as connection
haproxy.backend.session.limit
(gauge)
Configured backend session limit.
Shown as connection
haproxy.backend.session.pct
(gauge)
Percentage of sessions in use (backend.session.current/backend.session.limit * 100).
Shown as percent
haproxy.backend.session.rate
(gauge)
Number of backend sessions created per second.
Shown as connection
haproxy.backend.session.time
(gauge)
Average total session time over the last 1024 requests.
Shown as millisecond
haproxy.backend.uptime
(gauge)
Number of seconds since the last UP<->DOWN transition
Shown as second
haproxy.backend.warnings.redis_rate
(gauge)
Number of times a request was redispatched to another server.
Shown as error
haproxy.backend.warnings.retr_rate
(gauge)
Number of times a connection to a server was retried.
Shown as error
haproxy.count_per_status
(gauge)
Number of hosts by status (UP/DOWN/NOLB/MAINT).
Shown as host
haproxy.frontend.bytes.in_rate
(gauge)
Rate of bytes in on frontend hosts.
Shown as byte
haproxy.frontend.bytes.out_rate
(gauge)
Rate of bytes out on frontend hosts.
Shown as byte
haproxy.frontend.connections.rate
(gauge)
Number of connections per second.
Shown as connection
haproxy.frontend.connections.tot_rate
(gauge)
Rate of total number of frontend connections.
Shown as connection
haproxy.frontend.denied.req_rate
(gauge)
Number of frontend requests denied due to security concerns.
Shown as request
haproxy.frontend.denied.resp_rate
(gauge)
Number of frontend responses denied due to security concerns.
Shown as response
haproxy.frontend.errors.req_rate
(gauge)
Rate of frontend request errors.
Shown as error
haproxy.frontend.requests.intercepted
(gauge)
Number of intercepted frontend requests per second.
Shown as request
haproxy.frontend.requests.rate
(gauge)
Number of frontend HTTP requests per second.
Shown as request
haproxy.frontend.requests.tot_rate
(gauge)
Rate of total number of frontend HTTP requests.
Shown as request
haproxy.frontend.response.1xx
(gauge)
Frontend HTTP responses with 1xx code.
Shown as response
haproxy.frontend.response.2xx
(gauge)
Frontend HTTP responses with 2xx code.
Shown as response
haproxy.frontend.response.3xx
(gauge)
Frontend HTTP responses with 3xx code.
Shown as response
haproxy.frontend.response.4xx
(gauge)
Frontend HTTP responses with 4xx code.
Shown as response
haproxy.frontend.response.5xx
(gauge)
Frontend HTTP responses with 5xx code.
Shown as response
haproxy.frontend.response.other
(gauge)
Frontend HTTP responses with other code (protocol error).
Shown as response
haproxy.frontend.session.current
(gauge)
Number of active frontend sessions.
Shown as connection
haproxy.frontend.session.limit
(gauge)
Configured frontend session limit.
Shown as connection
haproxy.frontend.session.pct
(gauge)
Percentage of sessions in use (frontend.session.current/frontend.session.limit * 100).
Shown as percent
haproxy.frontend.session.rate
(gauge)
Number of frontend sessions created per second.
Shown as connection
haproxy.sticktable.used
(gauge)
Number of elements in the table.
Shown as item
haproxy.sticktable.size
(gauge)
Maximum number of elements the table can hold.
Shown as item

É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