Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Monitoramento dos logs de host do EC2 com ClickStack

Integração com uma instância EC2 existente

Esta seção aborda a instalação do OpenTelemetry Collector nas suas instâncias EC2 para coletar logs do sistema e enviá-los ao ClickStack com enriquecimento automático dos metadados da instância EC2. Essa arquitetura distribuída está pronta para produção e pode ser escalada para várias instâncias.

Se você quiser testar a integração de logs de host da EC2 antes de configurar sua instância de produção, pode usar nossa configuração pré-configurada e os dados de exemplo na seção "dataset de demonstração".

Pré-requisitos
  • Instância do ClickStack em execução (pode ser on-premises, na nuvem ou localmente)
  • Instância EC2 em execução (Ubuntu, Amazon Linux ou outra distribuição Linux)
  • Conectividade de rede entre a instância EC2 e o endpoint OTLP do ClickStack (porta 4318 para HTTP ou 4317 para gRPC)
  • Serviço de metadados da instância EC2 acessível (habilitado por padrão)

Verifique se os metadados do EC2 estão acessíveis

A partir da sua instância EC2, verifique se o serviço de metadados está acessível:

# Get metadata token (IMDSv2)
TOKEN=$(curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600")

# Verify instance metadata
curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/instance-id
curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/placement/region
curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/instance-type

Você deverá ver o ID da instância, a região e o tipo de instância. Se esses comandos falharem, verifique:

  • Se o serviço de metadados da instância está habilitado
  • Se o IMDSv2 não está bloqueado por grupos de segurança ou ACLs de rede
  • Se você está executando esses comandos na própria instância EC2

Verifique se os arquivos de syslog existem

Verifique se a sua instância EC2 está gravando os arquivos de syslog:

# Ubuntu instances
ls -la /var/log/syslog

# Amazon Linux / RHEL instances
ls -la /var/log/messages

# View recent entries
tail -20 /var/log/syslog
# or
tail -20 /var/log/messages

Instale o OpenTelemetry Collector

Instale a distribuição Contrib do OpenTelemetry Collector na instância EC2:

# Download the latest release
wget https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/v0.114.0/otelcol-contrib_0.114.0_linux_amd64.tar.gz

# Extract and install
tar -xvf otelcol-contrib_0.114.0_linux_amd64.tar.gz
sudo mv otelcol-contrib /usr/local/bin/

# Verify installation
otelcol-contrib --version

Criar configuração do collector

Crie um arquivo de configuração para o OpenTelemetry Collector em /etc/otelcol-contrib/config.yaml:

sudo mkdir -p /etc/otelcol-contrib

Escolha a configuração com base na sua distribuição Linux:

sudo tee /etc/otelcol-contrib/config.yaml > /dev/null << 'EOF'
receivers:
  filelog/syslog:
    include:
      - /var/log/syslog
      - /var/log/**/*.log
    start_at: end
    operators:
      - type: regex_parser
        regex: '^(?P<timestamp>\S+) (?P<hostname>\S+) (?P<unit>\S+?)(?:\[(?P<pid>\d+)\])?: (?P<message>.*)$'
        parse_from: body
        parse_to: attributes
      
      - type: time_parser
        parse_from: attributes.timestamp
        layout_type: gotime
        layout: '2006-01-02T15:04:05.999999-07:00'
      
      - type: add
        field: attributes.source
        value: "ec2-host-logs"

processors:
  resourcedetection:
    detectors: [ec2, system]
    timeout: 5s
    override: false
    ec2:
      tags:
        - ^Name
        - ^Environment
        - ^Team
  
  batch:
    timeout: 10s
    send_batch_size: 10000

exporters:
  otlphttp:
    endpoint: "http://YOUR_CLICKSTACK_HOST:4318"
    headers:
      authorization: "${env:CLICKSTACK_API_KEY}"

service:
  pipelines:
    logs:
      receivers: [filelog/syslog]
      processors: [resourcedetection, batch]
      exporters: [otlphttp]
EOF

Substitua o seguinte na configuração:

  • YOUR_CLICKSTACK_HOST: O hostname ou endereço IP em que o ClickStack está sendo executado
  • Para testes locais, você pode usar um túnel SSH (consulte a seção Solução de problemas)

Esta configuração:

  • Lê arquivos de log do sistema nos locais padrão (/var/log/syslog para Ubuntu, /var/log/messages para Amazon Linux/RHEL)
  • Analisa o formato syslog para extrair campos estruturados (timestamp, hostname, unidade/serviço, PID, mensagem)
  • Detecta e adiciona automaticamente metadados da EC2 com o processador resourcedetection
  • Inclui, opcionalmente, tags do EC2 (Name, Environment, Team), se houver
  • Envia logs para o ClickStack via HTTP OTLP

Defina a chave de API do ClickStack

Exporte sua chave de API do ClickStack como uma variável de ambiente:

export CLICKSTACK_API_KEY="your-api-key-here"

Para que isso persista após reinicializações, adicione ao perfil do seu shell:

echo 'export CLICKSTACK_API_KEY="your-api-key-here"' >> ~/.bashrc
source ~/.bashrc

Inicie o collector

Inicie o OpenTelemetry Collector:

CLICKSTACK_API_KEY="your-api-key-here" /usr/local/bin/otelcol-contrib --config /etc/otelcol-contrib/config.yaml

Verificando logs no HyperDX

Quando o coletor estiver em execução, entre no HyperDX e verifique se os logs estão chegando com metadados do EC2:

  1. Acesse a tela de busca
  2. Defina a fonte como Logs
  3. Filtre por source:ec2-host-logs
  4. Clique em uma entrada de log para expandi-la
  5. Verifique se os atributos de recurso incluem metadados do EC2:
    • cloud.provider
    • cloud.region
    • host.id (ID da instância)
    • host.type (tipo de instância)
    • cloud.availability_zone
Tela de busca de logs do EC2
Detalhes do log do EC2 mostrando metadados

dataset de demonstração

Para quem quiser testar a integração de logs de host do EC2 antes de configurar as instâncias de produção, fornecemos um conjunto de dados de exemplo com metadados simulados da instância EC2.

Baixe o conjunto de dados de exemplo

Baixe o arquivo de log de exemplo:

curl -O https://datasets-documentation.s3.eu-west-3.amazonaws.com/clickstack-integrations/host-logs/journal.log

O conjunto de dados inclui:

  • Sequência de inicialização do sistema
  • Atividade de login via SSH (tentativas bem-sucedidas e malsucedidas)
  • Incidente de segurança (ataque de força bruta com resposta do fail2ban)
  • Manutenção agendada (tarefas do cron, anacron)
  • Reinicializações de serviços (rsyslog)
  • Mensagens do kernel e atividade do firewall
  • Combinação de operações normais e eventos relevantes

Criar a configuração de teste do coletor

Crie um arquivo chamado ec2-host-logs-demo.yaml com a seguinte configuração:

cat > ec2-host-logs-demo.yaml << 'EOF'
receivers:
  filelog/journal:
    include:
      - /tmp/host-demo/journal.log
    start_at: beginning
    operators:
      - type: regex_parser
        regex: '^(?P<timestamp>\S+) (?P<hostname>\S+) (?P<unit>\S+?)(?:\[(?P<pid>\d+)\])?: (?P<message>.*)$'
        parse_from: body
        parse_to: attributes
      
      - type: time_parser
        parse_from: attributes.timestamp
        layout: '%Y-%m-%dT%H:%M:%S%z'
      
      - type: add
        field: attributes.source
        value: "ec2-demo"

processors:
  # Simulate EC2 metadata for demo (no real EC2 instance required)
  resource:
    attributes:
      - key: service.name
        value: "ec2-demo"
        action: insert
      - key: cloud.provider
        value: "aws"
        action: insert
      - key: cloud.platform
        value: "aws_ec2"
        action: insert
      - key: cloud.region
        value: "us-east-1"
        action: insert
      - key: cloud.availability_zone
        value: "us-east-1a"
        action: insert
      - key: host.id
        value: "i-0abc123def456789"
        action: insert
      - key: host.type
        value: "t3.medium"
        action: insert
      - key: host.name
        value: "prod-web-01"
        action: insert

service:
  pipelines:
    logs/ec2-demo:
      receivers: [filelog/journal]
      processors:
        - resource
        - memory_limiter
        - transform
        - batch
      exporters:
        - clickhouse
EOF

Execute o ClickStack com a configuração de demonstração

Execute o ClickStack com os logs e a configuração de demonstração:

docker run --name clickstack-demo \
  -p 8080:8080 -p 4317:4317 -p 4318:4318 \
  -e CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml \
  -v "$(pwd)/ec2-host-logs-demo.yaml:/etc/otelcol-contrib/custom.config.yaml:ro" \
  -v "$(pwd)/journal.log:/tmp/host-demo/journal.log:ro" \
  docker.hyperdx.io/hyperdx/hyperdx-all-in-one:latest

Verifique os logs no HyperDX

Quando o collector estiver em execução:

  1. Abra o HyperDX e entre na sua conta (talvez seja necessário criar uma conta primeiro)
  2. Acesse a Search view e defina a source como Logs
  3. Defina o intervalo de tempo como 2025-11-10 00:00:00 - 2025-11-13 00:00:00
  4. Filtre por source:ec2-demo
  5. Expanda uma entrada de log para ver os metadados da EC2 nos atributos de recurso
Search view de logs da EC2
detalhes do log da EC2 com metadados

Você deverá ver logs com contexto simulado da EC2, incluindo:

  • ID da instância: i-0abc123def456789
  • Região: us-east-1
  • Zona de disponibilidade: us-east-1a
  • Tipo de instância: t3.medium

Dashboards e visualizações

Para ajudar você a começar a monitorar logs de host do EC2 com o ClickStack, fornecemos visualizações essenciais com contexto de nuvem.

Baixar a configuração do dashboard

Importe o dashboard pré-configurado

  1. Abra o HyperDX e vá para a seção Dashboards
  2. Clique em Import Dashboard no canto superior direito, no menu de reticências
Botão Import Dashboard
  1. Faça upload do arquivo host-logs-dashboard.json e clique em Finish Import
Concluir importação

Visualize o dashboard

O dashboard será criado com todas as visualizações pré-configuradas:

Dashboard de logs do EC2

Você pode filtrar as visualizações do dashboard por contexto do EC2:

  • cloud.region:us-east-1 - Mostra logs de uma região específica
  • host.type:t3.medium - Filtra por tipo de instância
  • host.id:i-0abc123def456 - Logs de uma instância específica

Solução de problemas

Os metadados da instância EC2 não aparecem nos logs

Verifique se o serviço de metadados da instância EC2 está acessível:

# Obter token de metadados
TOKEN=$(curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600")

# Testar endpoint de metadados
curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/instance-id

Se isso falhar, verifique:

  • Se o serviço de metadados da instância está habilitado
  • Se o IMDSv2 não está bloqueado por grupos de segurança
  • Se você está executando o collector na própria instância EC2

Verifique os logs do collector em busca de erros de metadados:

# Se estiver executando como serviço systemd
sudo journalctl -u otelcol-contrib -f | grep -i "ec2\|metadata\|resourcedetection"

# Se estiver executando em primeiro plano, verifique o stdout

Nenhum log aparece no HyperDX

Verifique se os arquivos de syslog existem e estão sendo gravados:

ls -la /var/log/syslog /var/log/messages
tail -f /var/log/syslog

Verifique se o collector consegue ler os arquivos de log:

cat /var/log/syslog | head -20

Verifique a conexão de rede com o ClickStack:

# Testar o endpoint OTLP
curl -v http://YOUR_CLICKSTACK_HOST:4318/v1/logs

# Deve retornar uma resposta (mesmo que seja um erro, significa que o endpoint está acessível)

Verifique se há erros nos logs do collector:

# Se estiver executando em primeiro plano
# Procure mensagens de erro no stdout

# Se estiver executando como serviço systemd
sudo journalctl -u otelcol-contrib -f | grep -i "error\|failed"

Logs analisados incorretamente

Verifique o formato do seu syslog:

Para Ubuntu 24.04+:

# Deve exibir o formato ISO8601: 2025-11-17T20:55:44.826796+00:00
tail -5 /var/log/syslog

Para Amazon Linux 2 / Ubuntu 20.04:

# Deve exibir o formato tradicional: Nov 17 14:16:16
tail -5 /var/log/messages

Se o formato não corresponder ao seu caso, use a aba de configuração apropriada na seção Criar configuração do collector, com base na sua distribuição.

Collector não inicia como serviço systemd

Verifique o status do serviço:

sudo systemctl status otelcol-contrib

Veja logs detalhados:

sudo journalctl -u otelcol-contrib -n 50

Problemas comuns:

  • API key não configurada corretamente no ambiente
  • Erros de sintaxe no arquivo de configuração
  • Problemas de permissão ao ler arquivos de log

Próximos passos

  • Configure alertas para eventos críticos do sistema (falhas de serviço, falhas de autenticação, avisos de disco)
  • Filtre por atributos de metadados da instância EC2 (região, tipo de instância, ID da instância) para monitorar recursos específicos
  • Correlacione os logs de host do EC2 com os logs da aplicação para uma análise de problemas mais completa
  • Crie dashboards personalizados para monitoramento de segurança (tentativas de SSH, uso de sudo, bloqueios de firewall)

Colocando em produção

Este guia instala o OpenTelemetry Collector diretamente em instâncias EC2, que é o padrão de produção recomendado para monitoramento no nível do host. Para gerenciar coletores em várias instâncias, considere usar ferramentas de gerenciamento de configuração (Ansible, Chef, Puppet) ou o OpenTelemetry Operator em ambientes Kubernetes. Consulte Enviando dados do OpenTelemetry para a configuração de produção.

Navigation