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
- 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.
Si recién empiezas a utilizar Datadog:
- Primero, crea una cuenta visitando el sitio web de Datadog y haz clic en el botón Get Started Free (Empieza a utilizarlo gratis).
- Genera una clave de API.
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.
- 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.
- 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
}
}
}'
- 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