日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

通過OpenTelemetry Go SDK為Go應(yīng)用添加自定義埋點(diǎn)

更新時(shí)間:

接入ARMS應(yīng)用監(jiān)控以后,ARMS探針將會(huì)對常見的Go組件進(jìn)行了自動(dòng)埋點(diǎn),因此不需要修改任何代碼,就可以實(shí)現(xiàn)調(diào)用鏈信息的采集。如果您需要在調(diào)用鏈信息中,體現(xiàn)業(yè)務(wù)方法的執(zhí)行情況,可以引入OpenTelemetry Go SDK,在業(yè)務(wù)代碼中增加自定義埋點(diǎn)。

前提條件

已為應(yīng)用安裝Golang探針。具體操作,請參見手動(dòng)安裝Golang探針

步驟一:導(dǎo)入OpenTelemetry Go SDK

  1. main.go中添加import path。

    import (
       	"go.opentelemetry.io/otel"
    	"go.opentelemetry.io/otel/sdk/trace"
    )
  2. main.go中初始化Trace Provider。

    func init() {
    	tp := trace.NewTracerProvider()
    	otel.SetTracerProvider(tp)
    }

步驟二:自定義埋點(diǎn)

埋點(diǎn)示例代碼如下:

for {
	tracer := otel.GetTracerProvider().Tracer("")
	ctx, span := tracer.Start(context.Background(), "Client/User defined span")
	for i := 0; i < 3; i++ {
		req, err := http.NewRequestWithContext(ctx, "GET", "http://otel-server:9000/http-service1", nil)
		if err != nil {
			fmt.Println(err.Error())
			continue
		}
		client := &http.Client{}
		resp, err := client.Do(req)
		if err != nil {
			fmt.Println(err.Error())
			continue
		}
		defer resp.Body.Close()
		b, err := io.ReadAll(resp.Body)
		if err != nil {
			fmt.Println(err.Error())
			continue
		}
		time.Sleep(time.Millisecond * 10)

	}
	span.SetAttributes(attribute.String("client", "client-with-ot"))
	span.SetAttributes(attribute.Bool("user.defined", true))
	span.End()
	time.Sleep(time.Millisecond * 10)
}
  1. for語句之前先獲取Tracer。

    tracer := otel.GetTracerProvider().Tracer("")
  2. for循環(huán)開始時(shí)調(diào)用tracer.Start創(chuàng)建Span。

    ctx, span := tracer.Start(context.Background(), "spanName")

    如果希望這個(gè)Span是一個(gè)Root Span(例如在一個(gè)線程池中調(diào)用),代碼如下:

    opts := append([]trace.SpanStartOption{}, trace.WithNewRoot())
    ctx, span := tracer.Start(ctx, "spanName", opts...)
  3. 如果需要設(shè)置標(biāo)簽,可以在結(jié)束時(shí)調(diào)用span.End()。

    span.SetAttributes(attribute.String("client", "client-with-ot"))
    span.SetAttributes(attribute.Bool("user.defined", true))
    span.End()

步驟三:查詢調(diào)用鏈

ARMS控制臺(tái)應(yīng)用監(jiān)控 > 應(yīng)用列表頁面單擊應(yīng)用名稱,然后單擊調(diào)用鏈分析頁簽,查看自定義埋點(diǎn)的調(diào)用鏈詳情。更多信息,請參見調(diào)用鏈分析

image

相關(guān)文檔

您可以使用ARMS調(diào)用鏈分析的錯(cuò)/慢Trace分析功能,定位系統(tǒng)或應(yīng)用產(chǎn)生錯(cuò)、慢調(diào)用的原因。更多信息,請參見通過錯(cuò)/慢調(diào)用鏈排查應(yīng)用產(chǎn)生異常的原因