Présentation
Apache APISIX est une passerelle API dynamique, haute performance et en temps réel dotée de fonctionnalités de gestion avancée du trafic (équilibrage de charge, source dynamique en amont, version Canary, disjoncteur, authentification, observabilité, etc.). Apache APISIX vous permet par exemple de gérer le trafic nord-sud habituel, ainsi que le trafic est-ouest entre les services. Cette technologie peut également être utilisée en tant que contrôleur Ingress Kubernetes.
Le plug-in Datadog/APISIX transmet ses métriques custom au serveur DogStatsD et est fourni avec l’Agent Datadog via la connexion UDP. DogStatsD est une implémentation du protocole StatsD. Ce composant recueille les métriques custom pour l’Agent Apache APISIX, les agrège au sein d’un unique point de données, puis envoie ce point au serveur Datadog configuré.
Liste des infrastructures
Suivez les instructions de configuration ci-dessous.
Dépannage de la solution Browser
- Si vous utilisez déjà Datadog et que vous avez installé l’Agent Datadog, assurez-vous que votre pare-feu autorise le port 8125/UDP. Vérifiez par exemple que l’Agent Apache APISIX parvient à atteindre le port 8125 de l’Agent Datadog. Si c’est bien le cas, passez directement à l’étape 3.
Pour en savoir plus sur l’installation de l’Agent Datadog, consultez la documentation relative à l’Agent.
Si vous débutez sur la plateforme Datadog :
- Commencez par créer un compte. Pour ce faire, rendez-vous sur le site Web de Datadog, puis cliquez sur le bouton Get Started Free.
- Générez une clé d’API.
Le plug-in Datadog/APISIX requiert uniquement le composant DogStatsD de datadog/agent
: en effet, le plug-in envoie de façon asynchrone des métriques au serveur DogStatsD, en respectant le protocole StatsD via le socket UDP standard. Pour cette raison, APISIX recommande d’utiliser l’image datadog/dogstatsd
autonome au lieu de la version complète de l’Agent. Cette image est extrêmement légère (seulement 11 Mo, contre 2,8 Go pour l’image datadog/agent
).
Pour exécuter l’image en tant que conteneur, procédez comme suit :
# récupérer la dernière image
$ docker pull datadog/dogstatsd:latest
# exécuter un conteneur détaché
$ docker run -d --name dogstatsd-agent -e DD_API_KEY=<Clé API obtenue à l'étape 2> -p 8125:8125/udp datadog/dogstatsd
Si vous utilisez Kubernetes dans votre environnement de production, vous pouvez déployer dogstatsd
en tant que Daemonset
ou Multi-Container Pod
en même temps que l’Agent Apache APISIX.
- L’exemple suivant présente la marche à suivre pour activer le plug-in Datadog pour une certaine route, en partant du principe que l’Agent
dogstatsd
est déjà en cours d’exécution.
# activer le plug-in pour une route spécifique
$ curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"plugins": {
"datadog": {}
},
"upstream": {
"type": "roundrobin",
"nodes": {
"127.0.0.1:1980": 1
}
},
"uri": "/hello"
}'
Toutes les requêtes transmises à l’URI d’endpoint /hello
génèrent alors les métriques indiquées ci-dessus, et les transmettent au serveur DogStatsD local de l’Agent Datadog.
- Pour désactiver le plug-in, supprimez la configuration JSON correspondante dans la configuration du plug-in. Cela désactive
datadog
. Les plug-ins APISIX sont rechargés à chaud, vous n’avez donc pas besoin de redémarrer APISIX.
# désactiver le plug-in pour une route
curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"uri": "/hello",
"plugins": {},
"upstream": {
"type": "roundrobin",
"nodes": {
"127.0.0.1:1980": 1
}
}
}'
- Consultez la documentation APISIX sur le plug-in Datadog (en anglais) pour obtenir des options de configuration supplémentaires.
Validation
Lancez la sous-commande status de l’Agent et cherchez apisix
dans la section Checks.
Real User Monitoring
Analyse d’entonnoirs
apisix.request.counter (count) | Number of requests received Shown as connection |
apisix.request.latency (gauge) | Total latency of the request response lifecycle, time taken to process the particular request. Shown as millisecond |
apisix.upstream.latency (gauge) | The latency between time taken from proxying the request to the upstream server till a response is received. Shown as millisecond |
apisix.apisix.latency (gauge) | The latency added by Apache APISIX, time taken by APISIX agent solely to process the request. Shown as millisecond |
apisix.ingress.size (gauge) | The body size of incoming request before forwarding it to upstream server. Shown as byte |
apisix.egress.size (gauge) | The body size of received response coming from the APISIX forwarded upstream server. Shown as byte |
Aide
Le check Apache APISIX n’inclut aucun événement.
Aide
Besoin d’aide ? Contactez l’assistance Datadog.
Pour aller plus loin