Elven Observability: Instalando OpentTelemetry Collector em uma EC2

Pré-requisitos

  • Conta AWS
  • Organization cadastrada na Elven Observability

Configure a EC2

Caso necessite configurar uma EC2, verifique a documentação da AWS, porém antes de concluir a criação, certifique-se de:

  • Realizar a configuração do User Data, conforme a ceção Configurando o User Data da EC2
  • Habilitar tráfego de entrada para TCP 4318 e TCP 4317 no security group.
  • Habilitar o IP público.

Configurando o User Data da EC2

Para automatizar a configuração do OpenTelemetry Collector, isto é, não precisar se conectar na máquina e realizar cada passo  manualmente, é possível utilizar o campo de “User Data” que será um script executado ao inicializar a máquina.

  1. Crie uma cópia do script user_data.sh, e edite-a, substituindo o <TENANT_ID> pelo nome da organização, que será igual ao valor em X-Scope-OrgId: <TENANT_ID-here> e <YOUR-TOKEN> pelo valor em Authorization: Bearer <YOUR-TOKEN-here>, ambos fornecidos ao realizar o cadastro da organization pelo time da Elven Works.

  2. Copie o script editado dentro do campo User Data, na seção Advanced Details durante a criação da EC2:

				
					#!/bin/bash

# Update packages and install Docker
apt-get update -y
apt-get install docker.io -y

# Add the ubuntu user to the docker group
usermod -aG docker $USER

# Create the otel-config.yaml file
cat <<EOF > /home/ubuntu/otel-config.yaml
receivers:
  otlp:
    protocols:
      grpc:
        endpoint: "0.0.0.0:4317"
      http:
        endpoint: "0.0.0.0:4318"

exporters:
  otlphttp:
    endpoint: https://tempo.elvenobservability.com/http
    headers:
      X-Scope-OrgID: "<TENANT_ID>"
      Authorization: "Bearer <your-token>"

  prometheusremotewrite:
    endpoint: https://mimir.elvenobservability.com/api/v1/push
    headers:
      X-Scope-OrgID: "<TENANT_ID>"
      Authorization: "Bearer <your-token>"

  loki:
    endpoint: "http://loki.elvenobservability.com/loki/api/v1/push"
    default_labels_enabled:
      exporter: false
      job: true
    headers:
      X-Scope-OrgID: "<TENANT_ID>"
      Authorization: "Bearer <your-token>"

processors:
  batch: {}
  resource:
    attributes:
    - action: insert
      key: loki.tenant
      value: host.name
  filter:
    metrics:
      exclude:
        match_type: regexp
        metric_names:
          - "go_.*"
          - "scrape_.*"
          - "otlp_.*"
          - "promhttp_.*"

service:
  pipelines:
    metrics:
      receivers: [otlp]
      processors: [batch, filter]
      exporters: [prometheusremotewrite]
    traces:
      receivers: [otlp]
      processors: [batch]
      exporters: [otlphttp]
    logs:
      receivers: [otlp]
      processors: [resource, batch]
      exporters: [loki]
EOF


# Run Otel Collector Contrib using Docker
docker run -d --name otel-collector-contrib \
  -p 4317:4317 -p 4318:4318 \
  -v /home/ubuntu/otel-config.yaml:/etc/otel-config.yaml:ro \
  otel/opentelemetry-collector-contrib:latest \
  --config /etc/otel-config.yaml

# Configure Docker to automatically start on boot
sudo systemctl enable docker 
				
			
Rolar para cima