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
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.
Tópicos
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
-
InstancesSevereInstancesDegradedInstancesWarningInstancesInfoInstancesOkInstancesPendingInstancesUnknownInstancesNoData-
Ambiente apenas. Essas métricas indicam o número de instâncias no ambiente com cada status de integridade.
InstancesNoDataindica o número de instâncias para as quais não há dados recebidos. ApplicationRequestsTotalApplicationRequests5xxApplicationRequests4xxApplicationRequests3xxApplicationRequests2xx-
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.
ApplicationLatencyP10ApplicationLatencyP50ApplicationLatencyP75ApplicationLatencyP85ApplicationLatencyP90ApplicationLatencyP95ApplicationLatencyP99ApplicationLatencyP99.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
CPUIrqCPUIdleCPUUserCPUSystemCPUSoftirqCPUIowaitCPUNice-
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
CPUIdleCPUUserCPUPrivileged-
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
Abra o console do Elastic Beanstalk
e, na lista Regions (Regiões), selecione a sua Região da AWS. -
No painel de navegação, selecione Ambientes e selecione o nome do ambiente na lista.
No painel de navegação, escolha Configuration (Configuração).
-
Na categoria de configuração Monitoring (Monitoramento), escolha Edit (Editar).
-
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.
-
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
-
Inicialize a pasta do projeto com eb init.
-
Crie um ambiente executando o comando eb create.
-
Salve um modelo de configuração localmente, executando o comando eb config save. O exemplo a seguir usa a opção
--cfgpara especificar o nome da configuração.$eb config save --cfgConfiguration saved at: ~/project/.elasticbeanstalk/saved_configs/01-base-state.cfg.yml01-base-state -
Abra o arquivo de configuração salvo em um editor de texto.
-
Em
OptionSettings>aws:elasticbeanstalk:healthreporting:system:, adicione uma chaveConfigDocumentpara habilitar cada uma das métricas do CloudWatch desejadas. Por exemplo,ConfigDocumentpublica as métricasApplicationRequests5xxeApplicationRequests4xxno nível de ambiente e as métricasApplicationRequestsTotalno nível de instância.OptionSettings: ... aws:elasticbeanstalk:healthreporting:system:ConfigDocument: CloudWatchMetrics: Environment: ApplicationRequests5xx: 60 ApplicationRequests4xx: 60 Instance: ApplicationRequestsTotal: 60 Version: 1SystemType: enhanced ...No exemplo, 60 indica o número de segundos entre as medidas. No momento, este é o único valor aceito.
nota
É possível combinar
CloudWatchMetricseRulesna mesma configuração da opçãoConfigDocument.Rulessão descritas em Configurar as regras de integridade aperfeiçoada de um ambiente.Se você tiver usado
Rulesanteriormente para configurar as regras de integridade aprimorada, o arquivo de configuração recuperado por meio do comando eb config save já terá uma chaveConfigDocumentcom uma seçãoRules. Não o exclua, em vez disso, adicione uma seçãoCloudWatchMetricsno mesmo valor da opçãoConfigDocument. -
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. -
Use o comando eb config put para fazer upload do arquivo de configuração atualizado no Elastic Beanstalk.
$eb config put02-cloudwatch-enabledAo usar os comandos eb config
geteputcom configurações salvas, não inclua a extensão de arquivo. -
Aplique a configuração salva ao ambiente em execução.
$eb config --cfg02-cloudwatch-enabledA opção
--cfgespecifica 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
}