Amazon CloudWatch Logs
Guia do usuário

Início rápido: instalar o agente do CloudWatch Logs usando o AWS OpsWorks e o Chef

Você pode instalar o agente do CloudWatch Logs e criar fluxos de logs usando o AWS OpsWorks e o Chef, que é uma ferramenta de automação de sistemas e infraestrutura em nuvem de terceiros. O Chef usa "receitas", que você grava para instalar e configurar o software em seu computador, e "livros de receitas", que são coleções de receitas, para executar suas tarefas de configuração e distribuição de políticas. Para obter mais informações, consulte Chef.

Os exemplos de receitas do Chef a seguir mostram como monitorar um arquivo de log em cada instância do EC2. As receitas usam o nome da pilha como o grupo de logs e o nome de host da instância como o nome do stream de logs. Para monitorar vários arquivos de log, você precisa estender as receitas para criar vários grupos e fluxos de logs.

Etapa 1: Criar receitas personalizadas

Crie um repositório para armazenar suas receitas. O AWS OpsWorks oferece suporte ao Git e ao Subversion, ou você pode armazenar um arquivo no Amazon S3. A estrutura do repositório do livro de receitas é descrita em Repositórios de livros de receitas no AWS OpsWorks User Guide. Os exemplos a seguir presumem que o livro de receitas seja denominado logs. A receita install.rb instala o agente do CloudWatch Logs. Você também pode fazer download do exemplo de livro de receitas (CloudWatchLogs-Cookbooks.zip).

Crie um arquivo chamado metadata.rb que contém o código a seguir:

#metadata.rb name 'logs' version '0.0.1'

Crie o arquivo de configuração do CloudWatch Logs:

#config.rb template "/tmp/cwlogs.cfg" do cookbook "logs" source "cwlogs.cfg.erb" owner "root" group "root" mode 0644 end

Faça download e instale o agente do CloudWatch Logs:

# install.rb directory "/opt/aws/cloudwatch" do recursive true end remote_file "/opt/aws/cloudwatch/awslogs-agent-setup.py" do source "https://s3.amazonaws.com//aws-cloudwatch/downloads/latest/awslogs-agent-setup.py" mode "0755" end execute "Install CloudWatch Logs agent" do command "/opt/aws/cloudwatch/awslogs-agent-setup.py -n -r region -c /tmp/cwlogs.cfg" not_if { system "pgrep -f aws-logs-agent-setup" } end

nota

No exemplo acima, substitua região por um dos seguintes: us-east-1, us-west-1, us-west-2, ap-south-1, ap-northeast-2, ap-southeast-1, ap-southeast-2, ap-northeast-1, eu-central-1, eu-west-1, or sa-east-1.

Se a instalação do agente falhar, verifique se o pacote python-dev está instalado. Se não estiver, use o comando a seguir e, em seguida, tente outra vez a instalação do agente:

sudo apt-get -y install python-dev

Essa receita usa um arquivo de modelo cwlogs.cfg.erb que você pode modificar para especificar vários atributos, como quais arquivos registrar. Para obter mais informações sobre esses atributos, consulte Referência do agente do CloudWatch Logs.

[general] # Path to the AWSLogs agent's state file. Agent uses this file to maintain # client side state across its executions. state_file = /var/awslogs/state/agent-state ## Each log file is defined in its own section. The section name doesn't ## matter as long as its unique within this file. # #[kern.log] # ## Path of log file for the agent to monitor and upload. # #file = /var/log/kern.log # ## Name of the destination log group. # #log_group_name = kern.log # ## Name of the destination log stream. # #log_stream_name = {instance_id} # ## Format specifier for timestamp parsing. # #datetime_format = %b %d %H:%M:%S # # [<%= node[:opsworks][:stack][:name] %>] datetime_format = [%Y-%m-%d %H:%M:%S] log_group_name = <%= node[:opsworks][:stack][:name].gsub(' ','_') %> file = <%= node[:cwlogs][:logfile] %> log_stream_name = <%= node[:opsworks][:instance][:hostname] %>

O modelo obtém o nome da pilha e o nome de host consultando os atributos correspondentes na configuração de pilha e no JSON de implantação. O atributo que especifica o arquivo a ser registrado é definido no arquivo de atributos default.rb do livro de receitas (logs/atributos/default.rb).

default[:cwlogs][:logfile] = '/var/log/aws/opsworks/opsworks-agent.statistics.log'

Etapa 2: criar uma pilha do AWS OpsWorks

  1. Abra o console do AWS OpsWorks em https://console.aws.amazon.com/opsworks/.

  2. Em OpsWorks Dashboard (Painel do OpsWorks), escolha Add stack (Adicionar pilha) para criar uma pilha do AWS OpsWorks.

  3. Na tela Adicionar pilha, escolha Pilha do Chef 11.

  4. Em Nome da pilha, digite um nome.

  5. Em Usar livros de receitas personalizadas do Chef, escolha Sim.

  6. Em Tipo de repositório, selecione o tipo de repositório que você usa. Se você estiver usando o exemplo acima, escolha Arquivo Http.

  7. Em URL de repositório, insira o repositório onde você armazenou o livro de receitas criado na etapa anterior. Se você estiver usando o exemplo acima, insira https://s3.amazonaws.com//aws-cloudwatch/downloads/CloudWatchLogs-Cookbooks.zip.

  8. Selecione Criar para criar uma pilha.

Etapa 3: estender sua função do IAM

Para usar o CloudWatch Logs com suas instâncias do AWS OpsWorks, você precisa estender a função do IAM usada por suas instâncias.

  1. Abra o console do IAM em https://console.aws.amazon.com/iam/.

  2. No painel de navegação, escolha Políticas, Criar política.

  3. Na página Criar política, em Criar sua própria política, escolha Selecionar. Para obter mais informações sobre a criação de políticas personalizadas, consulte Políticas do IAM para o Amazon EC2 no Guia do usuário do Amazon EC2 para instâncias do Linux.

  4. Na página Revisar política, em Nome da política, digite um nome para a política.

  5. Em Documento da política, cole a política a seguir:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:*:*:*" ] } ] }
  6. Selecione Create Policy (Criar política).

  7. No painel de navegação, escolha Roles (Funções) e, em seguida, no painel de conteúdo, em Role Name (Nome da função), selecione o nome da função da instância usada por sua pilha do AWS OpsWorks. Você pode encontrar a usada pela sua pilha nas configurações da pilha (o padrão é aws-opsworks-ec2-role).

    nota

    Escolha o nome da função, não a caixa de seleção.

  8. Na guia Permissões, em Políticas gerenciadas, selecione Anexar política.

  9. Na página Anexar política, no cabeçalho da tabela (ao lado de Filtro e Pesquisar), escolha Tipo de política, Políticas gerenciadas pelo cliente.

  10. Em Customer Managed Policies (Políticas gerenciadas pelo cliente), selecione a política do IAM que você criou acima e escolha Attach Policy (Anexar política).

    Para obter mais informações sobre políticas e usuários do IAM, consulte Usuários e grupos do IAM e Gerenciamento de políticas do IAM no Guia do usuário do IAM.

Etapa 4: Adicionar uma camada

  1. Abra o console do AWS OpsWorks em https://console.aws.amazon.com/opsworks/.

  2. No painel de navegação, escolha Layers (Camadas).

  3. No painel de conteúdo, selecione uma camada e escolha Adicionar camada.

  4. Na guia OpsWorks, em Tipo de camada, escolha Personalizar.

  5. Nos campos Nome e Nome curto, digite os nomes longo e curto da camada. Em seguida, escolha Adicionar camada.

  6. Na guia Recipes (Receitas), em Custom Chef Recipes (Receitas personalizadas do Chef), há vários títulos – Setup (Instalar), Configure (Configurar), Deploy (Implantar), Undeploy (Cancelar implantação) e Shutdown (Encerrar) – que correspondem aos eventos de ciclo de vida do AWS OpsWorks. O AWS OpsWorks aciona esses eventos nos pontos chave no ciclo de vida da instância que executa as receitas associadas.

    nota

    Se os títulos acima não estiverem visíveis, em Receitas personalizadas do chef, escolha editar.

  7. Digite logs::config, logs::install próximo de Configuração, escolha + para adicioná-lo à lista e escolha Salvar.

    O AWS OpsWorks executa essa receita em cada uma das novas instâncias nessa camada, logo depois que a instância é inicializada.

Etapa 5: Adicionar uma instância

A camada só controla como configurar instâncias. Agora, é preciso adicionar algumas instâncias à camada e iniciá-las.

  1. Abra o console do AWS OpsWorks em https://console.aws.amazon.com/opsworks/.

  2. No painel de navegação, selecione Instâncias e, na sua camada, selecione + Instância.

  3. Aceite as configurações padrão e escolha Adicionar instância para adicionar a instância à camada.

  4. Na coluna Ações da linha, clique em iniciar para iniciar a instância.

    O AWS OpsWorks inicia uma nova instância do EC2 e configura o CloudWatch Logs. O status da instância mudará para online quando estiver pronta.

Etapa 6: Visualizar seus logs

Você deve ver o grupo de logs recém-criado e o fluxo de logs no console do CloudWatch depois de alguns minutos de execução do agente.

Para obter mais informações, consulte Visualizar os dados de log enviados para o CloudWatch Logs.