cancelar
Mostrar resultados para 
Pesquisar em vez de 
Queria dizer: 
cancel
1787
Apresentações
7
Útil
0
Comentários
Leandro Ferreira
Cisco Employee
Cisco Employee

OpenTelemetry, OTEL para os íntimos, tem sido assunto crescente em várias indústrias.  Se você ainda não se informou sobre o assunto recomendo esses dois links:

Documentação Oficial 

O que é opentelemetry

A CISCO vem investindo forte no assunto e tem feito grandes contribuições a comunidade. Um bom exemplo disso é a instrumentação do NGINX utilizando OpenTelemetry. Nesse post vou mostrar como encaixamos o AppDynamics nessa conversa.

O AppDynamics, para quem ainda não teve o prazer de conhecer, é uma excelente plataforma de observabilidade onde temos no mesmo contexto todas as informações necessárias para entender como sua aplicação impacta diretamente seu negócio. Observabilidade na veia utilizando Métricas, Eventos, Traces e Logs. A coleta dos dados é feita através de agentes construídos pela própria AppDynamics, mas, como uma boa plataforma de observabilidade, temos o OTEL como uma das formas de ingestão de dados também.

Compartilhar conhecimento é uma forma de aprender e por isso resolvi escrever esse tutorial combinando temas interessantes para mim NGINX + OTEL + AppDynamics. Espero que seja interessante para você também. Segue o fio...

 

Para começar

Antes de começar você vai precisar de:

  • git
  • docker
  • docker-compose
  • Controller AppDynamics SaaS
  • Um editor de textos

 

Como funciona?

Antes de começar com os builds vamos entender como tudo isso funciona.

LeandroFerreira_0-1668795541312.png

No NGINX temos um agente que vai coletar informações e enviar a um coletor (OpenTelemetry Collector). Tanto o agente quanto o coletor são desenvolvidos pela comunidade. O coletor ao receber as informações enviadas pelo agente faz as devidas transformações e manda para o AppDynamics.

Criando uma imagem com NGINX e instalando o agente

 

Vamos começar construindo uma imagem com NGINX já instrumentado. O primeiro passo é clonar o repositório.

 

git clone https://github.com/lof000/appd-sample-apps-otel.git

 

 

Depois que clonar o repo, tudo que vamos executar você vai encontrar na pasta nginxotel. Primeiro vamos dar uma olhada no Docker file só para entender o que estamos fazendo.

 

FROM nginx:1.18
RUN apt-get update ; apt-get install unzip

#DOWNLOAD OTEL NGINX AGENT
ADD https://github.com/open-telemetry/opentelemetry-cpp-contrib/releases/download/webserver%2Fv1.0.0/opentelemetry-webserver-sdk-x64-linux.tgz.zip /opt

#INSTALL OTEL AGENT
RUN cd /opt ; unzip opentelemetry-webserver-sdk-x64-linux.tgz.zip; tar xvfz opentelemetry-webserver-sdk-x64-linux.tgz
RUN cd /opt/opentelemetry-webserver-sdk; ./install.sh

#SET ENV VARIABLE FOR OTEL AGENT LIB
ENV LD_LIBRARY_PATH $LD_LIBRARY_PATH:/opt/opentelemetry-webserver-sdk/sdk_lib/lib

 

 

Agora vamos fazer o build

 

docker build -t nginx_otel .

 

 

Configurando o agente do NGINX

Com a imagem pronta, podemos configurar a funcionamento do agente editando o arquivo opentelemetry_module.conf. No exemplo do git eu já deixei tudo pronto, não é necessário editar nada. Fica o exemplo abaixo para entendimento

 

NginxModuleEnabled ON;
NginxModuleOtelSpanExporter otlp;
NginxModuleOtelExporterEndpoint otel-collector:4317;
NginxModuleServiceName nginx_service;
NginxModuleServiceNamespace nginx_lab;
NginxModuleServiceInstanceId nginx_serviceID;
NginxModuleResolveBackends ON;
NginxModuleTraceAsError ON;

 

NginxModuleOtelSpanExporter: O agente do NGINX envia os dados para um coletor (OTEL COLLECTOR). Esse campo indica qual protocolo de comunicação está sendo usado para “conversar” com o collector.

NginxModuleOtelExporterEndpoint: Aqui indicamos onde está o collector (host e porta). Abrindo o arquivo docker-compose.yml você vai ver um serviço com esse nome

NginxModuleServiceNamespace: Aqui damos o nome do namespace

NginxModuleServiceName: Aqui damos um nome para o serviço.

Podemos ver mais detalhes na documentação.

 

Configurando a comunicação do coletor com o AppDynamics

Com o NGINX instrumentado vamos configurar a comunicação do coletor com o AppDynamics. Não é nosso foco aprofundarmos em detalhes do coletor agora.

Faça o login na controller e clique na aba OTEL

LeandroFerreira_1-1668795541314.png

Logo abaixo clique em show, para visualizar seu token de acesso. Copie e guarde esse token porque vamos utilizado em breve.

LeandroFerreira_13-1668796242556.png

Você também vai precisar de seu account name. Clique na engrenagem depois em license e depois na aba account

LeandroFerreira_3-1668795541317.png

LeandroFerreira_14-1668796301184.png

Guarde esse account name. Por último vamos obter o OTEL endpoint da controller. Acesse a documentação e localize a URL de acordo com sua região. 

OTEL Endpoints por região

Por exemplo, se a sua controller estiver hospedada em Virginia a url será

https://pdx-sls-agent-api.saas.appdynamics.com

Agora vamos editar o arquivo otel-collector-config.yaml e colocar as informações que você acabou de obter.

 

processors:
  resource:
    attributes:
      - key: appdynamics.controller.account
        action: upsert
        value: "<o account name que acabamos de obter>"
      - key: appdynamics.controller.host
        action: upsert
        value: "<hostname da controller… minhacontroller.saas.appdynamics.com>"
      - key: appdynamics.controller.port
        action: upsert
        value: 443
.....
  otlphttp:
    endpoint: <OTEL ENDPOINT>
    headers: {"x-api-key": "<access key que você obteve antes, na aba OTEL>"}

 

 

Testando

Com todos os arquivos configurados, vamos subir o serviço e ver se deu tudo certo.

 

docker-compose up -d

 

Verificando se tudo está no ar

 

docker-compose ps

 

LeandroFerreira_5-1668795541320.png

 

docker logs nginx

 

LeandroFerreira_6-1668795541323.png

 

docker logs otel-collector

 

LeandroFerreira_7-1668795541325.png

Para finalizar vamos enviar requisições ao nginx

 

./load.sh

 

 

Verifique novamente os logs do coletor, você deve ver mensagens como essa indicando que ele está recebendo as informações do agente e enviando o AppDynamics

LeandroFerreira_8-1668795541328.png

 

Deixando o load rodar por uns 5 minutos veremos as informações na controller do AppDynamics

LeandroFerreira_9-1668795541330.png

LeandroFerreira_10-1668795541338.png

Pronto! Começamos a exercitar o uso de OTEL junto com o AppDynamics. No próximo tutorial vou mostrar um exemplo monitorando o NGINX e seus backends, fique ligado.

 

Primeiros Passos

Encontre respostas, faça perguntas e conecte-se com nossa comunidade de especialistas da Cisco de todo o mundo.

Estamos felizes por você estar aqui! Participe de conversas e conecte-se com sua comunidade.