Publish custom metrics - Amazon CloudWatch

Publish custom metrics

Puede publicar sus propias métricas en CloudWatch mediante AWS CLI o una API. Puede ver gráficos de estadísticas de las métricas publicadas con la AWS Management Console.

CloudWatch almacena datos de una métrica como una serie de puntos de datos. Cada punto de datos tiene una marca temporal asociada. Puede incluso publicar un conjunto de puntos de datos acumulados denominado conjunto estadístico.

Métricas de alta resolución

Cada métrica es una de las siguientes:

  • Resolución estándar, con datos cuya granularidad es de un minuto

  • Alta resolución, con datos cuya granularidad es de un segundo

De forma predeterminada, las métricas producidas por los servicios de AWS son de resolución estándar. Al publicar una métrica personalizada, puede definirla como de resolución estándar o de alta resolución. Cuando publica una métrica de alta resolución, CloudWatch la almacena con una resolución de 1 segundo, y puede leerla y recuperarla con un periodo de 1 segundo, 5 segundos, 10 segundos, 30 segundos o cualquier múltiplo de 60 segundos.

Las métricas de alta resolución pueden ofrecerle más información inmediata acerca de las actividades de su aplicación, cuya duración sea inferior a un minuto. Tenga en cuenta que cada llamada a PutMetricData para una métrica personalizada se cobra; por tanto, realizar llamadas a PutMetricData con más frecuencia en una métrica de alta resolución podría derivar en cargos más elevados. Para obtener más información sobre los precios de CloudWatch, consulte Precios de Amazon CloudWatch.

Si configura una alarma en una métrica de alta resolución, puede especificar una alarma de alta resolución con un periodo de 10 o 30 segundos, o puede definir una alarma normal con un periodo de cualquier múltiplo de 60 segundos. El cargo es mayor para las alarmas de alta resolución con un periodo de 10 o 30 segundos.

Uso de dimensiones

En métricas personalizadas, el parámetro --dimensions es habitual. Una dimensión aclara mejor qué es la métrica y qué datos almacena. Puede tener hasta 30 dimensiones asignadas a una métrica y cada dimensión se define mediante un par de nombre y valor.

La forma en que especifique una dimensión es distinta cuando se usan distintos comandos. Con put-metric-data, usted especifica cada dimensión como MyName=MyValue y con get-metric-statistics o put-metric-alarm utiliza el formato Name=MyName, Value=MyValue. Por ejemplo, el siguiente comando publica una métrica Buffers con dos dimensiones denominadas InstanceId e InstanceType.

aws cloudwatch put-metric-data --metric-name Buffers --namespace MyNameSpace --unit Bytes --value 231434333 --dimensions InstanceId=1-23456789,InstanceType=m1.small

Este comando recupera estadísticas para la misma métrica. Separe las partes Nombre y Valor de una dimensión con comas, pero si tiene varias dimensiones, utilice un espacio entre una dimensión y la siguiente.

aws cloudwatch get-metric-statistics --metric-name Buffers --namespace MyNameSpace --dimensions Name=InstanceId,Value=1-23456789 Name=InstanceType,Value=m1.small --start-time 2016-10-15T04:00:00Z --end-time 2016-10-19T07:00:00Z --statistics Average --period 60

Si una métrica incluye varias dimensiones, debe especificar un valor para cada dimensión definida cuando utilice get-metric-statistics. Por ejemplo, la métrica BucketSizeBytes de Amazon S3 incluye las dimensiones BucketName y StorageType, por lo tanto, debe especificar ambas dimensiones con get-metric-statistics.

aws cloudwatch get-metric-statistics --metric-name BucketSizeBytes --start-time 2017-01-23T14:23:00Z --end-time 2017-01-26T19:30:00Z --period 3600 --namespace AWS/S3 --statistics Maximum --dimensions Name=BucketName,Value=amzn-s3-demo-bucket Name=StorageType,Value=StandardStorage --output table

Para ver qué dimensiones hay definidas en una métrica, utilice el comando list-metrics.

Publicar puntos de datos únicos

Para publicar un punto de datos único para una métrica nueva o existente, utilice el comando put-metric-data con un valor y marca temporal. Por ejemplo, cada una de las siguientes acciones publica un punto de datos.

aws cloudwatch put-metric-data --metric-name PageViewCount --namespace MyService --value 2 --timestamp 2016-10-20T12:00:00.000Z aws cloudwatch put-metric-data --metric-name PageViewCount --namespace MyService --value 4 --timestamp 2016-10-20T12:00:01.000Z aws cloudwatch put-metric-data --metric-name PageViewCount --namespace MyService --value 5 --timestamp 2016-10-20T12:00:02.000Z

Si nombra este comando con un nuevo nombre de métrica, CloudWatch crea una métrica automáticamente. De lo contrario, CloudWatch asocia sus datos con la métrica existente que haya especificado.

nota

Cuando se crea una métrica, pueden transcurrir hasta dos minutos antes de poder recuperar las estadísticas de la nueva métrica mediante el comando get-metric-statistics. Sin embargo, pueden transcurrir hasta 15 minutos antes de que la nueva métrica aparezca en la lista de métricas recuperadas mediante el comando list-metrics.

Aunque puede publicar puntos de datos con marcas de tiempo pormenorizados hasta una milésima de segundo, CloudWatch acumula los datos con una granularidad mínima de 1 minuto. CloudWatch registra el promedio (la suma de todos los elementos dividida entre el número de elementos) de los valores recibidos por cada período, así como el número de muestras, el valor máximo y el valor mínimo para el mismo período de tiempo. Por ejemplo, la métrica PageViewCount de los ejemplos anteriores contiene tres puntos de datos con marcas temporales separadas solo unos segundos. Si ha establecido el período en 1 minuto, CloudWatch acumula los tres puntos de datos, ya que todos tienen marcas temporales dentro de un periodo de 1 minuto.

Puede utilizar el comando get-metric-statistics para recuperar estadísticas basadas en los puntos de datos que ha publicado.

aws cloudwatch get-metric-statistics --namespace MyService --metric-name PageViewCount \ --statistics "Sum" "Maximum" "Minimum" "Average" "SampleCount" \ --start-time 2016-10-20T12:00:00.000Z --end-time 2016-10-20T12:05:00.000Z --period 60

A continuación, se muestra un ejemplo del resultado.

{ "Datapoints": [ { "SampleCount": 3.0, "Timestamp": "2016-10-20T12:00:00Z", "Average": 3.6666666666666665, "Maximum": 5.0, "Minimum": 2.0, "Sum": 11.0, "Unit": "None" } ], "Label": "PageViewCount" }

Publicar conjuntos estadísticos

Puede acumular los datos antes de publicar en CloudWatch. Cuando tenga varios puntos de datos por minuto, la acumulación de datos minimiza el número de llamadas a put-metric-data. Por ejemplo, en lugar de llamar a put-metric-data varias veces para los tres puntos de datos que se encuentran separados por tres segundos entre sí, puede acumular los datos en un conjunto de estadísticas que publique con una llamada, utilizando el parámetro --statistic-values.

aws cloudwatch put-metric-data --metric-name PageViewCount --namespace MyService --statistic-values Sum=11,Minimum=2,Maximum=5,SampleCount=3 --timestamp 2016-10-14T12:00:00.000Z

CloudWatch necesita puntos de datos sin procesar para calcular percentiles. Si publica datos a través de un conjunto estadístico en su lugar, no puede recuperar estadísticas de percentil para estos datos, a menos que una de las siguientes condiciones sea cierta:

  • El valor de SampleCount del conjunto de estadísticas es 1.

  • Los valores Minimum y Maximum del conjunto de estadísticas son iguales.

Publicar el valor cero

Cuando los datos son más esporádicos y tiene períodos que no tienen datos asociados, puede elegir publicar el valor cero (0) para dicho periodo o ningún valor en absoluto. Si realiza llamadas periódicas a PutMetricData para supervisar el estado de la aplicación, es recomendable publicar cero en lugar de ningún valor. Por ejemplo, puede definir una alarma de CloudWatch que le avise si la aplicación no publica las métricas cada cinco minutos. Quiere que dicha aplicación publique ceros en los períodos sin datos asociados.

También puede publicar ceros si desea realizar un seguimiento del número total de puntos de datos o si desea estadísticas como por ejemplo mínimo y media para incluir puntos de datos con el valor 0.

Dejar de publicar métricas

Para dejar de publicar métricas personalizadas en CloudWatch, cambie el código de la aplicación o del servicio para dejar de usar PutMetricData. CloudWatch no extrae métricas de las aplicaciones, solo recibe lo que se le envía, por lo que para dejar de publicar sus métricas debe detenerlas en el origen.