Giriş
Logları direkt bir backend sunucuya gönderir
Örnek
Uygulamayı çalıştırmak için şöyle
yaparızjava -javaagent:opentelemetry-javaagent.jar -jar catalog.jar
Örnek
java -javaagent:opentelemetry-javaagent.jar -jar target/*.jar
Örnek
# 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
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"docker compose -f docker-compose.yml -f docker-compose.override.otel.yml up -d
SpringBoot
Örnek
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:
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'[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-serviceOTEL_SERVICE_NAME=my-service \
OTEL_TRACES_EXPORTER=logging \
java -javaagent:./opentelemetry-javaagent.jar \
-jar target/*.jar
Çıktısı
şöyle
//Console output
INFO 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; Intel
Mac 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 endpoint
OTEL_EXPORTER_JAEGER_TIMEOUT : Maximum time (in milliseconds) the Jaeger exporter will wait for each batch export
OTEL_EXPORTER_JAEGER_USER : Username to be used for HTTP basic authentication
OTEL_EXPORTER_JAEGER_PASSWORD : Password to be used for HTTP basic authentication
Örnek
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 BackendLightstep 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
Örnek
Şö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
Örnekexport LS_ACCESS_TOKEN=your-token
export OTEL_SERVICE_NAME=springboot-demo
export OTEL_EXPORTER_OTLP_ENDPOINT=https://ingest.lightstep.com:443