Publicar métricas personalizadas - Amazon CloudWatch

Publicar métricas personalizadas

Você também pode publicar suas próprias métricas no CloudWatch usando a AWS CLI ou uma API. Você pode visualizar gráficas de estatísticas de suas métricas publicadas com o AWS Management Console.

O CloudWatch armazena dados sobre uma métrica como uma série de pontos de dados. Cada ponto de dados tem um time stamp associado. Você pode até mesmo publicar um conjunto agregado de pontos de dados chamado conjunto de estatísticas.

Métricas de alta resolução

Cada métrica é um dos seguintes:

  • Resolução padrão, com dados de granularidade de um minuto

  • Resolução alta, com dados de granularidade de um segundo

Por padrão, as métricas produzidas por serviços da AWS têm resolução padrão. Quando você publica uma métrica personalizada, pode defini-la com resolução padrão ou alta. Quando você publica uma métrica de alta resolução, o CloudWatch a armazena com uma resolução de 1 segundo. Você pode ler e recuperar essa métrica no período de 1 segundo, 5 segundos, 10 segundos, 30 segundos ou em qualquer múltiplo de 60 segundos.

As métricas de alta resolução podem também dar a você insight mais imediato da atividade de subminuto da seu aplicativo. Lembre-se de que cada chamada PutMetricData de uma métrica personalizada é cobrada. Portanto, chamar PutMetricData com mais frequência em uma métrica de alta resolução pode resultar em tarifas mais altas. Para obter mais informações sobre os preços do CloudWatch, consulte Preço do Amazon CloudWatch.

Se você definir um alarme em uma métrica de alta resolução, pode especificar um alarme de alta resolução com um período de 10 ou 30 segundos ou pode definir um alarme regular com um período de qualquer múltiplo de 60 segundos. Há uma tarifa maior para alarmes de alta resolução com um período de 10 ou 30 segundos.

Usar dimensões

Em métricas personalizadas, o parâmetro --dimensions é comum. Uma dimensão esclarece com mais detalhes qual é a métrica e quais dados ela armazena. Você pode ter até 30 dimensões atribuídas a uma métrica. Cada dimensão é definida por um par de nome e valor.

A forma como você especifica uma dimensão é diferente quando você usa comandos diferentes. Com put-metric-data, você especifica cada dimensão como MyName=MyValue, e com get-metric-statistics ou put-metric-alarm você usa o formato Name=MyName, Value=MyValue. Por exemplo, o seguinte comando publica uma métrica Buffers com duas dimensões 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 as estatísticas para esta mesma métrica. Separe as partes de nome e valor de uma única dimensão com vírgulas, mas, se tiver várias dimensões, use um espaço entre uma dimensão e a próxima.

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

Se uma única métrica incluir várias dimensões, você deverá especificar um valor para cada dimensão definida ao usar get-metric-statistics. Por exemplo, a métrica BucketSizeBytes do Amazon S3 inclui as dimensões BucketName e StorageType. Portanto, você deve especificar as duas dimensões com 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 quais dimensões estão definidas para uma métrica, use o comando list-metrics.

Publicar pontos de dados únicos

Para publicar um único ponto de dados para uma métrica nova ou existente, use o comando put-metric-data com um valor e um time stamp. Por exemplo, cada uma das seguintes ações publica um ponto de dados.

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

Se você chamar esse comando com um novo nome da métrica, o CloudWatch criará uma métrica para você. Caso contrário, o CloudWatch associará os dados com a métrica existente que você especificou.

nota

Ao criar uma métrica, pode levar até dois minutos antes que seja possível recuperar as estatísticas para a nova métrica usando o comando get-metric-statistics. No entanto, pode levar até 15 minutos até que a nova métrica apareça na lista de métricas recuperadas com o comando list-metrics.

Embora você possa publicar pontos de dados com carimbos de data/hora com precisão de milésimo de segundo, o CloudWatch agrega os dados com a precisão mínima de um segundo. O CloudWatch registra a média (soma de todos os itens dividida pelo número de itens) dos valores recebidos para cada período, bem como o número de amostras, o valor máximo e o valor mínimo para o mesmo período. Por exemplo, a métrica PageViewCount dos exemplos anteriores contém três pontos de dados com time stamps com apenas alguns segundos de intervalo. Se você tiver o período definido como 1 minuto, o CloudWatch agregará os três pontos de dados, pois eles têm carimbos de data/hora em um período de 1 minuto.

Você pode usar o comando get-metric-statistics para recuperar estatísticas com base nos pontos de dados publicados.

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

O seguinte é um exemplo de saída.

{ "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 de estatísticas

Você pode agregar seus dados antes de publicá-los no CloudWatch. Quando você tem vários pontos de dados por minuto, a agregação de dados reduz o número de chamadas para put-metric-data. Por exemplo, em vez de chamar put-metric-data várias vezes para três pontos de dados com três segundos de diferença um do outro, é possível agregar os dados em um conjunto de estatísticas publicado com uma chamada, usando o 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

O CloudWatch precisa dos pontos e dados brutos para calcular percentis. Se você publicar dados usando um conjunto de estatísticas, não poderá recuperar estatísticas de percentis para esses dados, a menos que uma das seguintes condições seja verdadeira:

  • O SampleCount do conjunto de estatísticas é 1.

  • O Minimum e o Maximum do conjunto de estatísticas são iguais

Publicar o valor zero

Quando os dados são mais esporádicos e você tem períodos sem dados associados, você pode optar por publicar o valor zero (0) para esse período ou nenhum valor. Se você usar chamadas periódicas para PutMetricData a fim de monitorar a integridade do seu aplicativo, talvez queira publicar zero em vez de nenhum valor. Por exemplo, é possível definir um alarme do CloudWatch para notificar você, se a aplicação não publicar métricas a cada cinco minutos. É recomendável que esse aplicativo publique zeros para períodos sem dados associados.

Você também pode publicar zeros se desejar rastrear o número total de pontos de dados ou se quiser que estatísticas como mínima e média incluam pontos de dados com o valor 0.

Parar de publicar métricas

Para parar de publicar métricas personalizadas no CloudWatch, altere o código da aplicação ou do serviço de forma a parar de usar PutMetricData. O CloudWatch não extrai métricas de aplicações. Ele apenas recebe o que é enviado para ele. Portanto, para parar de publicar suas métricas, é necessário interrompê-las na fonte.