jaeger 入门

快速上手

依赖:安装 docker 环境。

快速搭建 jaeger

docker run -d --name jaeger \
  -e COLLECTOR_ZIPKIN_HTTP_PORT=9411 \
  -p 5775:5775/udp \
  -p 6831:6831/udp \
  -p 6832:6832/udp \
  -p 5778:5778 \
  -p 16686:16686 \
  -p 14268:14268 \
  -p 9411:9411 \
  jaegertracing/all-in-one:1.7

运行一个 go 的 demo

docker run \
  --rm \
  --link jaeger \
  --env JAEGER_AGENT_HOST=jaeger \
  --env JAEGER_AGENT_PORT=6831 \
  -p8080-8083:8080-8083 \
  jaegertracing/example-hotrod:latest \
  all

浏览器打开 http://localhost:8080/

该应用提供打车服务,有四个消费者在页面上对应四个按钮,你点击任意一个,就会出现如下的信息

HotROD T732222C arriving in 2min [req: 8926-1, latency: 10289ms]

其中 T732222C 可以理解为车牌号,2 min 表示该车 2 min 之后到。 8926-1 中的 8926 是客户端 id,1 代表第 1 个请求,10289ms 表示该请求耗时。

浏览器打开 http://localhost:16686

在 http://localhost:16686/dependencies 可以查看该服务的架构

显示有四个微服务 front,custom,driver,route,一个 redis,一个 mysql 数据。front 访问 custom,driver,route, custom 访问 mysql,driver 访问 redis

在 http://localhost:16686/search 可以查看微服务的服务流

具体流程

  1. frontend 服务接收 /dispatch 进行请求分发
  2. frontend 调用服务 custom(/customer),custom 服务通过 mysql 获取消费者信息
  3. frontend 调用服务 driver,rpc 调用( findNearest)从 redis 找到距离消费者最近的 10 个车辆
  4. frontend 并行调用服务 route,route 服务 /route 计算各个车辆到消费者的路径。这里并行可以通过打开信息流图可以发现每次 3 个一组,据此可以估计线程池大小为 3。

运行一个 java 的 demo

http://www.hawkular.org/blog/2017/06/26/opentracing-appmetrics.html

https://github.com/objectiser/opentracing-prometheus-example

https://github.com/opentracing-contrib/java-metrics

http://www.hawkular.org/blog/2017/06/9/opentracing-spring-boot.html

http://www.hawkular.org/blog/2017/06/26/opentracing-appmetrics.html

http://www.hawkular.org/blog/2016/04/19/jmxtrans-to-hawkular-metrics.html

https://github.com/candyleer/jaeger-java-hello-world

https://github.com/iwahiro/op-spring-cloud-source

https://github.com/iwahiro/op-spring-cloud-sink

https://github.com/jiuchongxiao/istio-sample-springboot-jaeger-v0.3

https://github.com/jiuchongxiao/istio-sample-springboot-jaeger-v0.2

https://github.com/iwahiro/op-spring-cloud-source

https://github.com/yurishkuro/opentracing-tutorial/tree/master/java

https://github.com/candyleer/jaeger-java-hello-world

https://github.com/gsoria/jaeger-client-examples/tree/master/jaeger-client-java-example

https://github.com/maurocanuto/distributed-tracing-opencensus

集成 opencensus

https://opencensus.io/guides/exporters/supported-exporters/java/jaeger/

skywalking

https://www.cnblogs.com/xiaoqi/p/skywalking-usage.html

https://my.oschina.net/u/437309/blog/1920725

https://www.cnblogs.com/xiaoqi/p/apm.html

https://github.com/apache/incubator-skywalking

java程序启动时,增加JVM启动参数,-javaagent:/path/to/agent/skywalking-agent.jar。参数值为skywalking-agent.jar的绝对路径

# 当前的应用编码,最终会显示在webui上。
# 建议一个应用的多个实例,使用有相同的application_code。请使用英文
agent.application_code=Your_ApplicationName

# 每三秒采样的Trace数量
# 默认为负数,代表在保证不超过内存Buffer区的前提下,采集所有的Trace
# agent.sample_n_per_3_secs=-1

# 设置需要忽略的请求地址
# 默认配置如下
# agent.ignore_suffix=.jpg,.jpeg,.js,.css,.png,.bmp,.gif,.ico,.mp3,.mp4,.html,.svg

# 探针调试开关,如果设置为true,探针会将所有操作字节码的类输出到/debugging目录下
# skywalking团队可能在调试,需要此文件
# agent.is_open_debugging_class = true

# 对应Collector的config/application.yml配置文件中 agent_server/jetty/port 配置内容
# 例如:
# 单节点配置:SERVERS="127.0.0.1:8080" 
# 集群配置:SERVERS="10.2.45.126:8080,10.2.45.127:7600" 
collector.servers=127.0.0.1:10800

# 日志文件名称前缀
logging.file_name=skywalking-agent.log

# 日志文件最大大小
# 如果超过此大小,则会生成新文件。
# 默认为300M
logging.max_file_size=314572800

# 日志级别,默认为DEBUG。
logging.level=DEBUG

你可能感兴趣的:(监控)