StatsD es un protocolo para enviar métricas y un daemon para la agregación de datos de métricas. Si configuras el complemento StatsD del agente de Monitoring, el agente funcionará como un daemon de StatsD que escribe métricas en Monitoring.
Usar el complemento StatsD con su configuración predeterminada es la forma más sencilla de incluir tus métricas definidas por el usuario en Monitoring. El complemento StatsD solo está disponible en el agente de Stackdriver Monitoring para Linux.
El agente de monitorización también puede exportar otras métricas de collectd como métricas definidas por el usuario, pero no hay una configuración predeterminada sencilla. Consulta Métricas definidas por el usuario del agente para obtener más información.
Esta función solo está disponible para 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 StatsD como se describe en la siguiente sección.
Configurar el complemento StatsD
Requisitos previos
El complemento StatsD requiere la versión 5.5.2-356 o posterior del agente de monitorización. Para actualizar el agente, consulta Actualizar el agente.
Habilitar el complemento
Haz lo siguiente en tu instancia de VM compatible que ejecute 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 indica al agente que acepte métricas de StatsD en el puerto predeterminado de StatsD, 8125.
Si quieres enviar algunas métricas a tu propio daemon de StatsD y otras al daemon de StatsD del agente, cambia los ajustes del puerto en el archivo de configuración.
Reinicia el agente de monitorización para que recoja la configuración de StatsD ejecutando el siguiente comando:
sudo service stackdriver-agent restart
Para obtener más información sobre el complemento collectd
statsd
, consulta Complemento:StatsD.
Asignación predeterminada a métricas definidas por el usuario
Para que puedas empezar rápidamente, el complemento StatsD del agente incluye una configuración de collectd predeterminada que asigna métricas de StatsD a 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
collectd, tiene un nombre de tipo de métrica definido por el usuario.El nombre de la 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 tanto el nombre de la métrica como el nombre de un contador: media, superior, inferior, suma, percentil 50 y percentil 95.
Por ejemplo, en la siguiente tabla se muestra cómo se asignan los tipos de métricas de StatsD admitidos y el nombre de la métrica a las métricas definidas por el usuario de Monitoring:
Tipo de StatsD | Nombre de StatsD | Tipo de métrica de Stackdriver | Tipo de métrica | Tipo de valor | Etiqueta(s) de métrica |
---|---|---|---|---|---|
Encimera | my.counter | custom.googleapis.com/statsd/derive | Acumulativo | Int64 | métrica:my.counter |
Indicador | my.gauge | custom.googleapis.com/statsd/gauge | Indicador | Doble | metric:my.gauge |
Definida | my.set | custom.googleapis.com/statsd/objects | Indicador | Doble | metric:my.set |
Temporizador 1 | my.timer | custom.googleapis.com/statsd/latency | Indicador | Doble | métrica:my.timer-average |
(igual) | (igual) | (igual) | métrica:my.timer-upper | ||
(igual) | (igual) | (igual) | metric:my.timer-lower | ||
(igual) | (igual) | (igual) | métrica:my.timer-sum | ||
(igual) | (igual) | (igual) | metric:my.timer-percentile-50 | ||
(igual) | (igual) | (igual) | metric:my.timer-percentile-95 | ||
custom.googleapis.com/statsd/gauge | Indicador | (igual) | métrica:my.timer-count |
Notas:
1 Hay una secuencia entrante de métricas de temporizador de statsd con el mismo nombre. El agente agrega métricas de temporizador de 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 de StatsD.
Personalizar las métricas exportadas
La configuración predeterminada de StatsD se ha diseñado para que puedas empezar a usarla rápidamente. En esta sección se explica cómo personalizar la configuración para adaptarla a necesidades más complejas.
Debe conocer 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 el resumen de las métricas definidas por el usuario.
Puedes personalizar los siguientes elementos:
Puedes cambiar los valores asignados a la etiqueta
metric
predeterminada. Si usa más valores de etiqueta, habrá más series temporales en la métrica definida por el usuario. Si se usan menos valores de etiqueta, se obtendrán menos series temporales.Puede 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, puedes identificar métricas con un nombre determinado y usar un tipo de métrica definida por el usuario diferente para ellas.
Si cambia los tipos de métricas definidas por el usuario, también puede cambiar las etiquetas asociadas a cada tipo. La configuración predeterminada tiene una sola etiqueta, pero puedes añadir más o cambiar la clave de la etiqueta.
Si cambia los tipos de métricas, debe definir los nuevos tipos de métricas definidas por el usuario en la API Monitoring. Para obtener más información, consulta la sección Diseñar un tipo de métrica.
Ejemplo
Supongamos que usas StatsD para monitorizar una aplicación que consta de dos servicios, my_service_a
y my_service_b
. Para cada servicio, quieres exportar a Monitoring una métrica de contador que represente el número de solicitudes fallidas. No quieres usar los tipos de métricas de StatsD predeterminados.
Métricas de collectd entrantes
Antes de definir tus propios tipos de métricas, es importante que conozcas la estructura de una métrica de collectd y cómo se asigna de forma predeterminada una métrica de StatsD a las métricas definidas por el usuario.
Las métricas de collectd, incluidas las métricas de StatsD, incluyen los siguientes componentes:
Host, Plugin, Plugin-instance, Type, Type-instance
En este ejemplo, las métricas de StatsD que quiere exportar tienen los siguientes identificadores en collectd:
Componente | Valor(es) esperado(s) |
---|---|
Anfitrión | any |
Complemento | statsd |
Instancia de complemento | unset1 |
Tipo | derive 2 |
Instancia de tipo | [SERVICE_NAME].GET.[CODE] 3 |
[VALUE] |
cualquier valor4 |
Notas:
1 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.
En la siguiente tabla se muestra cómo se asignaría esta métrica de forma predeterminada:
Tipo de StatsD | Nombre de StatsD | Tipo de métrica de Stackdriver | Tipo de métrica | Tipo de valor | Etiquetas de métricas |
---|---|---|---|---|---|
Encimera | my_service_a.GET.500 | custom.googleapis.com/statsd/derive | Acumulativo | Int64 | metric:my_servce_a.GET.500 |
Encimera | my_service_b.GET.403 | custom.googleapis.com/statsd/derive | Acumulativo | Int64 | metric:my_servce_b.GET.403 |
La asignación predeterminada puede suponer algunas dificultades:
Esta métrica de contador concreta (
[SERVICE_NAME].GET.[CODE]
) es del mismo tipo de métrica definida por el usuario que todas las demás métricas de contador. No puedes obtener fácilmente los datos de esta métrica, ya que Stackdriver no admite búsquedas de expresiones regulares en etiquetas.No puedes obtener fácilmente datos de servicios concretos o códigos de respuesta concretos en tus datos. Por ejemplo, no puedes obtener fácilmente el número total de errores (de todo tipo) que se han producido en
my_service_a
.La configuración predeterminada exporta todas las métricas de StatsD a Stackdriver, lo que puede resultar caro si solo te interesan determinadas métricas.
Diseñar un tipo de métrica
Para obtener información detallada sobre cómo crear tipos de métricas, consulta el artículo Crear un tipo de métrica definido por el usuario.
El siguiente tipo de métrica definida por el usuario es una opción adecuada para los datos de este ejemplo, ya que solo contiene la métrica de StatsD que le interesa y porque la elección de etiquetas ayuda a organizar mejor los datos:
- Tipo:
custom.googleapis.com/http/request_errors
- Etiquetas:
service_name
(STRING): el nombre del servicio.response_code
(INT64): código de respuesta HTTP.
- Tipo: CUMULATIVE
- Tipo de valor: INT64
En la siguiente tabla se muestra la asignación deseada de StatsD a Stackdriver:
Tipo de StatsD | Nombre de StatsD | Tipo de métrica de Stackdriver | Tipo de métrica | Tipo de valor | Etiquetas de métricas |
---|---|---|---|---|---|
Encimera | my_service_a.GET.500 | custom.googleapis.com/http/request_errors | Acumulativo | Int64 | service_name:my_service_a, response_code:500 |
Encimera | 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, créalo con metricDescriptors.create. Para obtener información sobre cómo permitir que Monitoring cree el tipo de métrica, consulta Creación automática de descriptores de métricas.
Configuración de la asignación
Para exportar la métrica de StatsD al nuevo tipo de métrica definida por el usuario,
sustituye el contenido de la configuración predeterminada del complemento de StatsD,
/etc/stackdriver/collectd.d/statsd.conf
,
por 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>
Reiniciar el agente
Reinicia el agente para que aplique la nueva configuración ejecutando el siguiente comando en tu instancia de VM:
sudo service stackdriver-agent restart
La información de la métrica definida por el usuario empieza a enviarse a Monitorización inmediatamente.
Pasos siguientes
Personalizar el complemento StatsD es lo mismo que personalizar las métricas de collectd para Monitoring. Para obtener más información, consulta las secciones Referencia y Solución de problemas del artículo Métricas definidas por el usuario del agente.