Publicar métricas personalizadas do Amazon CloudWatch para um ambiente - AWS Elastic Beanstalk

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Publicar métricas personalizadas do Amazon CloudWatch para um ambiente

Publique os dados reunidos pelo relatório de integridade aprimorada do AWS Elastic Beanstalk no Amazon CloudWatch como métricas personalizadas. A publicação de métricas do CloudWatch permite monitorar alterações na performance da aplicação ao longo do tempo e identificar possíveis problemas rastreando como o uso de recursos e a latência de solicitação aumentam com carga.

Com a publicação de métricas no CloudWatch, você pode disponibilizá-las para uso em gráficos de monitoramento e alarmes. Uma métrica gratuita, EnvironmentHealth, é habilitada automaticamente quando você usa relatórios de integridade aprimorada. As métricas personalizadas que não sejam a EnvironmentHealth geram cobranças do CloudWatch padrão.

Para publicar métricas personalizadas do CloudWatch de um ambiente, primeiro habilite os relatórios de integridade aprimorada no ambiente. Para obter instruções, consulte Habilitar relatórios de integridade aprimorada do Elastic Beanstalk.

Métricas de relatórios de integridade aprimorada

Quando você habilita os relatórios de integridade aprimorada no ambiente, esse sistema de relatórios publica automaticamente uma métrica personalizada do CloudWatch, a EnvironmentHealth. Para publicar métricas adicionais no CloudWatch, configure seu ambiente com essas métricas usando o console do Elastic Beanstalk, a CLI da EB ou .ebextensions.

É possível publicar estas métricas de integridade aprimorada do seu ambiente para o CloudWatch.

Métricas disponíveis — todas as plataformas
EnvironmentHealth

Ambiente apenas. Essa é a única métrica do CloudWatch publicada pelo sistema de relatórios de integridade aprimorada, a menos que você configure mais métricas. A integridade do ambiente é representada por um dos sete status. No console do CloudWatch, esses status são mapeados para os seguintes valores:

  • 0: OK

  • 1: Informações

  • 5: Desconhecido

  • 10: Sem dados

  • 15: Aviso

  • 20: Reduzido

  • 25: Grave

InstancesSevere
InstancesDegraded
InstancesWarning
InstancesInfo
InstancesOk
InstancesPending
InstancesUnknown
InstancesNoData

Ambiente apenas. Essas métricas indicam o número de instâncias no ambiente com cada status de integridade. InstancesNoData indica o número de instâncias para as quais não há dados recebidos.

ApplicationRequestsTotal
ApplicationRequests5xx
ApplicationRequests4xx
ApplicationRequests3xx
ApplicationRequests2xx

Instância e ambiente. Indica o número total de solicitações concluídas pela instância ou ambiente, e o número de solicitações que foram concluídas com cada categoria de código de status.

ApplicationLatencyP10
ApplicationLatencyP50
ApplicationLatencyP75
ApplicationLatencyP85
ApplicationLatencyP90
ApplicationLatencyP95
ApplicationLatencyP99
ApplicationLatencyP99.9

Instância e ambiente. Indica o tempo médio, em segundos, que leva para concluir com mais rapidez x % de solicitações.

InstanceHealth

Instância apenas. Indica o status da integridade atual da instância. A integridade da instância é representada por um dos sete status. No console do CloudWatch, esses status são mapeados para os seguintes valores:

  • 0: OK

  • 1: Informações

  • 5: Desconhecido

  • 10: Sem dados

  • 15: Aviso

  • 20: Reduzido

  • 25: Grave

Métricas disponíveis — Linux
CPUIrq
CPUIdle
CPUUser
CPUSystem
CPUSoftirq
CPUIowait
CPUNice

Instância apenas. Indica a porcentagem de tempo que a CPU passou em cada estado no último minuto.

LoadAverage1min

Instância apenas. A carga média de CPU da instância durante o último minuto.

RootFilesystemUtil

Instância apenas. Indica a porcentagem do espaço em disco em uso.

Métricas disponíveis — Windows
CPUIdle
CPUUser
CPUPriveleged

Instância apenas. Indica a porcentagem de tempo que a CPU passou em cada estado no último minuto.

Configurar métricas do CloudWatch usando o console do Elastic Beanstalk

É possível usar o console do Elastic Beanstalk para configurar o ambiente de modo a publicar métricas de relatórios de integridade aprimorada no CloudWatch e disponibilizá-las para uso em gráficos de monitoramento e alarmes.

Como configurar métricas personalizadas do CloudWatch no console do Elastic Beanstalk
  1. Abra o console do Elastic Beanstalk e, na lista Regions (Regiões), selecione a sua Região da AWS.

  2. No painel de navegação, selecione Ambientes e selecione o nome do ambiente na lista.

    nota

    Se você tiver muitos ambientes, use a barra de pesquisa para filtrar a lista de ambientes.

  3. No painel de navegação, escolha Configuration (Configuração).

  4. Na categoria de configuração Monitoring (Monitoramento), escolha Edit (Editar).

  5. Em Health reporting (Relatórios de integridade), selecione as métricas de instância e de ambiente a serem publicadas no CloudWatch. Para selecionar várias métricas, mantenha pressionada a tecla Ctrl enquanto escolhe.

  6. Para salvar as alterações, escolha Apply (Aplicar) na parte inferior da página.

Habilitar métricas personalizadas do CloudWatch as adiciona à lista de métricas disponíveis na página Monitoring (Monitoramento).

Configurar métricas personalizadas do CloudWatch usando a CLI do EB

Use a CLI do EB para configurar métricas personalizadas, salvando a configuração do ambiente localmente, adicionando uma entrada que define as métricas para publicação e fazendo upload da configuração no Elastic Beanstalk. Você pode aplicar a configuração salva a um ambiente durante ou após a criação.

Como configurar métricas personalizadas do CloudWatch com a CLI do EB e configurações salvas
  1. Inicialize a pasta do projeto com eb init.

  2. Crie um ambiente executando o comando eb create.

  3. Salve um modelo de configuração localmente, executando o comando eb config save. O exemplo a seguir usa a opção --cfg para especificar o nome da configuração.

    $ eb config save --cfg 01-base-state Configuration saved at: ~/project/.elasticbeanstalk/saved_configs/01-base-state.cfg.yml
  4. Abra o arquivo de configuração salvo em um editor de texto.

  5. Em OptionSettings > aws:elasticbeanstalk:healthreporting:system:, adicione uma chave ConfigDocument para habilitar cada uma das métricas do CloudWatch desejadas. Por exemplo, ConfigDocument publica as métricas ApplicationRequests5xx e ApplicationRequests4xx no nível de ambiente e as métricas ApplicationRequestsTotal no nível de instância.

    OptionSettings: ... aws:elasticbeanstalk:healthreporting:system: ConfigDocument: CloudWatchMetrics: Environment: ApplicationRequests5xx: 60 ApplicationRequests4xx: 60 Instance: ApplicationRequestsTotal: 60 Version: 1 SystemType: enhanced ...

    No exemplo, 60 indica o número de segundos entre as medidas. No momento, este é o único valor aceito.

    nota

    É possível combinar CloudWatchMetrics e Rules na mesma configuração da opção ConfigDocument. Rules são descritas em Configurar as regras de integridade aperfeiçoada de um ambiente.

    Se você tiver usado Rules anteriormente para configurar as regras de integridade aprimorada, o arquivo de configuração recuperado por meio do comando eb config save já terá uma chave ConfigDocument com uma seção Rules. Não o exclua, em vez disso, adicione uma seção CloudWatchMetrics no mesmo valor da opção ConfigDocument.

  6. Salve o arquivo de configuração e feche o editor de texto. Neste exemplo, o arquivo de configuração atualizado é salvo com um nome (02-cloudwatch-enabled.cfg.yml) que seja diferente do arquivo de configuração que foi baixado. Isso cria uma configuração salva separada quando o arquivo é carregado. Você pode usar o mesmo nome que o arquivo baixado para substituir a configuração existente, sem criar um novo.

  7. Use o comando eb config put para fazer upload do arquivo de configuração atualizado no Elastic Beanstalk.

    $ eb config put 02-cloudwatch-enabled

    Ao usar os comandos eb config get e put com configurações salvas, não inclua a extensão de arquivo.

  8. Aplique a configuração salva ao ambiente em execução.

    $ eb config --cfg 02-cloudwatch-enabled

    A opção --cfg especifica um arquivo de configuração nomeado que é aplicado ao ambiente. É possível salvar o arquivo de configuração localmente ou no Elastic Beanstalk. Se um arquivo de configuração com o nome especificado já existir em ambos os locais, a EB CLI usará o arquivo local.

Fornecer documentos Config de métrica personalizada

O documento de configuração (config) de métricas personalizadas do Amazon CloudWatch é um documento JSON que lista as métricas a serem publicadas nos níveis do ambiente e da instância. O exemplo a seguir mostra um documento config que habilita todas as métricas disponíveis no Linux.

{ "CloudWatchMetrics": { "Environment": { "ApplicationLatencyP99.9": 60, "InstancesSevere": 60, "ApplicationLatencyP90": 60, "ApplicationLatencyP99": 60, "ApplicationLatencyP95": 60, "InstancesUnknown": 60, "ApplicationLatencyP85": 60, "InstancesInfo": 60, "ApplicationRequests2xx": 60, "InstancesDegraded": 60, "InstancesWarning": 60, "ApplicationLatencyP50": 60, "ApplicationRequestsTotal": 60, "InstancesNoData": 60, "InstancesPending": 60, "ApplicationLatencyP10": 60, "ApplicationRequests5xx": 60, "ApplicationLatencyP75": 60, "InstancesOk": 60, "ApplicationRequests3xx": 60, "ApplicationRequests4xx": 60 }, "Instance": { "ApplicationLatencyP99.9": 60, "ApplicationLatencyP90": 60, "ApplicationLatencyP99": 60, "ApplicationLatencyP95": 60, "ApplicationLatencyP85": 60, "CPUUser": 60, "ApplicationRequests2xx": 60, "CPUIdle": 60, "ApplicationLatencyP50": 60, "ApplicationRequestsTotal": 60, "RootFilesystemUtil": 60, "LoadAverage1min": 60, "CPUIrq": 60, "CPUNice": 60, "CPUIowait": 60, "ApplicationLatencyP10": 60, "LoadAverage5min": 60, "ApplicationRequests5xx": 60, "ApplicationLatencyP75": 60, "CPUSystem": 60, "ApplicationRequests3xx": 60, "ApplicationRequests4xx": 60, "InstanceHealth": 60, "CPUSoftirq": 60 } }, "Version": 1 }

Na AWS CLI, você passa o documento como um valor da chave Value em um argumento de configurações de opção, que é um objeto JSON. Nesse caso, você deve escapar as aspas no documento incorporado.

$ aws elasticbeanstalk validate-configuration-settings --application-name my-app --environment-name my-env --option-settings '[ { "Namespace": "aws:elasticbeanstalk:healthreporting:system", "OptionName": "ConfigDocument", "Value": "{\"CloudWatchMetrics\": {\"Environment\": {\"ApplicationLatencyP99.9\": 60,\"InstancesSevere\": 60,\"ApplicationLatencyP90\": 60,\"ApplicationLatencyP99\": 60,\"ApplicationLatencyP95\": 60,\"InstancesUnknown\": 60,\"ApplicationLatencyP85\": 60,\"InstancesInfo\": 60,\"ApplicationRequests2xx\": 60,\"InstancesDegraded\": 60,\"InstancesWarning\": 60,\"ApplicationLatencyP50\": 60,\"ApplicationRequestsTotal\": 60,\"InstancesNoData\": 60,\"InstancesPending\": 60,\"ApplicationLatencyP10\": 60,\"ApplicationRequests5xx\": 60,\"ApplicationLatencyP75\": 60,\"InstancesOk\": 60,\"ApplicationRequests3xx\": 60,\"ApplicationRequests4xx\": 60},\"Instance\": {\"ApplicationLatencyP99.9\": 60,\"ApplicationLatencyP90\": 60,\"ApplicationLatencyP99\": 60,\"ApplicationLatencyP95\": 60,\"ApplicationLatencyP85\": 60,\"CPUUser\": 60,\"ApplicationRequests2xx\": 60,\"CPUIdle\": 60,\"ApplicationLatencyP50\": 60,\"ApplicationRequestsTotal\": 60,\"RootFilesystemUtil\": 60,\"LoadAverage1min\": 60,\"CPUIrq\": 60,\"CPUNice\": 60,\"CPUIowait\": 60,\"ApplicationLatencyP10\": 60,\"LoadAverage5min\": 60,\"ApplicationRequests5xx\": 60,\"ApplicationLatencyP75\": 60,\"CPUSystem\": 60,\"ApplicationRequests3xx\": 60,\"ApplicationRequests4xx\": 60,\"InstanceHealth\": 60,\"CPUSoftirq\": 60}},\"Version\": 1}" } ]'

Para um arquivo de configuração .ebextensions em YAML, você pode fornecer o documento JSON no estado em que está.

option_settings: - namespace: aws:elasticbeanstalk:healthreporting:system option_name: ConfigDocument value: { "CloudWatchMetrics": { "Environment": { "ApplicationLatencyP99.9": 60, "InstancesSevere": 60, "ApplicationLatencyP90": 60, "ApplicationLatencyP99": 60, "ApplicationLatencyP95": 60, "InstancesUnknown": 60, "ApplicationLatencyP85": 60, "InstancesInfo": 60, "ApplicationRequests2xx": 60, "InstancesDegraded": 60, "InstancesWarning": 60, "ApplicationLatencyP50": 60, "ApplicationRequestsTotal": 60, "InstancesNoData": 60, "InstancesPending": 60, "ApplicationLatencyP10": 60, "ApplicationRequests5xx": 60, "ApplicationLatencyP75": 60, "InstancesOk": 60, "ApplicationRequests3xx": 60, "ApplicationRequests4xx": 60 }, "Instance": { "ApplicationLatencyP99.9": 60, "ApplicationLatencyP90": 60, "ApplicationLatencyP99": 60, "ApplicationLatencyP95": 60, "ApplicationLatencyP85": 60, "CPUUser": 60, "ApplicationRequests2xx": 60, "CPUIdle": 60, "ApplicationLatencyP50": 60, "ApplicationRequestsTotal": 60, "RootFilesystemUtil": 60, "LoadAverage1min": 60, "CPUIrq": 60, "CPUNice": 60, "CPUIowait": 60, "ApplicationLatencyP10": 60, "LoadAverage5min": 60, "ApplicationRequests5xx": 60, "ApplicationLatencyP75": 60, "CPUSystem": 60, "ApplicationRequests3xx": 60, "ApplicationRequests4xx": 60, "InstanceHealth": 60, "CPUSoftirq": 60 } }, "Version": 1 }