Configurar o Amazon CloudWatch Logs para Run Command - AWS Systems Manager

Configurar o Amazon CloudWatch Logs para Run Command

Quando você envia um comando usando o Run Command, um recurso do AWS Systems Manager, é possível especificar para onde deseja enviar a saída do comando. Por padrão, o Systems Manager retorna apenas os primeiros 24.000 caracteres do resultado do comando. Se quiser visualizar os detalhes completos da saída do comando, você pode especificar um bucket do Amazon Simple Storage Service (Amazon S3). Ou você pode especificar o Amazon CloudWatch Logs. Se você especificar o CloudWatch Logs, o Run Command envia periodicamente todos os logs de erros e saídas de comandos para o CloudWatch Logs. Você pode monitorar os logs de saída quase em tempo real, pesquisar frases, valores ou padrões específicos e criar alarmes com base na pesquisa.

Se você configurou seu nó gerenciado para usar as políticas gerenciadas do AWS Identity and Access Management (IAM) AmazonSSMManagedInstanceCore e CloudWatchAgentServerPolicy, seu nó não requer configuração adicional para enviar saída ao CloudWatch Logs. Selecione essa opção se estiver enviando comandos do console ou adicione a seção cloud-watch-output-config e parâmetro CloudWatchOutputEnabled, se estiver usando a AWS Command Line Interface (AWS CLI), o AWS Tools for Windows PowerShell ou uma ação de API. A seção cloud-watch-output-config e o parâmetro CloudWatchOutputEnabled são descritos em mais detalhes posteriormente neste tópico.

Para obter informações sobre como adicionar políticas a um perfil de instância para instâncias do EC2, consulte Configurar permissões de instância obrigatórias para o Systems Manager. Para obter informações sobre como adicionar políticas a um perfil de serviço para servidores on-premises e máquinas virtuais que você planeja usar como nós gerenciados, consulte Criar o perfil de serviço do IAM obrigatório para o Systems Manager em ambientes híbridos e multinuvem.

Se você estiver usando uma política personalizada em seus nós, atualize a política em cada nó para permitir que o Systems Manager envie a saída e os logs para o CloudWatch Logs. Adicione os seguintes objetos de política para a sua política personalizada. Para obter mais informações sobre como atualizar uma política do IAM, consulte Editar políticas do IAM no Manual do usuário do IAM.

{ "Effect": "Allow", "Action": "logs:DescribeLogGroups", "Resource": "*" }, { "Effect":"Allow", "Action":[ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogStreams", "logs:PutLogEvents" ], "Resource":"arn:aws:logs:*:*:log-group:/aws/ssm/*" },

Especificar o CloudWatch Logs ao enviar comandos

Para especificar o CloudWatch Logs como a saída quando você enviar um comando a partir do AWS Management Console, escolha CloudWatch Output (Saída do CloudWatch) na seção Output options (Opções de saída). Opcionalmente, você pode especificar o nome do grupo do CloudWatch Logs para onde você deseja enviar uma saída de comando. Se você não especificar um nome de grupo, o Systems Manager cria automaticamente um grupo de logs para você. O grupo de logs usa o seguinte formato de nomenclatura: /aws/ssm/SystemsManagerDocumentName.

Se você executar comandos usando a AWS CLI, você deve especificar a seção cloud-watch-output-config no seu comando. Esta seção permite que você especifique o parâmetro CloudWatchOutputEnabled e, opcionalmente, o parâmetro CloudWatchLogGroupName. Aqui está um exemplo.

Linux & macOS
aws ssm send-command \ --instance-ids "instance ID" \ --document-name "AWS-RunShellScript" \ --parameters "commands=echo helloWorld" \ --cloud-watch-output-config "CloudWatchOutputEnabled=true,CloudWatchLogGroupName=log group name"
Windows
aws ssm send-command ^ --document-name "AWS-RunPowerShellScript" ^ --parameters commands=["echo helloWorld"] ^ --targets "Key=instanceids,Values=an instance ID” ^ --cloud-watch-output-config '{"CloudWatchLogGroupName":"log group name","CloudWatchOutputEnabled":true}'

Visualizar a saída de comandos no CloudWatch Logs

Assim que o comando começar a ser executado, o Systems Manager enviará o resultado para o CloudWatch Logs praticamente em tempo real. A saída no CloudWatch Logs usa o seguinte formato:

CommandID/InstanceID/PluginID/stdout

CommandID/InstanceID/PluginID/stderr

O resultado da execução é carregado a cada 30 segundos ou quando o buffer exceder 200 KB, o que acontecer primeiro.

nota

Fluxos de log são criados somente quando os dados de saída são disponibilizados. Por exemplo, se não houver dados de erro para uma execução, o stream stderr não é criado.

Veja a seguir um exemplo de saída do comando como ela é exibida no CloudWatch Logs.

Group - /aws/ssm/AWS-RunShellScript
Streams – 
1234-567-8910/i-abcd-efg-hijk/AWS-RunPowerShellScript/stdout
24/1234-567-8910/i-abcd-efg-hijk/AWS-RunPowerShellScript/stderr