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 definidas por el usuario en Monitoring. El complemento StatsD solo está disponible en el agente de Stackdriver Monitoring de Linux.
El agente de Monitoring también puede exportar otras métricas collectd como métricas definidas por el usuario, pero no hay una configuración predeterminada simple. Consulta Métricas definidas por el usuario del agente para obtener más detalles.
Esta funcionalidad solo está disponible para los agentes que se ejecutan en Linux. No está disponible en Windows.
Discovery
Monitoring no detecta automáticamente StatsD. Para usar las métricas de StatsD, configura el complemento de 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:
Descarga statsd.conf y colócalo en
/etc/stackdriver/collectd.d/
con el siguiente comando:(cd /etc/stackdriver/collectd.d/ && sudo curl -O https://raw.githubusercontent.com/Stackdriver/stackdriver-agent-service-configs/master/etc/collectd.d/statsd.conf)
El archivo de configuración predeterminado le indica al agente que acepte las métricas de 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.
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 el complemento collectd
statsd
, consulta Plugin:StatsD.
Asignación predeterminada a métricas definidas por el usuario
Para comenzar rápidamente, el complemento StatsD del agente viene con una configuración collectd predeterminada que asigna desde métricas StatsD hasta las métricas definidas por el usuario de Stackdriver:
Todas las métricas del complemento StatsD tienen
statsd
en el componenteplugin
de collectd.Cada tipo de métrica de StatsD que se encuentra en el componente
type
de collectd tiene un nombre de tipo de métrica definido por el usuario correspondiente.El nombre de métrica de StatsD que se encuentra en el componente
type_instance
de collectd se almacena como el valor de una etiqueta llamadametric
.El valor de la etiqueta
metric
es diferente para el tipo de métricaTimer
: incluye el nombre de la métrica y un contranombre: promedio, superior, inferior, suma, percentil-50 y percentil-95.
Por ejemplo, la siguiente tabla muestra cómo los tipos de métrica de StatsD admitidos y el nombre de la métrica se mapean a métricas definidas por el usuario 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 de 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 definidas por el usuario. Para obtener una introducción a las métricas, consulta Métricas, series temporales y recursos. Para obtener más información, consulta Descripción general de las métricas definidas por el usuario.
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 definida por el usuario. Usar menos valores de etiqueta da como resultado menos series temporales.Puedes cambiar los tipos de métricas definidas por el usuario. 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 definida por el usuario diferente para ellas.
Si cambias los tipos de métricas definidas por el usuario, 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 nuevos tipos de métricas definidas por el usuario en la API de Monitoring. Para obtener más información, consulta la siguiente sección, Cómo diseñar un tipo de métrica.
Ejemplo
Supongamos que utilizas 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, 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 definidas por el usuario.
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 | sin configurar1 |
Tipo | derive 2 |
Tipo de instancia | [SERVICE_NAME].GET.[CODE] 3 |
[VALUE] |
cualquier valor4 |
Notas:
1 Actualmente, el complemento StatsD deja este componente vacío.
2 Una métrica de contador de StatsD se asigna al tipo derive
de collectd.
3 Por ejemplo, una instancia de tipo podría ser my_service_a.GET.500
.
4 [VALUE] 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 |
---|---|---|---|---|---|
Contador | my_service_a.GET.500 | custom.googleapis.com/statsd/derive | Acumulativo | Int64 | metric:my_servce_a.GET.500 |
Contador | 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]
) se encuentra en el mismo tipo de métrica definida por el usuario que todas las demás métricas de contador. No puedes obtener fácilmente solo los datos de esta métrica, ya que, en la actualidad, Stackdriver 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 la cantidad total de errores (de todo tipo) que se produjeron 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.
Cómo diseñar un tipo de métrica
Para obtener un análisis completo sobre la creación de tipos de métricas, consulta Crea un tipo de métrica definido por el usuario.
El siguiente tipo de métrica definida por el usuario es una opción razonable para los datos en este ejemplo, ya que solo contiene la métrica de StatsD en la que estás interesado y porque su elección de etiquetas ayuda a organizar mejor los datos:
- Tipo:
custom.googleapis.com/http/request_errors
- Etiquetas:
service_name
(STRING): el nombre del servicioresponse_code
(INT64): el código de respuesta HTTP
- Tipo: ACUMULATIVO
- Tipo de valor: 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 |
---|---|---|---|---|---|
Contador | my_service_a.GET.500 | custom.googleapis.com/http/request_errors | Acumulativo | Int64 | service_name:my_service_a, response_code:500 |
Contador | 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, usa metricDescriptors.create para crearlo. Para obtener más información sobre cómo permitir que Monitoring cree el tipo de métrica de manera automática, consulta Creación automática de descriptores de métricas.
Configuración de asignaciones
Para exportar la métrica de StatsD al nuevo tipo de métrica definida por el usuario, reemplaza el contenido de la configuración predeterminada del complemento StatsD, /etc/stackdriver/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 type:
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 a fin de recoger la configuración nueva; para hacerlo, ejecuta el comando siguiente en tu instancia de VM:
sudo service stackdriver-agent restart
Tu información de métrica definida por el usuario comienza a fluir en Monitoring inmediatamente.
Próximos pasos
La personalización del complemento StatsD es lo mismo que personalizar las métricas de collectd para Monitoring. Para obtener más información, consulta las secciones de Referencia y Solución de problemas Métricas definidas por el usuario del agente.