OpenTelemetry Collector Contrib - Amazon CloudWatch

OpenTelemetry Collector Contrib

Você pode usar o OpenTelemetry Collector Contrib para começar a usar o OpenTelemetry no CloudWatch.

Pré-requisito

Certifique-se de que Transaction Search esteja habilitado no CloudWatch. Para obter mais informações, consulte Transaction Search.

Fazer download do OpenTelemetry Collector Contrib

Faça o download da versão mais recente da distribuição do OpenTelemetry Collector Contrib.

Instalar o OpenTelemetry Collector Contrib

Instale o OpenTelemetry Collector Contrib em qualquer sistema operacional e plataforma. Para obter mais informações, consulte Install the Collector.

Configurar as credenciais da AWS nos hosts do Amazon EC2 ou on-premises

Você pode configurar as credenciais da AWS nos hosts do Amazon EC2 ou on-premises.

Setup IAM permissions for Amazon EC2
Siga o procedimento abaixo para anexar a política CloudWatchAgentServerPolicy do IAM ao perfil do IAM da instância do Amazon EC2.
  1. Abra o console do IAM, em https://console.aws.amazon.com/iam/.

  2. Escolha Perfis e localize e selecione o perfil usado pela instância do Amazon EC2.

  3. Na guia Permissões, escolha Adicionar permissões e Anexar políticas.

  4. Usando a caixa de pesquisa, pesquise a política CloudWatchAgentServerPolicy.

  5. Selecione a política CloudWatchAgentServerPolicy e escolha Adicionar permissões.

Setup IAM permissions for on-premise hosts
Você pode criar o usuário do IAM a ser usado para fornecer permissões aos hosts on-premises.
  1. Abra o console do IAM, em https://console.aws.amazon.com/iam/.

  2. Escolha Usuários, Criar usuário.

  3. Em Detalhes do usuário, em Nome do usuário, insira um nome para o novo usuário do IAM. Esse é o nome de login para a AWS que será usado para autenticar seu host.

  4. Escolha Próximo.

  5. Na página Definir permissões, em Opções de permissões, escolha Anexar políticas diretamente.

  6. Na lista de Políticas de permissões, selecione a política CloudWatchAgentServerPolicy para adicionar ao seu usuário.

  7. Escolha Próximo.

  8. Na página Revisar e criar, certifique-se de que você está satisfeito com o nome de usuário e que a política CloudWatchAgentServerPolicy está no Resumo de permissões.

  9. Selecione Criar usuário.

  10. Crie e recupere a chave secreta e a chave de acesso da AWS: no painel de navegação do console do IAM, escolha Usuários e depois selecione o nome do usuário do usuário que você criou na etapa anterior.

  11. Na página do usuário, escolha a guia Credenciais de segurança.

  12. Na seção Chaves de acesso, escolha Criar chave de acesso.

  13. Em Criar chave de acesso: etapa 1, escolha Command Line Interface (CLI).

  14. Em Criar chave de acesso: etapa 2, insira uma tag opcional e escolha Próximo.

  15. Em Criar chave de acesso: etapa 3, selecione Baixar arquivo .csv para salvar um arquivo .csv com a chave de acesso e a chave de acesso secreta do usuário do IAM. Você precisará dessas informações para as próximas etapas.

  16. Selecione Concluído.

  17. Configure suas credenciais da AWS no host on-premises ao inserir o comando a seguir. Substitua ACCESS_KEY_ID e SECRET_ACCESS_ID pela chave de acesso recém-gerada e pela chave de acesso secreta do arquivo .csv que você baixou na etapa anterior.

    $ aws configure AWS Access Key ID [None]: ACCESS_KEY_ID AWS Secret Access Key [None]: SECRET_ACCESS_ID Default region name [None]: MY_REGION Default output format [None]: json

Configurar as credenciais da AWS para os clusters do Amazon EKS ou do Kubernetes

Para configurar as credenciais da AWS para os clusters do Amazon EKS ou do Kubernetes para enviar telemetria para o CloudWatch, siga o procedimento abaixo.

Setup IAM permissions for Amazon EKS
  1. Crie um provedor de identidade OIDC do IAM para o cluster com o comando a seguir.

    eksctl utils associate-iam-oidc-provider --cluster ${CLUSTER_NAME} --region ${REGION} --approve
  2. Atribua perfis do IAM à conta de serviço do Kubernetes para o OTel Collector usando o comando a seguir.

    eksctl create iamserviceaccount \ --name ${COLLECTOR_SERVICE_ACCOUNT}\ --namespace ${NAMESPACE} \ --cluster ${CLUSTER_NAME} \ --region ${REGION} \ --attach-policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy \ --approve \ --override-existing-serviceaccounts
Setup IAM permissions for Kubernetes
  1. Configure suas credenciais da AWS no host on-premises ao inserir o comando a seguir. Substitua ACCESS_KEY_ID e SECRET_ACCESS_ID pela chave de acesso recém-gerada e pela chave de acesso secreta do arquivo .csv que você baixou na etapa anterior. Por padrão, o arquivo de credenciais é salvo em /home/user/.aws/credentials.

    aws configure AWS Access Key ID [None]: ACCESS_KEY_ID AWS Secret Access Key [None]: SECRET_ACCESS_ID Default region name [None]: MY_REGION Default output format [None]: json
  2. Edite o recurso OpenTelemetry Collector para adicionar o segredo de credenciais da AWS recém-criado usando o seguinte comando: kubectl edit OpenTelemetryCollector otel_collector

  3. Usando o editor de arquivos, inclua as credenciais da AWS no contêiner do OpenTelemetryCollector adicionando a configuração a seguir na parte superior da implantação. Substitua o caminho /home/user/.aws/credentials pelo local do seu arquivo local de credenciais da AWS.

    spec: volumeMounts: - mountPath: /rootfs volumeMounts: - name: aws-credentials mountPath: /root/.aws readOnly: true volumes: - hostPath: path: /home/user/.aws/credentials name: aws-credentials

Configurar o OpenTelemetry Collector

Copie e cole o conteúdo abaixo para configurar o coletor com o objetivo de enviar logs e rastreamentos ao endpoint do OTLP.

receivers: otlp: protocols: grpc: endpoint: 0.0.0.0:4317 http: endpoint: 0.0.0.0:4318 exporters: otlphttp/logs: compression: gzip logs_endpoint: logs_otlp_endpoint headers: x-aws-log-group: ency_log_group x-aws-log-stream: default auth: authenticator: sigv4auth/logs otlphttp/traces: compression: gzip traces_endpoint: traces_otlp_endpoint auth: authenticator: sigv4auth/traces extensions: sigv4auth/logs: region: "region" service: "logs" sigv4auth/traces: region: "region" service: "xray" service: telemetry: extensions: [sigv4auth/logs, sigv4auth/traces] pipelines: logs: receivers: [otlp] exporters: [otlphttp/logs] traces: receivers: [otlp] exporters: [otlphttp/traces]

Veja a seguir um exemplo de como enviar logs e rastreamentos usando sigv4 para us-east-1.

receivers: otlp: protocols: grpc: endpoint: 0.0.0.0:4317 http: endpoint: 0.0.0.0:4318 exporters: otlphttp/logs: compression: gzip logs_endpoint: https://logs.us-east-1.amazonaws.com/v1/logs headers: x-aws-log-group: MyApplicationLogs x-aws-log-stream: default auth: authenticator: sigv4auth/logs otlphttp/traces: compression: gzip traces_endpoint: https://xray.us-east-1.amazonaws.com/v1/traces auth: authenticator: sigv4auth/traces extensions: sigv4auth/logs: region: "us-east-1" service: "logs" sigv4auth/traces: region: "us-east-1" service: "xray" service: telemetry: extensions: [sigv4auth/logs, sigv4auth/traces] pipelines: logs: receivers: [otlp] exporters: [otlphttp/logs] traces: receivers: [otlp] exporters: [otlphttp/traces]
nota

Configure os SDKs do OpenTelemetry com uma configuração de amostragem always_on para registrar de forma confiável 100% de extensões e obter visibilidade total das aplicações críticas com o CloudWatch Application Signals. Para obter mais informações, consulte um exemplo de configuração do sampler do SDK Java do OpenTelemetry. Para obter um exemplo sobre como configurar o OpenTelemetry Collector com o endpoint do OTLP do X-Ray, consulte o repositório de demonstração de sinais de aplicações.