Cenários comuns com o atendente do CloudWatch - Amazon CloudWatch

Cenários comuns com o atendente do CloudWatch

Esta seção fornece diferentes cenários que descrevem como concluir tarefas comuns de configuração e de personalização para o agente do CloudWatch.

Executar o atendente do CloudWatch como um usuário diferente

Em servidores Linux, o CloudWatch é executado como o usuário raiz por padrão. Para fazer com que o atendente seja executado como um usuário diferente, use o parâmetro run_as_user na seção do agent no arquivo de configuração do atendente do CloudWatch. Essa opção está disponível apenas em servidores Linux.

Se você já estiver executando o atendente com o usuário raiz e desejar passar a usar um usuário diferente, use um dos procedimentos a seguir.

Para executar o atendente do CloudWatch como um usuário diferente em uma instância do EC2 que executa o Linux
  1. Baixe e instale um novo pacote do atendente do CloudWatch. Para ter mais informações, consulte Baixar o pacote do atendente do CloudWatch.

  2. Crie um novo usuário do Linux ou utilize o usuário padrão chamado cwagent que o arquivo RPM ou DEB criou.

  3. Forneça as credenciais para esse usuário de uma das seguintes maneiras:

    • Se o arquivo .aws/credentials existir no diretório base do usuário raiz, seránecessário criar um arquivo de credenciais para o usuário que será usado para executar o atendente do CloudWatch. Esse arquivo de credenciais será /home/username/.aws/credentials. Depois defina o valor do parâmetro shared_credential_file no common-config.toml como o nome do caminho do arquivo de credenciais. Para ter mais informações, consulte (Opcional) Modificar a configuração comum para informações de proxy ou região.

    • Se o arquivo.aws/credentials não existir no diretório home do usuário raiz, você poderá seguir um destes procedimentos:

      • Crie um arquivo de credenciais para o usuário que será usado para executar o atendente do CloudWatch. Esse arquivo de credenciais será /home/username/.aws/credentials. Depois defina o valor do parâmetro shared_credential_file no common-config.toml como o nome do caminho do arquivo de credenciais. Para ter mais informações, consulte (Opcional) Modificar a configuração comum para informações de proxy ou região.

      • Em vez de criar um arquivo de credenciais, anexe uma função do IAM à instância. O atendente usa essa função como o provedor de credenciais.

  4. No arquivo de configuração do atendente do CloudWatch, adicione a seguinte linha à seção agent:

    "run_as_user": "username"

    Faça outras modificações no arquivo de configuração conforme necessário. Para ter mais informações, consulte Criar o arquivo de configuração do atendente do CloudWatch.

  5. Dê ao usuário as permissões necessárias. O usuário deve ter permissões de Leitura (r) para que os arquivos de log sejam coletados e ter permissão de Executar (x) em cada diretório no caminho dos arquivos de log.

  6. Inicie o atendente com o arquivo de configuração que você acabou de modificar.

    sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:configuration-file-path
Para executar o atendente do CloudWatch como um usuário diferente em um servidor on-premises que executa o Linux
  1. Baixe e instale um novo pacote do atendente do CloudWatch. Para ter mais informações, consulte Baixar o pacote do atendente do CloudWatch.

  2. Crie um novo usuário do Linux ou utilize o usuário padrão chamado cwagent que o arquivo RPM ou DEB criou.

  3. Armazene as credenciais desse usuário em um caminho que o usuário possa acessar, como /home/username/.aws/credentials.

  4. Defina o valor do parâmetro shared_credential_file em common-config.toml como o nome do caminho do arquivo de credenciais. Para ter mais informações, consulte (Opcional) Modificar a configuração comum para informações de proxy ou região.

  5. No arquivo de configuração do atendente do CloudWatch, adicione a seguinte linha à seção agent:

    "run_as_user": "username"

    Faça outras modificações no arquivo de configuração conforme necessário. Para ter mais informações, consulte Criar o arquivo de configuração do atendente do CloudWatch.

  6. Dê ao usuário permissões necessárias. O usuário deve ter permissões de Leitura (r) para que os arquivos de log sejam coletados e ter permissão de Executar (x) em cada diretório no caminho dos arquivos de log.

  7. Inicie o atendente com o arquivo de configuração que você acabou de modificar.

    sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:configuration-file-path

Como o atendente do CloudWatch lida com arquivos de log esparsos

Arquivos esparsos são arquivos com blocos vazios e conteúdo real. Um arquivo esparso usa espaço em disco de forma mais eficiente, escrevendo informações breves que representam os blocos vazios no disco em vez dos bytes nulos reais que compõem o bloco. Isso torna o tamanho real de um arquivo esparso geralmente muito menor do que seu tamanho aparente.

No entanto, o atendente do CloudWatch não trata arquivos esparsos de forma diferente do que trata arquivos normais. Quando o atendente lê um arquivo esparso, os blocos vazios são tratados como blocos “reais” preenchidos com bytes nulos. Por isso, o atendente do CloudWatch publica tantos bytes quanto o tamanho aparente de um arquivo esparso no CloudWatch.

Configurar o atendente do CloudWatch para publicar um arquivo esparso pode causar um aumento inesperado de custos do CloudWatch, então recomendamos não fazer isso. Por exemplo, /var/logs/lastlog no Linux geralmente é um arquivo muito esparso, e recomendamos não publicá-lo no CloudWatch.

Adicionar dimensões personalizadas a métricas coletadas pelo atendente do CloudWatch

Para adicionar dimensões personalizadas, como tags para métricas coletadas pelo atendente, adicione o campo append_dimensions à seção do arquivo de configuração do atendente que lista essas métricas.

Por exemplo, a seguinte seção de exemplo do arquivo de configuração adiciona uma dimensão personalizada chamada stackName com um valor de Prod para as métricas de cpu e disk coletadas pelo atendente.

"cpu":{ "resources":[ "*" ], "measurement":[ "cpu_usage_guest", "cpu_usage_nice", "cpu_usage_idle" ], "totalcpu":false, "append_dimensions":{ "stackName":"Prod" } }, "disk":{ "resources":[ "/", "/tmp" ], "measurement":[ "total", "used" ], "append_dimensions":{ "stackName":"Prod" } }

Lembre-se de que, sempre que você alterar o arquivo de configuração do atendente, deverá reiniciar o atendente para que as alterações entrem em vigor.

Vários arquivos de configuração do atendente CloudWatch

É possível configurar o agente do CloudWatch para usar vários arquivos de configuração em servidores Linux e Windows. Por exemplo, é possível usar um arquivo de configuração comum que coleta um conjunto de métricas, logs e rastreamentos que você sempre deseja coletar de todos os servidores em sua infraestrutura. Depois, você pode usar arquivos de configuração adicionais que coletam métricas de determinadas aplicações ou em certas situações.

Para configurar isso, primeiro crie os arquivos de configuração que você deseja usar. Todos os arquivos de configuração que serão usados em conjunto no mesmo servidor devem ter diferentes nomes de arquivos. É possível armazenar os arquivos de configuração em servidores ou no Parameter Store.

Inicie o atendente do CloudWatch usando a opção fetch-config e especifique o primeiro arquivo de configuração. Para anexar o segundo arquivo de configuração para o atendente em execução, use o mesmo comando, mas com a opção append-config. Todas as métricas, logs e rastreamentos listados no arquivo de configuração serão coletados. No exemplo a seguir, os comandos ilustram esse cenário usando armazenamentos de configurações como arquivos. A primeira linha inicia o atendente usando o arquivo de configuração de infrastructure.json, e a segunda linha acrescenta o arquivo de configuração app.json.

Use os comandos a seguir para Linux.

/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:/tmp/infrastructure.json
/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a append-config -m ec2 -s -c file:/tmp/app.json

Use os comandos a seguir para Windows Server.

& "C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1" -a fetch-config -m ec2 -s -c file:"C:\Program Files\Amazon\AmazonCloudWatchAgent\infrastructure.json"
& "C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1" -a append-config -m ec2 -s -c file:"C:\Program Files\Amazon\AmazonCloudWatchAgent\app.json"

No exemplo a seguir, arquivos de configuração ilustram um uso para esse recurso. O primeiro arquivo de configuração é usado para todos os servidores na infraestrutura, e o segundo recolhe apenas logs de um determinada aplicação e é anexado a servidores que executam essa aplicação.

infrastructure.json

{ "metrics": { "metrics_collected": { "cpu": { "resources": [ "*" ], "measurement": [ "usage_active" ], "totalcpu": true }, "mem": { "measurement": [ "used_percent" ] } } }, "logs": { "logs_collected": { "files": { "collect_list": [ { "file_path": "/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log", "log_group_name": "amazon-cloudwatch-agent.log" }, { "file_path": "/var/log/messages", "log_group_name": "/var/log/messages" } ] } } } }

app.json

{ "logs": { "logs_collected": { "files": { "collect_list": [ { "file_path": "/app/app.log*", "log_group_name": "/app/app.log" } ] } } } }

Todos os arquivos de configuração anexados à configuração devem ter nomes de arquivos que sejam diferentes entre si e do arquivo de configuração inicial. Se você usar append-config com um arquivo de configuração com o mesmo nome do arquivo que um arquivo de configuração que o atendente já está usando, o comando append substituirá as informações do primeiro arquivo de configuração, em vez de anexar a ele. Isso é verdade mesmo se dois arquivos de configuração com o mesmo nome de arquivo estejam em diferentes caminhos de arquivo.

O exemplo anterior mostra o uso de dois arquivos de configuração, mas não há um limite para o número de arquivos de configuração que você pode anexar à configuração do atendente. Também é possível combinar o uso de arquivos de configuração localizados em servidores e configurações localizadas no Parameter Store.

Agregar ou acumular métricas coletadas pelo atendente do CloudWatch

Para agregar ou acumular métricas coletadas pelo atendente, adicione um campo aggregation_dimensions à seção para essa métrica no arquivo de configuração do atendente.

Por exemplo, o seguinte trecho do arquivo de configuração acumula métricas na dimensão de AutoScalingGroupName. As métricas de todas as instâncias em cada grupo do Auto Scaling são agregadas e podem ser visualizadas como um todo.

"metrics": { "cpu":{...} "disk":{...} "aggregation_dimensions" : [["AutoScalingGroupName"]] }

Para acumular junto à combinação de cada dimensão InstanceId e InstanceType, além de acumular no nome do grupo do Auto Scaling, adicione o seguinte.

"metrics": { "cpu":{...} "disk":{...} "aggregation_dimensions" : [["AutoScalingGroupName"], ["InstanceId", "InstanceType"]] }

Para acumular métricas em apenas uma coleção, use [].

"metrics": { "cpu":{...} "disk":{...} "aggregation_dimensions" : [[]] }

Lembre-se de que, sempre que você alterar o arquivo de configuração do atendente, deverá reiniciar o atendente para que as alterações entrem em vigor.

Coletar métricas de alta resolução com o atendente do CloudWatch

O campo metrics_collection_interval especifica o intervalo de tempo para as métricas coletadas, em segundos. Ao especificar um valor menor do que 60 para esse campo, as métricas são coletadas como métricas de alta resolução.

Por exemplo, se todas as métricas devem ser de alta resolução e coletadas a cada 10 segundos, especifique 10 como o valor de metrics_collection_interval na seção agent como um intervalo de coleta de métricas global.

"agent": { "metrics_collection_interval": 10 }

Como alternativa, o exemplo a seguir define as métricas de cpu a serem coletadas a cada segundo, e todas as outras métricas são coletadas a cada minuto.

"agent":{ "metrics_collection_interval": 60 }, "metrics":{ "metrics_collected":{ "cpu":{ "resources":[ "*" ], "measurement":[ "cpu_usage_guest" ], "totalcpu":false, "metrics_collection_interval": 1 }, "disk":{ "resources":[ "/", "/tmp" ], "measurement":[ "total", "used" ] } } }

Lembre-se de que, sempre que você alterar o arquivo de configuração do atendente, deverá reiniciar o atendente para que as alterações entrem em vigor.

Envio de métricas, logs e rastreamentos a uma conta diferente

Para que o agente do CloudWatch envie as métricas, logs ou rastreamentos a uma conta diferente, especifique um parâmetro role_arn no arquivo de configuração do agente no servidor de envio. O valor role_arn especifica uma função do IAM na conta de destino que o atendente utiliza ao enviar dados à conta de destino. Essa função permite que a conta de envio assuma uma função correspondente na conta de destino ao entregar as métricas ou logs para a conta de destino.

Também é possível especificar strings role_arn separadas no arquivo de configuração do agente: uma para usar ao enviar métricas, outra para enviar logs e uma outra para enviar rastreamentos.

O exemplo a seguir de parte da seção agent do arquivo de configuração define o agente para usar CrossAccountAgentRole ao enviar dados para uma conta diferente.

{ "agent": { "credentials": { "role_arn": "arn:aws:iam::123456789012:role/CrossAccountAgentRole" } }, ..... }

Como alternativa, o exemplo a seguir define perfis diferentes para a conta de envio a ser usada para o envio de métricas, logs e rastreamentos:

"metrics": { "credentials": { "role_arn": "RoleToSendMetrics" }, "metrics_collected": {....
"logs": { "credentials": { "role_arn": "RoleToSendLogs" }, ....

Políticas necessárias

Ao especificar um role_arn no arquivo de configuração do atendente, você também deve garantir que as funções do IAM de contas de envio e de destino tenham determinadas políticas. As funções nas contas de envio e de destino devem ter CloudWatchAgentServerPolicy. Para obter mais informações sobre como atribuir essa política a uma função, consulte Criar funções do IAM a serem usadas com o atendente do CloudWatch em instâncias do Amazon EC2.

A função na conta de envio também deverá incluir a seguinte política. Você adiciona essa política na guia Permissions (Permissões) do console do IAM ao editar a função.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Resource": [ "arn:aws:iam::target-account-ID:role/agent-role-in-target-account" ] } ] }

A função na conta de destino deverá incluir a política a seguir para que ela reconheça a função do IAM usada pela conta de envio. Você inclui essa política na guia Trust relationships (Relações de confiança) do console do IAM ao editar a função. A função na conta de destino em que você adiciona essa política é a função que você criou em Criar funções e usuários do IAM para uso com o atendente do CloudWatch. Essa função é a função especificada em agent-role-in-target-account na política usada pela conta de envio.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::sending-account-ID:role/role-in-sender-account" ] }, "Action": "sts:AssumeRole" } ] }

Diferenças de carimbo de data/hora entre o atendente unificado do CloudWatch e o atendente mais antigo do CloudWatch Logs

O atendente do CloudWatch oferece suporte a um conjunto diferente de símbolos para formatos de carimbo de data/hora, em comparação com o atendente do CloudWatch Logs mais antigo. Essas diferenças são mostradas na tabela a seguir.

Símbolos compatíveis com os dois atendentes Símbolos compatíveis somente com o atendente unificado do CloudWatch Símbolos compatíveis somente com o atendente mais antigo do CloudWatch Logs

%A, %a, %b, %B, %d, %f, %H, %l, %m, %M, %p, %S, %y, %Y, %Z, %z

%-d, %-l, %-m, %-M, %-S

%c,%j, %U, %W, %w

Para obter mais informações sobre os significados dos símbolos compatíveis com o novo atendente do CloudWatch, consulte Arquivo de configuração do atendente do CloudWatch: seção Logs no Manual do usuário do Amazon CloudWatch. Para obter informações sobre os significados dos símbolos compatíveis com o atendente do CloudWatch Logs, consulte Arquivo de configuração do atendente no Manual do usuário do Amazon CloudWatch Logs.