Complemento StatsD

StatsD es un protocolo que envía métricas y un daemon para la agregación de datos métricos. Con la configuración del complemento StatsD del agente de Monitoring, haces que el agente funcione como un daemon StatsD que escribe métricas en Monitoring.

El uso del complemento StatsD con su configuración predeterminada es la forma más fácil de incluir tus métricas personalizadas en Monitoring. El complemento StatsD solo está disponible en el agente Stackdriver Monitoring de Linux.

El agente de Monitoring también puede exportar otras métricas collectd como métricas personalizadas, pero no hay una configuración predeterminada simple. Consulta las Métricas personalizadas del agente para obtener más detalles.

Investigación

Monitoring no detecta automáticamente StatsD. Para usar las métricas de StatsD, configura el complemento StatsD como se describe en la siguiente sección.

Configura el complemento StatsD

Requisitos previos

El complemento StatsD requiere la versión del agente de Monitoring 5.5.2-356 o posterior. Para actualizar el agente, consulta Actualización del agente.

Habilita el complemento

Haz lo siguiente en tu instancia de VM compatible que ejecuta Linux:

  1. Descarga statsd.conf y colócalo en /opt/stackdriver/collectd/etc/collectd.d/. Para ello usa el siguiente comando:

    (cd /opt/stackdriver/collectd/etc/collectd.d/ && sudo curl -O https://raw.githubusercontent.com/Stackdriver/stackdriver-agent-service-configs/master/etc/collectd.d/statsd.conf)
    
  2. El archivo de configuración predeterminado le indica al agente que acepte las métricas StatsD en el puerto StatsD predeterminado, 8125.

    Si deseas enviar algunas métricas a tu propio daemon StatsD y otras métricas al daemon StatsD del agente, cambia la configuración del puerto en el archivo de configuración.

  3. Reinicia el agente de Monitoring a fin de que detecte la configuración de StatsD. Para ello, ejecuta el siguiente comando:

    sudo service stackdriver-agent restart
    

Para obtener más información sobre otras opciones de configuración del complemento StatsD, consulta Complemento: StatsD en collectd.org.

Mapeo predeterminado a métricas personalizadas

Para comenzar rápidamente, el complemento StatsD del agente viene con una configuración collectd predeterminada que se mapea a las métricas de StatsD a las métricas personalizadas de Stackdriver:

  • Todas las métricas del complemento StatsD tienen statsd en el componente collectd plugin.

  • Cada tipo de métrica StatsD, retenido en el componente collectd type, tiene un nombre de tipo de métrica personalizado correspondiente.

  • El nombre de la métrica StatsD, retenido en el componente collectd type_instance, se almacena como el valor de una etiqueta llamada metric.

    El valor de la etiqueta metric es diferente para el tipo de métrica Timer: Incluye tanto el nombre de la métrica como el nombre del contador: Promedio, superior, inferior, suma, percentil-50 y percentil-95.

Por ejemplo, la siguiente tabla muestra cómo los tipos de métrica StatsD admitidos y el nombre de la métrica se mapea a métricas personalizadas de Monitoring:

Tipo de StatsD Nombre de StatsD Tipo de métrica de Stackdriver Categoría de métrica Tipo de valor Etiqueta(s) de métrica
Counter my.counter custom.googleapis.com/statsd/derive Acumulativo Int64 metric:my.counter
Gauge my.gauge custom.googleapis.com/statsd/gauge Gauge Doble metric:my.gauge
Set my.set custom.googleapis.com/statsd/objects Gauge Doble metric:my.set
Timer1 my.timer custom.googleapis.com/statsd/latency Gauge Doble metric:my.timer-average
(igual) (igual) (igual) metric:my.timer-upper
(igual) (igual) (igual) metric:my.timer-lower
(igual) (igual) (igual) metric:my.timer-sum
(igual) (igual) (igual) metric:my.timer-percentile-50
(igual) (igual) (igual) metric:my.timer-percentile-95
custom.googleapis.com/statsd/gauge Gauge (igual) metric:my.timer-count

Notas:
1 Hay una secuencia entrante de métricas del temporizador statsd con el mismo nombre. El agente agrega las métricas del temporizador StatsD y exporta datos de resumen a 7 series temporales diferentes.

Para obtener más información sobre los tipos de StatsD, consulta la especificación StatsD.

Personaliza las métricas exportadas

La configuración StatsD predeterminada está diseñada para que comiences rápidamente. Esta sección te ayuda a personalizar la configuración para satisfacer necesidades más complejas.

Debes estar familiarizado con las métricas personalizadas de Stackdriver. Para una introducción a las métricas de Stackdriver, consulta Métricas, series temporales y recursos. Para obtener más detalles sobre las métricas personalizadas, consulta Métricas personalizadas.

Puedes personalizar los siguientes elementos:

  • Puedes cambiar los valores asignados a la etiqueta metric predeterminada. El uso de más valores de etiqueta da como resultado más series temporales en tu métrica personalizada. Usar menos valores de etiqueta da como resultado menos series temporales.

  • Puedes cambiar los tipos de métricas personalizadas. No tienes que usar los tipos predefinidos que se proporcionan en la configuración predeterminada. Por ejemplo, podrías identificar las métricas con un nombre determinado y usar un tipo de métrica personalizado diferente para ellas.

  • Si cambias los tipos de métricas personalizadas, también puedes cambiar las etiquetas asociadas con cada tipo. La configuración predeterminada tiene una sola etiqueta, pero puedes agregar más etiquetas o cambiar la clave de la etiqueta.

Si cambias los tipos de métricas, debes definir tus tipos de métricas personalizadas nuevos en la API de supervisión. Para obtener más información, consulta la siguiente sección, Diseño de un tipo de métrica personalizado.

Ejemplo

Supongamos que usas StatsD para supervisar una aplicación que consta de dos servicios, my_service_a y my_service_b. Para cada servicio, deseas exportar a Monitoring una métrica de contador que representa el número de solicitudes fallidas. No deseas usar los tipos de métrica StatsD predeterminados.

Métricas collectd entrantes

Antes de definir tus propios tipos de métricas personalizadas, es importante entender la estructura de una métrica collectd y cómo una métrica StatsD se mapea de forma predeterminada en métricas personalizadas.

Las métricas collectd, incluidas las métricas de StatsD, abarcan los siguientes componentes:

    Host, Plugin, Plugin-instance, Type, Type-instance

En este ejemplo, las métricas StatsD que deseas exportar tienen los siguientes identificadores en collectd:

Componente Valor(es) esperado(s)
Host cualquiera
Complemento statsd
Instancia de complemento unset1
Tipo derive2
Tipo de instancia [SERVICE_NAME].GET.[CODE]3
[VALUE] cualquier valor4

Notas:
1 El complemento StatsD actualmente deja este componente vacío.
2 Una métrica StatsD Counter se mapea al tipo derive collectd. 3 Por ejemplo, una instancia de tipo podría ser my_service_a.GET.500. 4 [VALOR] suele ser una marca de tiempo y un número de doble precisión.

La siguiente tabla muestra cómo esta métrica se mapea de forma predeterminada:

Tipo de StatsD Nombre de StatsD Tipo de métrica de Stackdriver Categoría de métrica Tipo de valor Etiquetas de métrica
Counter my_service_a.GET.500 custom.googleapis.com/statsd/derive Acumulativo Int64 metric:my_servce_a.GET.500
Counter my_service_b.GET.403 custom.googleapis.com/statsd/derive Acumulativo Int64 metric:my_servce_b.GET.403

El mapeo predeterminado puede presentar algunas dificultades para ti:

  • Esta métrica de contador en particular ([SERVICE_NAME].GET.[CODE]) está en el mismo tipo de métrica personalizada que todas las demás métricas de contador. No puedes obtener fácilmente solo los datos de esta métrica, ya que Stackdriver actualmente no admite búsquedas de expresiones regulares en etiquetas.

  • No puedes obtener fácilmente datos para servicios individuales o códigos de respuesta individuales en tus datos. Por ejemplo, no puedes obtener fácilmente el número total de errores (de todo tipo) que ocurrieron en my_service_a.

  • La configuración predeterminada exporta todas las métricas StatsD a Stackdriver, lo que podría ser costoso si solo estás interesado en ciertas métricas.

Diseña un tipo de métrica personalizado

Para una discusión completa sobre la creación de tipos de métricas personalizados, consulta Crea métricas personalizadas.

El siguiente tipo de métrica personalizado es una opción razonable para los datos en este ejemplo, ya que solo contiene la métrica StatsD en la que estás interesado y porque su elección de etiquetas ayuda a organizar mejor los datos:

  • Nombre: custom.googleapis.com/http/request_errors
  • Etiquetas:
    • service_name (STRING): El nombre del servicio.
    • response_code (INT64): El código de respuesta HTTP.
  • Tipo: ACUMULATIVO
  • Tipo: INT64

La siguiente tabla muestra el mapeo deseado de StatsD a Stackdriver:

Tipo de StatsD Nombre de StatsD Tipo de métrica de Stackdriver Categoría de métrica Tipo de valor Etiquetas de métrica
Counter my_service_a.GET.500 custom.googleapis.com/http/request_errors Acumulativo Int64 service_name:my_service_a, response_code:500
Counter my_service_b.GET.403 custom.googleapis.com/http/request_errors Acumulativo Int64 service_name:my_service_b, response_code:403

Una vez que hayas diseñado el tipo de métrica, para crearlo usa metricDescriptors.create. Para obtener más información sobre cómo permitir que Monitoring cree el tipo de métrica adecuado automáticamente, consulta Creación automática de métricas personalizadas.

Mapea configuraciones

Para exportar la métrica StatsD al tipo de métrica personalizado nuevo, reemplaza el contenido de la configuración predeterminada del complemento, /opt/stackdriver/collectd/etc/collectd.d/statsd.conf, con el siguiente código:

<Plugin statsd>
  Host "127.0.0.1"
  Port "8125"
  DeleteSets true
  TimerPercentile 50.0
  TimerPercentile 95.0
  TimerLower true
  TimerUpper true
  TimerSum true
  TimerCount true
</Plugin>

LoadPlugin match_regex
LoadPlugin target_set
LoadPlugin target_replace

# Insert a new rule in the default "PreCache" chain, to divert your metrics.
PreCacheChain "PreCache"
<Chain "PreCache">
  # The following rule does all the work for your metric:
  <Rule "rewrite_request_errors">
    # Do a careful match for just your metrics; if it fails, drop down
    # to the next rule:
    <Match regex>
      Plugin "^statsd$"
      TypeInstance "^.*\\.GET\\..*$"    # Match on type instance.
    </Match>

    <Target "set">
      # Specify the metric descriptor name:
      MetaData "stackdriver_metric_type" "custom.googleapis.com/http/request_errors"
      # Initialize the labels from the "type_instance" label; clean the values up in the next Target below.
      MetaData "label:service_name" "%{type_instance}"
      MetaData "label:response_code" "%{type_instance}"
    </Target>

    <Target "replace">
      # Remove ".GET.[code]" to get the real service name.
      MetaData "label:service_name" "\\.GET\\.[0-9]*$" ""
      # Remove "[service].GET." to get the real response code.
      MetaData "label:response_code" "^[^\\.]*\\.GET\\." ""
    </Target>
  </Rule>
</Chain>

Reinicia el agente

Reinicia tu agente para recoger la configuración nueva que ejecuta el siguiente comando en tu instancia de VM:

sudo service stackdriver-agent restart

Tu información métrica personalizada comienza a fluir en Monitoring inmediatamente.

Próximos pasos

Personalizar el complemento StatsD es un caso especial de personalización de las métricas collectd para Monitoring. Para obtener más información, consulta las secciones de Referencia y Solución de problemas Métricas personalizadas del agente.

¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

Stackdriver Monitoring
¿Necesitas ayuda? Visita nuestra página de asistencia.