
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.
Configurez votre haproxy.conf
en suivant le guide officiel.
Activez le paramètre use_prometheus
dans haproxy.d/conf.yaml
.
Redémarrez HAProxy pour activer l’endpoint Prometheus.
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 :
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
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
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
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.
La collecte de logs est désactivée par défaut dans l’Agent Datadog. Vous devez l’activer dans datadog.yaml
:
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.
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.
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