本文演示如何将Kitex应用接入可观测链路 OpenTelemetry 版。
ARMS应用监控针对Golang语言提供了商业化版本的自研探针,提供了无侵入的埋点能力,拥有更加丰富的功能和更高的稳定性。详细信息,请参见开始监控Golang应用。
前提条件
背景信息
CloudWeGo-Kitex是字节跳动开源的Golang微服务RPC框架,具有高性能、强可扩展的主要特点。其默认支持Thrift、Kitex Protobuf和gRPC消息协议,且支持丰富服务治理能力及扩展能力。
步骤一:接入Kitex
在您的Kitex应用中,添加如下代码。
import (
"github.com/kitex-contrib/obs-opentelemetry/provider"
"github.com/kitex-contrib/obs-opentelemetry/tracing"
// ...
)
func main() {
// 省略部分初始化代码
// **接入OpenTelemetry,默认从环境变量配置**
p := provider.NewOpenTelemetryProvider(
provider.WithServiceName(constants.NoteServiceName),
provider.WithEnableMetrics(false),
)
defer p.Shutdown(context.Background())
Init()
svr := note.NewServer(new(NoteServiceImpl),
server.WithServerBasicInfo(&rpcinfo.EndpointBasicInfo{ServiceName: constants.NoteServiceName}), // server name
// ...
// **注入tracing到server实例中**
server.WithSuite(tracing.NewServerSuite()),
)
err = svr.Run()
if err != nil {
klog.Fatal(err)
}
}
步骤二:获取接入点信息
登录ARMS控制台,在左侧导航栏单击接入中心。
在服务端应用区域单击OpenTelemetry卡片。
在弹出的OpenTelemetry面板中选择数据需要上报的地域。
说明初次接入的地域将会自动进行资源初始化。
选择连接方式和上报方式,然后复制接入点信息。
连接方式:若您的服务部署在阿里云上,且所属地域与选择的接入地域一致,推荐使用阿里云内网方式,否则选择公网方式。
上报方式:根据客户端支持的协议类型选择HTTP或gRPC协议上报数据。
步骤三:部署应用
如果您使用的是ACK服务,可以在容器服务管理控制台目标集群的 页面创建Deployment。具体操作,请参见创建无状态工作负载Deployment。
根据上文步骤二获取的接入点信息配置如下环境变量,从而上报数据到可观测链路 OpenTelemetry 版。
Key
说明
示例值
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
Trace上报的Endpoint。
http://tracing-analysis-dc-zb.aliyuncs.com:8090
OTEL_EXPORTER_OTLP_TRACES_HEADERS
OTEL上报会带上的Header,用于鉴权。
authentication=cx0xxxxx@285xxxxx_cx0xxxxx@53xxxxx
验证
启动应用并引入流量。
登录ARMS控制台后,在 页面选择目标应用,查看链路数据。
语言列显示图标的应用为接入应用监控的应用,显示-图标的应用为接入可观测链路 OpenTelemetry 版的应用。