Apache APISIX

Supported OS

Información general

Apache APISIX es una pasarela API dinámica en tiempo real, de alto rendimiento, que proporciona abundantes funciones de gestión de tráfico como balanceo de carga, upstream dinámico, lanzamientos de tipo canary, ruptura de circuitos, autenticación, observabilidad y más. Por ejemplo, utiliza Apache APISIX para gestionar el tráfico tradicional norte-sur, así como el tráfico este-oeste entre servicios. También se puede utilizar como controlador de entrada en Kubernetes.

El complemento APISIX-Datadog envía sus métricas personalizadas al servidor DogStatsD y se incluye con el Datadog Agent en la conexión UDP. DogStatsD es una implementación del protocolo StatsD, que recopila métricas personalizadas del Agent Apache APISIX, las agrega en un único punto de datos y las envía al servidor Datadog configurado.

Configuración

Instalación

Sigue las siguientes instrucciones de configuración.

Configuración

  1. Si ya utilizas Datadog y tienes instalado el Datadog Agent, asegúrate de que el puerto 8125/UDP está autorizado en tu cortafuegos. Por ejemplo, el Agent Apache APISIX puede acceder al puerto 8125 del Datadog Agent. Si ya tienes esto configurado, puedes pasar directamente al paso 3.

Para obtener más información sobre cómo instalar el Datadog Agent, consulta la documentación del Agent.

  1. Si recién empiezas a utilizar Datadog:

    1. Primero, crea una cuenta visitando el sitio web de Datadog y haz clic en el botón Get Started Free (Empieza a utilizarlo gratis).
    2. Genera una clave de API. Generar una clave de API
  2. El complemento APISIX-Datadog sólo requiere el componente DogStatsD de datadog/agent ya que el complemento envía métricas de forma asíncrona al servidor DogStatsD siguiendo el protocolo statsd mediante un socket UDP estándar. Por esta razón, APISIX recomienda utilizar la imagen independiente datadog/dogstatsd, en lugar de la imagen completa del Agent, ya que es extremadamente ligera (sólo ~11 MB de tamaño) en comparación con los ~2,8GB de la imagen datadog/agent.

Para ejecutarlo como contenedor:

# extrae la última imagen
$ docker pull datadog/dogstatsd:latest
# ejecuta un contenedor separado
$ docker run -d --name dogstatsd-agent -e DD_API_KEY=<Your API Key from step 2> -p 8125:8125/udp  datadog/dogstatsd

Si utilizas Kubernetes en tu entorno de producción, puedes desplegar dogstatsd como Daemonset o como Multi-Container Pod, junto con el Agent Apache APISIX.

  1. El siguiente es un ejemplo de cómo activar el complemento Datadog para una ruta específica. Esto supone que el Agent dogstatsd ya está en funcionamiento.
# habilita el complemento para una ruta específica
$ 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"
}'

Ahora, cualquier solicitud al URI del endpoint /hello generará las métricas anteriores y las enviará al servidor local DogStatsD del Datadog Agent.

  1. Para desactivar el complemento, elimina la configuración JSON correspondiente en la configuración del complemento para deshabilitar datadog. Los complementos APISIX se recargan en caliente, por lo que no es necesario reiniciar APISIX.
# deshabilita el complemento para una ruta
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. Para conocer otras opciones personalizadas de configuración, consulta la documentación del complemento Datadog.

Validación

Ejecuta el subcomando de estado del Agent y busca apisix en la sección Checks.

Datos recopilados

Métricas

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

Eventos

El check de Apache APISIX no incluye eventos.

Solucionar problemas

¿Necesitas ayuda? Ponte en contacto con el servicio de asistencia de Datadog.

Referencias adicionales