文档

轻松集成 Zipkin 可观测能力

更新时间:
一键部署

前提条件

版本要求

  • 已安装 GoLand 2021.2 及以上版本。

  • 已安装 mosn-intellij for goland ( mosn mecha ) 1.0.4 及以上版本 。

    说明

    GoLand 的 mecha 插件低于1.0.4 的遗留项目,在安装新版本 mosn-intellij 后,需要手动触发项目自动升级。

项目无缝升级

在低于 mosn-intellij 1.0.4 版本创建的项目,需要一键刷新升级至最新脚手架功能集:

  • 拉齐 makefile。

  • 拉齐 MOSN 的编译脚本和启动脚本。

  • 创建插件版本信息。

  • 创建项目属性文件application.properties

  • 自动升级 Go mod 到 1.18 版本。

升级方式如下:

  1. 右键单击项目任意目录。

  2. 在菜单栏选择 Mosn Go Plugin > Refresh

    image..png

    执行后,老的脚手架工程,会自动刷新工程结构。如下图所示:

    image..png

步骤一:创建 Zipkin 插件

您可以通过如下两种方式创建 Zipkin 插件:

说明

创建之前,您需要在 GoLand 开启 Go 模块化,路径为:GoLand 菜单 > Setting > Go > Go Modules,然后选中 Enable Go Modules intergration 即可。

image..png

通过创建全新的项目工程创建 Zipkin 插件

以指定 Trace 插件类型为例,步骤如下:

  1. 在 GoLand Projects 首页单击 New Project

    image..png
  2. 选择 Mosn Plugin,然后指定插件名称、项目位置,并且指定 Plugin Type TraceTrace Type zipkin

    image..png
  3. 单击 Create

在已有项目中新增 Zipkin 插件

以 go-plugin-quickstart 为例,步骤如下:

  1. 右键单击项目任意节点,然后选择 New > Mosn Plugin

    image..png
  2. 指定插件名称,并且指定 Plugin Type TraceTrace Type zipkin。

    image..png
  3. 单击 OK

    完成后,项目如下所示:

    image..png

说明
  • 通常情况下,自动的生成观测代码无需修改即可运行。

  • 如有需要,您可以在项目根目录plugins/traces模块修改代码,比如需要增加上报 tag,可以在span.go中,对ParseVariable追加上报的键值对。

    user@user-m1 traces % tree
    .
    └── zipkin
        └── main
            ├── config.go
            ├── driver.go
            ├── reporter_factory.go
            ├── span.go
            └── tracer.go
    
    2 directories, 5 files
  • 项目etc/ant/env_conf中包含了环境所需的配置,在本地启动时,会自动连接本地文件配置指定的地址SKY_WALKING_ADDRESS

    默认情况下,本地容器启动会自动替换成 Pod 的 IP,无需修改SKY_WALKING_ADDRESS地址值。

  • 在测试或者生产环境部署时,关联可观测插件需要在注入规则中配置好可观测性的地址(ZIPKIN_ADDRESS 环境变量)。

    格式为:ZIPKIN_ADDRESS=http://ip:9411/api/v2/spans

    image..png
  • MOSN_GENERATOR_SAPN_ENABLED环境变量为true,MOSN 作为首节点会创建 traceid。

步骤二:编译插件

在 Goland IDE 中创建好可观测插件后,MOSN mecha 会自动生成可观测的代码,也会自动创建本地可观测容器 Docker Compose(项目根目录etc/docker-compose),用于启动 Zipkin 的组件,允许在本地极简开发。

说明

在 Goland 中完成编译,支持白屏化或者快捷键操作(Windows 系统暂不支持插件开发)。支持快捷键编译单插件(macOS 系统使用image.png;Linux 系统使用 Alt+Ctrl+win+B),也支持在右键菜单中单击对应选项(选中 configs 或者 plugins 节点内单个文件夹名称)。

image..png

编译完成后,会在build/codecs/bundle/support中包含二进制插件:

user@uesr-m1 support % tree
.
└── traces
    └── zipkin
        ├── config.json
        ├── metadata.json
        ├── trace-zipkin-a5e036f9.so
        └── trace-zipkin.md5

2 directories, 4 files

步骤三:运行插件

功能模块启动顺序如下:

  1. 启动 Zipkin 容器服务。

    etc目录包含对应插件 Docker 的容器镜像:

    user@user-4 docker-compose % tree
    .
    └── traces
        └── zipkin
            └── docker-compose.yaml
    
    2 directories, 1 file

    您可以在traces/zipkin目录执行以下命令,启动 Zipkin 的 Server:

    docker compose up -d
  2. 启动 Sidecar。

  3. 启动 xRPC 的服务端、xRPC 的客户端。

说明
  • 请参考协议扩展课程中的 xRPC 相关课程启动 Sidecar 和 xRPC 服务,完成调用后可查看可观测数据。

  • 使用新版本 mosn-intellij 会自动触发服务发布和订阅。

  • Zipkin 控制台存在 Bug,需要多次点击才能看到 Trace 链路信息。

  • 支持链路跟踪需要原协议透传 Zipkin 的 Trace 信息,否则链路无法透传。

    xRPC Client 本身请求没有携带 Trace,您可以在configs/codecs/xrpc/reqest_template.txt Header中添加 Zipkin 的 Trace 信息,方便 MOSN 解析读取。

image..pngimage..png

  • 本页导读 (0)