SigNoz APM (Application Performance Monitoring)
Neste capítulo vamos utilizar o APM SigNoz configurando as atuais possibilidades de auto instrumentação de código do OpenTelemetry.
Instrumentando aplicações Javascript

Primeiro vamos precisar de um MongoDB um Redis
docker run -d --name mongo -p 27017:27017 mongo
docker run -d --name redis -p 6379:6379 redis
Vamos podemos rodar nossa aplicação
docker build -t appjs:v1 .
docker run -d --name appjs -p 3001:3001 appjs:v1
Acessamos o swagger da nossa aplicação. Entao agora já podemos instrumentar nossa aplicação com OpenTelemetry.
Vamos adicionar 2 novas depencias ao nosso package.json
"@opentelemetry/api": "^1.9.0",
"@opentelemetry/auto-instrumentations-node": "^0.57.0",
E adicionar as variaveis de ambiente ao nosso Dockerfile
ENV OTEL_TRACES_EXPORTER="otlp"
ENV OTEL_EXPORTER_OTLP_ENDPOINT="http://192.168.3.220:4318"
ENV OTEL_NODE_RESOURCE_DETECTORS="env,host,os"
ENV OTEL_SERVICE_NAME="app-js"
ENV NODE_OPTIONS="--require @opentelemetry/auto-instrumentations-node/register"
Entao build and run
docker build -t appjs:v1 .
docker run -d --name appjs -p 3001:3001 appjs:v1
Agora vamos rodar um comando para deixar gerando algumas requisições
while true; do
url=$(shuf -e "http://localhost:3001/" "http://localhost:3001/healthcheck" "http://localhost:3001/route1" "http://localhost:3001/route2" "http://localhost:3001/api1" "http://localhost:3001/api2" "http://localhost:3001/api1-cached" "http://localhost:3001/api2-cached" "http://localhost:3001/exception" "http://localhost:3001/mongoWrite" "http://localhost:3001/mongoConsume" "http://localhost:3001/notfound" -n 1)
curl -s $url
sleep $((RANDOM % 5 + 1))
done
Sucesso! Aplicação Javascript instrumentada com sucesso no SigNoz.
Verificamos ainda que a página de exceçoẽs fez a coleta.
Entao vamos a proxima linguaguem
Instrumentando aplicações Python
Primeiro vamos precisar de um MongoDB um Redis
docker run -d --name mongo -p 27017:27017 mongo
docker run -d --name redis -p 6379:6379 redis
Vamos podemos rodar nossa aplicação
docker build -t apppython:v1 .
docker run -d --name apppython -p 3001:3001 apppython:v1
Acessamos o swagger da nossa aplicação. Entao agora já podemos instrumentar nossa aplicação com OpenTelemetry.
Vamos adicionar 2 novas depencias ao nosso requirements.txt
opentelemetry-distro
opentelemetry-exporter-otlp
E adicionar as variaveis de ambiente ao nosso Dockerfile e rodar o comando opentelemetry-bootstrap que ira instalar a instrumentação automática
RUN pip install opentelemetry-distro opentelemetry-exporter-otlp
RUN opentelemetry-bootstrap -a install
ENV OTEL_SERVICE_NAME="app-python"
ENV OTEL_EXPORTER_OTLP_PROTOCOL="grpc"
ENV OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="http://192.168.3.220:4317"
Entao build and run
docker build -t appjs:v1 .
docker run -d --name appjs -p 3001:3001 appjs:v1
Agora vamos rodar um comando para deixar gerando algumas requisições
while true; do
url=$(shuf -e "http://localhost:3001/" "http://localhost:3001/healthcheck" "http://localhost:3001/route1" "http://localhost:3001/route2" "http://localhost:3001/api1" "http://localhost:3001/api2" "http://localhost:3001/api1-cached" "http://localhost:3001/api2-cached" "http://localhost:3001/exception" "http://localhost:3001/mongoWrite" "http://localhost:3001/mongoConsume" "http://localhost:3001/notfound" -n 1)
curl -s $url
sleep $((RANDOM % 5 + 1))
done
Sucesso! Aplicação Python instrumentada com sucesso no SigNoz.
Verificamos ainda que a página de exceçoẽs fez a coleta.
Entao vamos a proxima linguaguem

Instrumentando aplicações JAVA

Primeiro vamos precisar de um MongoDB um Redis
docker run -d --name mongo -p 27017:27017 mongo
docker run -d --name redis -p 6379:6379 redis
Vamos podemos rodar nossa aplicação
docker build -t appjava:v1 .
docker run -d --name appjava -p 3001:3001 apppython:v1
Acessamos o swagger da nossa aplicação. Entao agora já podemos instrumentar nossa aplicação com OpenTelemetry.
Instrumentando aplicações .NET

Instrumentando aplicações PHP

Instrumentando aplicações Golang
