本文演示如何將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)
}
}
步驟二:獲取接入點信息
新版控制臺
登錄可觀測鏈路 OpenTelemetry 版控制臺,在左側導航欄單擊接入中心。
在開源框架區域單擊OpenTelemetry卡片。
在彈出的OpenTelemetry面板中選擇數據需要上報的地域。
說明初次接入的地域將會自動進行資源初始化。
選擇連接方式和上報方式,然后復制接入點信息。
連接方式:若您的服務部署在阿里云上,且所屬地域與選擇的接入地域一致,推薦使用阿里云內網方式,否則選擇公網方式。
上報方式:根據客戶端支持的協議類型選擇HTTP或gRPC協議上報數據。
舊版控制臺
在左側導航欄單擊集群配置,然后在右側頁面單擊接入點信息頁簽。
在頁面頂部選擇需要接入的地域,然后在集群信息區域打開顯示Token開關。
在客戶端采集工具區域單擊OpenTelemetry。
在相關信息列中,獲取接入點信息。
說明如果應用部署于阿里云生產環境,則選擇阿里云VPC網絡接入點,否則選擇公網接入點。
步驟三:部署應用
如果您使用的是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
驗證
啟動應用并引入流量。
在可觀測鏈路 OpenTelemetry 版控制臺的應用列表頁面選擇目標應用,查看鏈路數據。