Giriş
Logları direkt bir backend sunucuya gönderir
Java Agen https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases adresinde
Örnek
Uygulamayı çalıştırmak için şöyle yaparız
java -javaagent:opentelemetry-javaagent.jar -jar catalog.jar
Örnek
Şöyle yaparız
java -javaagent:opentelemetry-javaagent.jar -jar target/*.jar
Örnek
Şöyle yaparız
# 1. Add them to the startup commands java -javaagent:path/to/opentelemetry-javaagent.jar \ -Dotel.service.name=your-service-name -jar myApplication.jar # 2. Use JAVA_TOOL_OPTIONS and other environment variables export JAVA_TOOL_OPTIONS="-javaagent:path/to/opentelemetry-javaagent.jar" export OTEL_SERVICE_NAME="your-service-name" java -jar myApplication.jar
docker-composer.override.otel.yml
Örnek
Şöyle yaparız
curl --create-dirs -O -L --output-dir ./otel \ https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/latest/download/opentelemetry-javaagent.jar
docker-composer.override.otel.yml şöyledir
#docker-compose.override.otel.yml version: '3' services: [your-service]: volumes: - "./otel/opentelemetry-javaagent.jar:/otel/opentelemetry-javaagent.jar" environment: - JAVA_TOOL_OPTIONS=-javaagent:/otel/opentelemetry-javaagent.jar - OTEL_SERVICE_NAME=[your-service] - DEPLOYMENT_ENV=DOCKER_LOCAL extra_hosts: - "host.docker.internal:host-gateway"
Çalıştırmak için şöyle yaparız
docker compose -f docker-compose.yml -f docker-compose.override.otel.yml up -d
SpringBoot
Örnek
Açıklaması şöyle
OpenTelemtry java agent uses the Mapped Diagnostic Context(MDC) to propagate the TraceID and SpanID within the service. You can print the TraceID and SpanID in the log line by extracting the values from MDC in the console pattern. Just add this to yourapplication.yml file:
Şöyle yaparız
logging: level: root: INFO pattern: console: '[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%mdc{trace_id}/%mdc{span_id}] [%thread] %-5level %C:%M:%L - %msg%n'
O zaman çıktı şöyle
[2023–04–14 06:53:02.166] [0eef6546864ff6a0129a4b6ce06f7cbf/c3e97a8c1174afd2] [http-nio-8080-exec-7] INFO ...
Exporter Selection
3 tane değişken tanımlanabilir
1. OTEL_TRACES_EXPORTER Trace exporter to be used. Default “otlp”
2. OTEL_METRICS_EXPORTER Metrics exporter to be used. Default “otlp”
3. OTEL_LOGS_EXPORTER Logs exporter to be used. Default “otlp”
OTEL_TRACES_EXPORTER
Trace'lerin hangi formatta gönderileceğini belirtir. otlp, jaeger, zipkin, none gibi değerler alabilir. Varsayılan değer otlp
Console Backend
Örnek
Şöyle yaparız. opentelemetry-javaagent-all.jar opentelemetry agent için jar.Servisimizi ismi my-service
OTEL_SERVICE_NAME=my-service \ OTEL_TRACES_EXPORTER=logging \ java -javaagent:./opentelemetry-javaagent.jar \ -jar target/*.jarÇıktısı şöyle
//Console outputINFO io.opentelemetry.exporter.logging.LoggingSpanExporter - '/owners/{ownerId}' :99af87eeaa19b83d014463b046884e56 632e2d2a5931bd17 SERVER [tracer: io.opentelemetry.tomcat-7.0:1.13.1-alpha] AttributesMap{data={net.transport=ip_tcp, http.target=/owners/11, thread.id=120, http.flavor=1.1,http.status_code=200, net.peer.ip=0:0:0:0:0:0:0:1, thread.name=http-nio-8080-exec-10,http.host=localhost:8080, http.route=/owners/{ownerId}, http.user_agent=Mozilla/5.0 (Macintosh; IntelMac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36,http.method=GET, net.peer.port=50778, http.scheme=http}, capacity=128, totalAddedValues=13}
Jaeger Backend
Jaeger'a özel ayarların açıklaması şöyle
OTEL_EXPORTER_JAEGER_ENDPOINT : Full URL of the Jaeger HTTP endpointOTEL_EXPORTER_JAEGER_TIMEOUT : Maximum time (in milliseconds) the Jaeger exporter will wait for each batch exportOTEL_EXPORTER_JAEGER_USER : Username to be used for HTTP basic authenticationOTEL_EXPORTER_JAEGER_PASSWORD : Password to be used for HTTP basic authentication
Örnek
Şöyle yaparız
OTEL_SERVICE_NAME=my-service OTEL_TRACES_EXPORTER=jaeger OTEL_EXPORTER_JAEGER_ENDPOINT=http://localhost:14250 \ java -javaagent:./opentelemetry-javaagent.jar -jar target/*.jar
Aspecto Backend
Örnek
Şöyle yaparız. Bu sefer OTEL_TRACES_EXPORTER tanımlamaya gerek yok. Varsayılan değer otlp ve Aspecto da bu formatı destekliyor. Sadece OTEL_EXPORTER_OTLP_TRACES_ENDPOINT yeterli
OTEL_SERVICE_NAME=my-service OTEL_EXPORTER_OTLP_HEADERS=Authorization={ASPECTO_AUTH} OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://otelcol.aspecto.io:4317 \ java -javaagent:./opentelemetry-javaagent.jar \ -jar target/*.jar
Lightstep normal opentelemetry-javaagent.jar'ı sarmalayan bir başka jar lightstep-opentelemetry-javaagent.jar isimli bir başka jar sağlıyor
Örnek
Şöyle yaparız. Bu sefer OTEL_TRACES_EXPORTER tanımlamaya gerek yok. Varsayılan değer otlp ve Lightstep de bu formatı destekliyor. Sadece OTEL_EXPORTER_OTLP_TRACES_ENDPOINT yeterli
export LS_ACCESS_TOKEN=your-token export OTEL_SERVICE_NAME=springboot-demo export OTEL_EXPORTER_OTLP_ENDPOINT=https://ingest.lightstep.com:443 java -javaagent:lightstep-opentelemetry-javaagent.jar -jar target/*.jar
Şöyle yaparız. Bu sefer OTEL_TRACES_EXPORTER tanımlamaya gerek yok. Varsayılan değer otlp ve Lightstep de bu formatı destekliyor. Ayrıca OTEL_EXPORTER_OTLP_ENDPOINT değeri de belirtilmiyor çünkü varsayılan değer tanımlı O da http://localhost:4318. Yani yerel bilgisayarda Lightstep çalışıyor.
export OTEL_SERVICE_NAME=springboot-demo_jaeger export LIGHTSTEP_ACCESS_TOKEN="<your_ls_access_token" java -javaagent:opentelemetry-javaagent.jar -jar target/*.jar
Şöyle yaparız
export LS_ACCESS_TOKEN=your-token export OTEL_SERVICE_NAME=springboot-demo export OTEL_EXPORTER_OTLP_ENDPOINT=https://ingest.lightstep.com:443