Configuração da camada Lambda do Collector

Adicione e configure a camada Lambda do Collector à sua função Lambda

A comunidade OpenTelemetry disponibiliza o Collector em uma camada Lambda separada das camadas de instrumentação, dando aos usuários o máximo de flexibilidade. Isso é diferente da implementação atual do AWS Distribution of OpenTelemetry (ADOT), que reúne a instrumentação e o Collector em um só pacote.

Adicione o ARN da camada Lambda do OTel Collector

Depois de instrumentar sua aplicação, adicione a camada Lambda do Collector para coletar e enviar seus dados ao backend escolhido.

Encontre o lançamento mais recente da camada do Collector e use o respectivo ARN após substituir a tag <region> pela região onde seu Lambda está localizado.

Observação: as camadas Lambda são um recurso regionalizado, ou seja, só podem ser usadas na região em que foram publicadas. Certifique-se de usar a camada na mesma região das suas funções Lambda. A comunidade publica camadas em todas as regiões disponíveis.

Configure o OTel Collector

A configuração da camada Lambda do OTel Collector segue o padrão do OpenTelemetry.

Por padrão, a camada Lambda do OTel Collector usa o arquivo config.yaml.

Configure a variável de ambiente do seu backend preferido

Nas configurações de variáveis de ambiente do Lambda, crie uma nova variável para armazenar seu token de autorização.

Atualize os exporters padrão

No arquivo config.yaml, adicione seu(s) exportador(es) preferido(s), caso ainda não estejam presentes. Configure o(s) exportador(es) com as variáveis de ambiente definidas para os tokens de acesso na etapa anterior.

Sem uma variável de ambiente definida para os exportadores, a configuração padrão só permite exportar dados usando o exportador debug. Veja a configuração padrão:

receivers:
  otlp:
    protocols:
      grpc:
        endpoint: '0.0.0.0:4317'
      http:
        endpoint: '0.0.0.0:4318'

exporters:
  # NOTE: Prior to v0.86.0 use `logging` instead of `debug`.
  debug:
    verbosity: detailed

service:
  pipelines:
    traces:
      receivers: [otlp]
      exporters: [debug]
    metrics:
      receivers: [otlp]
      exporters: [debug]
  telemetry:
    metrics:
      address: localhost:8888

Publique seu Lambda

Publique uma nova versão do seu Lambda para habilitar as alterações feitas.

Configuração avançada do OTel Collector

Confira a lista de componentes disponíveis com suporte para configuração personalizada. Para habilitar depuração, defina o nível de log como debug no arquivo de configuração. Veja o exemplo abaixo.

Escolha seu provedor confmap preferido

As camadas Lambda do OTel oferecem suporte aos seguintes tipos de provedores confmap: file, env, yaml, http, https e s3. Para personalizar a configuração do OTel Collector usando diferentes provedores confmap e outras informações, consulte a documentação de provedores confmap do Amazon Distribution of OpenTelemetry.

Crie um arquivo de configuração personalizado

Veja um exemplo de arquivo de configuração collector.yaml no diretório raiz:

#collector.yaml in the root directory
#Set an environment variable 'OPENTELEMETRY_COLLECTOR_CONFIG_URI' to '/var/task/collector.yaml'

receivers:
  otlp:
    protocols:
      grpc:
        endpoint: 'localhost:4317'
      http:
        endpoint: 'localhost:4318'

exporters:
  # NOTE: Prior to v0.86.0 use `logging` instead of `debug`.
  debug:
  awsxray:

service:
  pipelines:
    traces:
      receivers: [otlp]
      exporters: [awsxray]
    metrics:
      receivers: [otlp]
      exporters: [debug]
  telemetry:
    metrics:
      address: localhost:8888

Mapeie seu arquivo de configuração personalizado usando variáveis de ambiente

Depois de definir a configuração do Collector por meio de um provedor confmap, crie uma variável de ambiente na sua função Lambda chamada OPENTELEMETRY_COLLECTOR_CONFIG_URI e defina como valor o caminho da configuração de acordo com o provedor confmap usado. Por exemplo, se você estiver usando um provedor confmap do tipo file, defina o valor como /var/task/<path>/<to>/<filename>. Isso indica à extensão onde encontrar a configuração do Collector.

Configuração personalizada do Collector usando a CLI

Você pode definir isso pelo console da AWS ou pela AWS CLI.

aws lambda update-function-configuration --function-name Function --environment Variables={OPENTELEMETRY_COLLECTOR_CONFIG_URI=/var/task/collector.yaml}

Defina variáveis de ambiente de configuração a partir do CloudFormation

Também é possível configurar variáveis de ambiente por meio de um template do CloudFormation:

Function:
  Type: AWS::Serverless::Function
  Properties:
    ...
    Environment:
      Variables:
        OPENTELEMETRY_COLLECTOR_CONFIG_URI: /var/task/collector.yaml

Carregue a configuração a partir de um objeto do S3

Para carregar a configuração a partir do S3, a role do IAM associada à sua função precisa incluir acesso de leitura ao bucket correspondente.

Function:
  Type: AWS::Serverless::Function
  Properties:
    ...
    Environment:
      Variables:
        OPENTELEMETRY_COLLECTOR_CONFIG_URI: s3://<bucket_name>.s3.<region>.amazonaws.com/collector_config.yaml