Este check monitoriza TorchServe a través del Datadog Agent .
Configuración
Sigue las siguientes instrucciones para instalar y configurar este check para un Agent que se ejecuta en un host. Para entornos de contenedores, consulta las Plantillas de integración de Autodiscovery para obtener orientación sobre la aplicación de estas instrucciones.
Instalación
A partir del Agent versión 7.47.0, el check de TorchServe está incluido en el paquete del Datadog Agent. No es necesaria ninguna instalación adicional en tu servidor.
Este check utiliza OpenMetrics para recopilar métricas desde el endepoint de OpenMetrics que TorchServe puede exponer, lo que requiere Python 3.
Requisitos previos
El check de TorchServe recopila las métricas y los datos de rendimiento de TorchServe utilizando tres endpoints diferentes:
La interferencia de la API para recopilar el estado de mantenimiento general de tu instancia de TorchServe.
La API de administración para recopilar métricas sobre los distintos modelos que estás ejecutando.
Este archivo de configuración expone los tres endpoints diferentes que puede utilizar la integración para monitorizar tu instancia.
Endpoint de OpenMetrics
Para activar el endpoint de Prometheus, necesitas configurar dos opciones:
metrics_address: Dirección de enlace a la API de métricas. En forma predeterminada, es http://127.0.0.1:8082
metrics_mode: TorchServe admite dos modos de métricas: log y prometheus. En forma predeterminada, es log. Tienes que configurarlo en prometheus para recopilar métricas desde este endpoint.
En este caso, el endpoint de OpenMetrics se expone en esta URL: http://<TORCHSERVE_ADDRESS>:8082/metrics.
Configuración
Estos tres endpoints diferentes pueden monitorizarse en forma independiente y deben configurarse por separado en el archivo de configuración, una API por instancia. Consulta el ejemplo de torchserve.d/conf.yaml para ver todas las opciones disponibles de configuración.
Configurar el endpoint de OpenMetrics
Las opciones de configuración para el endpoint de OpenMetrics pueden estar en el archivo de configuración en la sección TorchServe OpenMetrics endpoint configuration. La configuración mínima sólo requiere la opción openmetrics_endpoint:
TorchServe permite que el código personalizado de servicio emita métricas que están disponibles en el metrics_mode configurado. Puedes configurar esta integración para recopilar estas métricas utilizando la opción extra_metrics. Estas métricas tendrán el prefijo torchserve.openmetrics, como cualquier otra métrica procedente de este endpoint.
Estas métricas personalizadas de TorchServe se consideran estándar en Datadog.
Configurar la API de inferencia
Esta integración se basa en la API de inferencia para obtener el estado general de tu instancia de TorchServe. Las opciones de configuración para la API de inferencia pueden estar en el archivo de configuración en la sección TorchServe Inference API endpoint configuration. La configuración mínima sólo requiere la opción inference_api_url:
Esta integración aprovecha el endpoint de Ping para recopilar el estado de mantenimiento general de tu servidor de TorchServe.
Configurar la API de administración
Puedes recopilar métricas relacionadas con los modelos que se están ejecutando actualmente en tu servidor de TorchServe utilizando la API de administración. Las opciones de configuración para la API de inferencia pueden estar en el archivo de configuración en la sección TorchServe Management API endpoint configuration. La configuración mínima sólo requiere la opción management_api_url:
En forma predeterminada, la integración recopila datos de cada uno de los modelos, hasta 100 modelos. Esto puede modificarse mediante las opciones limit, include y exclude. Por ejemplo:
Esta configuración recopila métricas por cada nombre de modelo que no coincida con la expresión regular test.*, hasta 100 modelos.
Puedes utilizar las opciones `include` y `exclude` en la misma configuración. Los filtros `exclude` se aplican después de los `include`.
En forma predeterminada, la integración recupera la lista completa de los modelos cada vez que se ejecuta el check. Puedes almacenar en caché este lista utilizando la opción interval para aumentar el rendimiento de este check.
El uso de la opción `interval` también puede retrasar algunas métricas y eventos.
Configuración completa
Este ejemplo demuestra la configuración completa aprovechando las tres API diferentes descritas en las secciones anteriores:
init_config:...instances:- openmetrics_endpoint:http://<TORCHSERVE_ADDRESS>:8082/metrics# Also collect your own TorchServe metricsextra_metrics:- my_custom_torchserve_metric- inference_api_url:http://<TORCHSERVE_ADDRESS>:8080- management_api_url:http://<TORCHSERVE_ADDRESS>:8081# Include all the model names that match this regex include:- my_models.*# But exclude all the ones that finish with `-test`exclude:- .*-test # Refresh the list of models only every hourinterval:3600
Este ejemplo demuestra la configuración completa aprovechando las tres API diferentes descritas en las secciones anteriores como una etiqueta de Docker en docker-compose.yml:
Este ejemplo demuestra la configuración completa aprovechando las tres API diferentes descritas en las secciones anteriores como anotaciones de Kubernetes en tus pods de Torchserve:
Total queue latency in Microseconds. Shown as microsecond
torchserve.openmetrics.queue.time (gauge)
Time spent by a job in request queue in Milliseconds. Shown as millisecond
torchserve.openmetrics.requests.2xx.count (count)
Total number of requests with response in 200-300 status code range. Shown as request
torchserve.openmetrics.requests.4xx.count (count)
Total number of requests with response in 400-500 status code range. Shown as request
torchserve.openmetrics.requests.5xx.count (count)
Total number of requests with response status code above 500. Shown as request
torchserve.openmetrics.worker.load_time (gauge)
Time taken by worker to load model in Milliseconds. Shown as millisecond
torchserve.openmetrics.worker.thread_time (gauge)
Time spent in worker thread excluding backend response time in Milliseconds. Shown as millisecond
Se colocan prefijos en las métricas mediante la API de la que proceden:
torchserve.openmetrics.* para métricas procedentes del endpoint de OpenMetrics.
torchserve.inference_api.* para métricas procedentes de la API de inferencia.
torchserve.management_api.* para métricas procedentes de la API de administración.
Eventos
La integración de TorchServe incluye tres eventos utilizando la API de administración:
torchserve.management_api.model_added: Este evento se activa cuando se añade un nuevo modelo.
torchserve.management_api.model_removed: Este evento se activa cuando se ha eliminado un modelo.
torchserve.management_api.default_version_changed: Este evento se activa cuando se ha configurado una versión en forma predeterminada para un modelo determinado.
Puedes desactivar los eventos configurando la opción `submit_events` como `false` en tu archivo de configuración.
Checks de servicio
torchserve.openmetrics.health Returns CRITICAL if the Agent is unable to connect to the OpenMetrics endpoint, otherwise returns OK. Statuses: ok, critical
torchserve.inference_api.health Returns CRITICAL if the Agent is unable to connect to the Inference API endpoint or if it is unhealthy, otherwise returns OK. Statuses: ok, critical
torchserve.management_api.health Returns CRITICAL if the Agent is unable to connect to the Management API endpoint, otherwise returns OK. Statuses: ok, critical
Logs
La integración de TorchServe puede recopilar logs del servicio de TorchServe y reenviarlos a Datadog.
La recopilación de logs está desactivada en forma predeterminada en el Datadog Agent. Actívala en tu archivo datadog.yaml:
logs_enabled:true
Quita el comentario y edita el bloque de configuración de logs en tu archivo torchserve.d/conf.yaml. He aquí un ejemplo:
También puedes recopilar logs del archivo `access_log.log`. Sin embargo, estos logs están incluidos en el archivo `ts_log.log`, lo que te lleva a duplicar logs en Datadog si configuras ambos archivos.