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.

  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 obter mais informações, consulte Instalar o agente do CloudWatch usando o AWS Systems Manager.

    • 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 obter mais informações, consulte Instalar o agente do CloudWatch usando o AWS Systems Manager.

      • 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 obter 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.

  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 obter mais informações, consulte Instalar o agente do CloudWatch usando o AWS Systems Manager.

  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 obter 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.

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 Pré-requisitos.

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.

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Resource": [ "arn:aws:iam::111122223333: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. Essa função é a função especificada em agent-role-in-target-account na política usada pela conta de envio.

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

Diferenças de carimbo de data e hora entre o agente do CloudWatch e o agente anterior 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 unicamente com o agente 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.

Anexar arquivos de configuração do coletor do OpenTelemetry

O agente do CloudWatch é compatível com os arquivos de configuração suplementares do coletor do OpenTelemetry junto com seus próprios arquivos de configuração. Esse recurso permite que você use os recursos do agente do CloudWatch, como o CloudWatch Application Signals ou o Container Insights, por meio da configuração do agente do CloudWatch, e inclua a configuração existente do coletor do OpenTelemetry com um único agente.

Para evitar conflitos de mesclagem com pipelines criados automaticamente pelo agente do CloudWatch, recomendamos que você adicione um sufixo personalizado a cada um dos componentes e pipelines na configuração do coletor do OpenTelemetry.

receivers: otlp/custom-suffix: protocols: http: exporters: awscloudwatchlogs/custom-suffix: log_group_name: "test-group" log_stream_name: "test-stream" service: pipelines: logs/custom-suffix: receivers: [otlp/custom-suffix] exporters: [awscloudwatchlogs/custom-suffix]

Para configurar o agente do CloudWatch, inicie-o usando a opção fetch-config e especifique o arquivo de configuração do agente do CloudWatch. O agente do CloudWatch exige pelo menos um arquivo de configuração do agente do CloudWatch.

/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -c file:/tmp/agent.json -s

Em seguida, use a opção append-config ao especificar o arquivo de configuração do coletor do OpenTelemetry.

/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a append-config -c file:/tmp/otel.yaml -s

O agente mescla os dois arquivos de configuração na inicialização e registra em log a configuração resolvida.