java,springboot应用整合jaeger

  1. 下载最新的 opentelemetry-javaagent.jar from Releases

  2. 运行jar

    java -javaagent:path/to/opentelemetry-javaagent.jar -jar myapp.jar
    
  3. 配置 jaeger 服务

    # 方式一:
    java -javaagent:path/to/opentelemetry-javaagent.jar \
      -Dotel.service.name=your-service-name \
      -Dotel.traces.exporter=jaeger \
      -Dotel.exporter.jaeger.endpoint=http://localhost:14250  \
      -jar myapp.jar
    
    # 方式二(容器添加环境变量):
    OTEL_TRACES_EXPORTER=jaeger
    OTEL_EXPORTER_JAEGER_ENDPOINT=http://localhost:14250
    OTEL_SERVICE_NAME=your-service-name
    

参考Dockerfile

FROM dggecr01.huawei.com:80/scan-engine/ringcentral/jdk:latest
WORKDIR /app
EXPOSE 8090
COPY ./target/myapp.jar .
COPY ./lib/opentelemetry-javaagent.jar .
CMD java -javaagent:opentelemetry-javaagent.jar -jar myapp.jar

java实战

部署jaeger,一体1.38版本 弃用这种方式安装,原因时间长了内存爆炸

docker run -d --name jaeger   -e COLLECTOR_ZIPKIN_HOST_PORT=:9411   -e COLLECTOR_OTLP_ENABLED=true   -p 6831:6831/udp   -p 6832:6832/udp   -p 5778:5778   -p 16686:16686   -p 4317:4317   -p 4318:4318   -p 14250:14250   -p 14268:14268   -p 14269:14269   -p 9411:9411   jaegertracing/all-in-one:1.38

 

分开的安装

docker run -d --name=jaeger-collector -p 9411:9411 -p 14250:14250 -p 14268:14268 -p 14269:14269 -e SPAN_STORAGE_TYPE=elasticsearch -e ES_SERVER_URLS=http://1.2.1.5:9200 -e ES_INDEX_PREFIX=test jaegertracing/jaeger-collector:1.38

docker run -d --name=jaeger-agent -p 6831:6831/udp -p 6832:6832/udp -p 5778:5778/tcp -p 5775:5775/udp -e REPORTER_GRPC_HOST_PORT=1.2.1.5:14250 jaegertracing/jaeger-agent:1.38

docker run -d --name=jaeger-query -p 16686:16686 -p 16687:16687 -e SPAN_STORAGE_TYPE=elasticsearch -e ES_SERVER_URLS=http://1.2.1.5:9200 -e ES_INDEX_PREFIX=test jaegertracing/jaeger-query:1.38

Jaeger Spark依赖项 这是一个Spark作业,它从存储中收集跨度,分析服务之间的链接,并将其存储以供以后在UI中呈现
docker pull jaegertracing/spark-dependencies:latest
下面这个是执行一次的,会自动退出,每次更新需要执行一次
docker run -d --name=jaeger-spark -e STORAGE=elasticsearch -e ES_NODES=http://1.2.1.5:9200 -e ES_INDEX_PREFIX=test jaegertracing/spark-dependencies:latest

访问ui

http://ip:16686/

因为下载的是上面的opentelemetry-javaagent.jar,目前没有用到1.38版的agent,可以单独下载

Jaeger – Download Jaeger

Dockerfile

FROM anapsix/alpine-java:8_server-jre_unlimited

MAINTAINER jeecgos@163.com

RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

RUN mkdir -p /javaapp

WORKDIR /javaapp

EXPOSE 8079

ADD ./javaapp-1.0-SNAPSHOT.jar ./
ADD ./opentelemetry-javaagent.jar ./

CMD sleep 2;java -Dfile.encoding=utf-8 -Djava.security.egd=file:/dev/./urandom -javaagent:opentelemetry-javaagent.jar -jar javaapp-1.0-SNAPSHOT.jar

构建镜像docker build -t javaapp:latest .

运行docker-compose.yml

version: '2'
services:
  javaapp:
    container_name: javaapp
    image: javaapp:latest
    hostname: javaapp
    ports:
      - 8079:8079
    restart: on-failure
    environment:
      - TZ=Asia/Shanghai
      - OTEL_TRACES_EXPORTER=jaeger
      - OTEL_EXPORTER_JAEGER_ENDPOINT=http://192.168.1.182:14250
      - OTEL_SERVICE_NAME=javaapp
      - OTEL_METRICS_EXPORTER=none
原因
OpenTelemetry 默认配置 otel.metrics.exporter=otlp (default), 因此 javaagent 默认会往 http://localhost:4317 推送 metrics 指标。

解决
设置 otel.metrics.exporter=none 或 环境变量OTEL_METRICS_EXPORTER=none

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当您在Spring Boot应用程序中集成Jaeger时,您需要进行以下步骤: 1. 添加依赖:在您的Spring Boot项目的`pom.xml`文件中添加Jaeger客户端库的依赖项。例如: ```xml <dependency> <groupId>io.jaegertracing</groupId> <artifactId>jaeger-client</artifactId> <version>1.6.0</version> </dependency> ``` 2. 配置Jaeger:在您的应用程序的配置文件(如`application.properties`或`application.yml`)中添加Jaeger的配置。例如: ```yaml # Jaeger配置 jaeger: service-name: your-service-name udp-sender: host: localhost port: 6831 ``` 这里,您需要指定`service-name`作为您的应用程序的名称,并配置Jaeger的发送器(可以是UDP、HTTP等)的主机和端口。 3. 创建Jaeger Tracer Bean:在您的Spring Boot应用程序的配置类中创建一个Jaeger Tracer Bean。例如: ```java import io.jaegertracing.Configuration; import io.jaegertracing.internal.samplers.ConstSampler; import io.opentracing.Tracer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class JaegerConfig { @Bean public Tracer jaegerTracer() { Configuration.SamplerConfiguration samplerConfig = Configuration.SamplerConfiguration.fromEnv() .withType(ConstSampler.TYPE) .withParam(1); Configuration.ReporterConfiguration reporterConfig = Configuration.ReporterConfiguration.fromEnv() .withLogSpans(true); Configuration config = new Configuration("your-service-name") .withSampler(samplerConfig) .withReporter(reporterConfig); return config.getTracer(); } } ``` 在上面的代码中,我们创建了一个`jaegerTracer()`方法,该方法使用了Jaeger的配置和参数,并返回一个Jaeger Tracer实例。 4. 使用Jaeger Tracer:在您的应用程序中使用注入的Jaeger Tracer实例进行跟踪。例如,在您的控制器类中: ```java import io.opentracing.Span; import io.opentracing.Tracer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class MyController { @Autowired private Tracer tracer; @GetMapping("/hello") public String hello() { Span span = tracer.buildSpan("helloSpan").start(); // 执行您的业务逻辑 span.finish(); return "Hello, World!"; } } ``` 在上面的例子中,我们使用了注入的`tracer`实例创建了一个Span,用于跟踪`hello()`方法的执行。您可以根据需要在其他地方创建更多的Span。 5. 运行Jaeger Agent:在集成Jaeger之前,请确保Jaeger Agent正在运行并监听所配置的主机和端口。Jaeger Agent负责接收来自应用程序的跟踪数据并将其发送到Jaeger Collector。 这样,您就完成了Spring Boot应用程序与Jaeger的集成。 请注意,这只是一个简单的示例,您可以根据您的需求进行更复杂的集成。更多关于Jaeger的配置和使用方法,请参考Jaeger的官方文档。 希望这个示例对您有所帮助!如有任何其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值