Apache APISIX

Supported OS Linux Windows Mac OS

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é.

Formule et utilisation

Liste des infrastructures

Suivez les instructions de configuration ci-dessous.

Dépannage de la solution Browser

  1. 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.

  1. Si vous débutez sur la plateforme Datadog :

    1. 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.
    2. Générez une clé d’API. Générer une clé d’API
  2. 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.

  1. 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.

  1. 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
    }
  }
}'
  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