Como posso enviar métricas personalizadas para o CloudWatch?

4 minuto de leitura
0

Como posso enviar métricas personalizadas para o Amazon CloudWatch?

Breve descrição

Os serviços da AWS enviam pontos de dados para o CloudWatch por padrão. No entanto, pode haver casos em que você precise calibrar o desempenho de seus recursos com base em métricas que não são suportadas pelos serviços da AWS. Nesses casos, você pode enviar métricas personalizadas para o CloudWatch usando o agente unificado do CloudWatch ou a API.

Importante: as métricas personalizadas são cobradas de acordo com seu armazenamento e uso da API.

Resolução

Enviar métricas personalizadas usando o agente do CloudWatch

O agente unificado do CloudWatch coleta métricas em nível de sistema e as envia para o CloudWatch como métricas personalizadas. Você pode usar o agente para enviar métricas personalizadas de:

  • Servidores Linux ou Windows
  • Instâncias do Amazon Elastic Compute Cloud (Amazon EC2) ou servidores locais

Para Linux, consulte a lista de métricas suportadas.

Exemplo de bloco de métricas do arquivo de configuração do agente para métricas de disco (Linux):

"disk":
    {
        "measurement": [

          "used_percent"
        ],
        "resources": [

          "*"
        ],
        "drop_device":
        true
      }

Para Windows, você pode referenciar qualquer contador mencionado no Monitor de Desempenho do Windows no arquivo de configuração do agente.

Exemplo de bloco de métricas do arquivo de configuração do agente para o Contador de Processadores (Windows):

"Processor": {
        "measurement": [
          {"name": "% Idle Time", "rename": "CPU_IDLE", "unit": "Percent"},
          "% Interrupt Time",
          "% User Time",
          "% Processor Time"
        ],
        "resources": [
          "*"
        ],
        "append_dimensions": {
          "d1": "win_foo",
          "d2": "win_bar"
        }
      }

Você também pode usar os protocolos “StatsD” e “collectd” para recuperar métricas personalizadas de seus aplicativos ou serviços. Em seguida, as métricas são enviadas ao agente. O StatsD é suportado em servidores Linux e Windows. O collectd é suportado somente em servidores Linux. Para usar esses protocolos:

1.    Instale o agente unificado do CloudWatch.

2.    Atribua um perfil ou credenciais à instância com as permissões do CloudWatch.

3.    Crie o arquivo de configuração do agente do CloudWatch.

4.    Inicie o agente.

Enviar métricas personalizadas usando PutMetricData

Se seu caso de uso não suportar o uso do agente unificado do CloudWatch, você pode usar a API PutMetricData para enviar métricas personalizadas para o CloudWatch.

Por exemplo, para enviar conexões para uma porta específica como uma métrica personalizada, você pode recuperar os valores localmente e transferi-los na API:

total_conn=$(netstat -an | grep <port> | wc -l)

aws cloudwatch put-metric-data   --namespace "totalconn"   --metric-name <port> --dimensions Instance=<InstanceId> --value $  total_conn

Da mesma forma, você pode usar os SDKs da AWS para usar a API PutMetricData e enviar métricas personalizadas para o CloudWatch. Crie um script local que seja executado periodicamente para enviar métricas personalizadas. A API é ideal para fornecer métricas diferentes e diversos valores pelos seguintes motivos:

  • Você pode usar até 1.000 métricas diferentes em uma única API.
  • Usando o método Values and Counts, você pode publicar até 150 valores por métrica com uma única solicitação PutMetricData.
  • Você pode usar até 30 dimensões por métrica.
  • Cada solicitação PutMetricData é limitada a 1 MB para solicitações HTTP POST.

Por exemplo, em vez de fazer uma chamada de API separada para cada métrica, você pode enviar várias métricas usando uma única chamada de API:

aws cloudwatch put-metric-data --namespace "Usage Metrics" --metric-data file://metric.json

onde metric.json é:

[
  {
    "MetricName": "DiskMetric",
    "Value": <value_derived_by_some_calculation>,
    "Unit": "Count"
  },
  {
    "MetricName": "MemoryMetric",

    "Value": <value_derived_by_some_calculation>,
    "Unit": "Count"
  }
]

Essa abordagem normalmente reduz os custos porque as métricas personalizadas são cobradas com base no número de APIs e no armazenamento. Essa abordagem também pode ajudar a reduzir o controle de utilização na API PutMetricData.


AWS OFICIAL
AWS OFICIALAtualizada há um ano