轻松集成 SkyWalking 可观测能力
前提条件
版本要求
已安装 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 版本。
升级方式如下:
右键单击项目任意目录。
在菜单栏选择 Mosn Go Plugin > Refresh。
执行后,老的脚手架工程,会自动刷新工程结构。如下图所示:
步骤一:创建 SkyWalking 插件
您可以通过如下两种方式创建 SkyWalking 插件:
创建之前,您需要在 GoLand 开启 Go 模块化,路径为:GoLand 菜单 > Setting > Go > Go Modules,然后选中 Enable Go Modules intergration 即可。
通过创建全新的项目工程创建 SkyWalking 插件
以指定 Trace 插件类型为例,步骤如下:
在 GoLand Projects 首页单击 New Project。
选择 Mosn Plugin,然后指定插件名称、项目位置,并且指定 Plugin Type 为 Trace。
单击 Create。
完成后,项目如下所示:
在已有项目中新增 SkyWalking 插件
以 go-plugin-quickstart 为例,步骤如下:
右键单击项目任意节点,然后选择 New > Mosn Plugin。
指定插件名称,并且指定 Plugin Type 为 Trace。
单击 OK。
完成后,项目如下所示:
通常情况下,自动的生成观测代码无需修改即可运行。更多信息请参见:
SkyWalking 的头部跟踪规范请参见 SkyWalking Cross Process Propagation Headers Protocol。
SkyWalking 生成测试 Trace 操作请参见 go2sky。
如有需要,您可以在项目根目录
plugins/traces
模块修改代码,比如需要增加上报 tag,可以在span.go
中,对ParseVariable
追加上报的键值对。user@user-m1 traces % tree . └── skywalking └── main ├── config.go ├── driver.go ├── logger.go ├── span.go └── tracer.go 2 directories, 5 files
项目
etc/ant/env_conf
中包含了环境所需的配置,在本地启动时,会自动连接本地文件配置指定的地址SKY_WALKING_ADDRESS
。默认情况下,本地容器启动会自动替换成 Pod 的 IP,无需修改
SKY_WALKING_ADDRESS
地址值。在测试或者生产环境部署时,关联可观测插件需要在注入规则中配置好可观测性的地址(环境变量)。
MOSN_GENERATOR_SAPN_ENABLED
环境变量为true
,MOSN 作为首节点会创建 traceid。
步骤二:编译插件
在 Goland IDE 中创建好可观测插件后,MOSN mecha 会自动生成可观测的代码,也会自动创建本地可观测容器 Docker Compose(项目根目录etc/docker-compose
),用于启动 SkyWalking 的组件,允许在本地极简开发。
在 Goland 中完成编译,支持白屏化或者快捷键操作(Windows 系统暂不支持插件开发)。支持快捷键编译单插件(macOS 系统使用;Linux 系统使用 Alt+Ctrl+win+B),也支持在右键菜单中单击对应选项(选中 configs 或者 plugins 节点内单个文件夹名称)。
编译完成后,会在build/codecs/bundle/support
中包含二进制插件:
user@uesr-m1 support % tree
.
└── traces
└── skywalking
├── config.json
├── metadata.json
├── trace-skywalking-a5e036f9.so
└── trace-skywalking.md5
2 directories, 4 files
步骤三:运行插件
功能模块启动顺序如下:
启动 SkyWalking 容器服务。
在
etc
目录包含对应插件 Docker 的容器镜像:user@user-4 docker-compose % tree . └── traces └── skywalking └── docker-compose.yaml 2 directories, 1 file
您可以在
traces/skywalking
目录执行以下命令,启动 SkyWalking 的 Server:docker compose up -d
启动 Sidecar。
启动 xRPC 的服务端、xRPC 的客户端。
请参考协议扩展课程中的 xRPC 相关课程启动 Sidecar 和 xRPC 服务,完成调用后可查看可观测数据。
使用新版本 mosn-intellij 会自动触发服务发布和订阅。
支持链路跟踪需要原协议透传 SkyWalking 的 Trace 信息,否则链路无法透传。
xRPC Client 本身请求没有携带 Trace,您可以在
configs/codecs/xrpc/reqest_template.txt Header
中添加 SkyWalking 的 Trace 信息,方便 MOSN 解析读取。