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é.
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.
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 routecurl 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
}
}
}'