首頁  >  文章  >  後端開發  >  如何使用 go-sdk 將指標推送到 Opentelemetry

如何使用 go-sdk 將指標推送到 Opentelemetry

王林
王林轉載
2024-02-08 23:42:321051瀏覽

如何使用 go-sdk 将指标推送到 Opentelemetry

php小編西瓜為您介紹如何使用go-sdk將指標推送到Opentelemetry。 Opentelemetry是一個開源的觀測框架,可以幫助開發人員收集和分析應用程式的指標資料。使用go-sdk,您可以輕鬆地將自訂指標推送到Opentelemetry,並透過儀表板進行視覺化和監控。本文將為您詳細介紹go-sdk的安裝和設定過程,以及如何編寫程式碼將指標資料推送到Opentelemetry,並給出一些實際的範例和最佳實踐。無論您是新手還是有經驗的開發者,都能從本文中獲得有用的信息和指導,幫助您更好地使用go-sdk推送指標數據到Opentelemetry。

問題內容

我嘗試使用 go-sdk 將指標推送到 opentelemetry,但我沒有找到任何關於它的文件。到目前為止,我嘗試使用這段程式碼,但不知道下一步是什麼,說實話,我對提供者和讀者的東西有點困惑,我是監控方面的新手

func main() {
    ctx := context.Background()

    res, err := resource.New(ctx, resource.WithAttributes(semconv.ServiceName("my-service")))
    if err != nil {
        panic(err)
    }

    ctx, cancel := context.WithTimeout(ctx, time.Second)
    defer cancel()
    conn, err := grpc.DialContext(ctx, "localhost:4317", grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithBlock())
    if err != nil {
        panic(err)
    }

    metricExporter, err := otlpmetricgrpc.New(ctx, otlpmetricgrpc.WithGRPCConn(conn))
    if err != nil {
        panic(err)
    }

    exporter, err := prometheus.New()
    if err != nil {
        panic(err)
    }

    provider := metric.NewMeterProvider(metric.WithReader(exporter))
    meter := provider.Meter("github.com/open-telemetry/opentelemetry-go/example/prometheus")

    counter, err := meter.Float64Counter("foo", instrument.WithDescription("a simple counter"))
    if err != nil {
        panic(err)
    }
    counter.Add(ctx, 5)

    reader := metric.NewPeriodicReader(metricExporter, metric.WithInterval(1*time.Second))

}

到目前為止,我所掌握的來源資訊來自此處的範例和此處的範例

#首先,值得注意的是,OTel Go 指標API 和SDK目前被認為不穩定。我將盡力將我的答案集中在穩定的 OpenTelemetry 指標規格中包含的更高層級的專案上,這樣它就不會過時。以下任何特定於 go 的內容都可能會發生變化。

您似乎正在嘗試設定兩種不同類型的出口商。 Prometheus 匯出器由 Prometheus 抓取,並且 otelmetricgrpc 匯出器建立一個連接,透過 OTLP 將指標推送到 OpenTelemetry Collector 等接收器。您可能只需要其中之一,而不是兩者都需要。您連結的第一個範例實際上僅用於跟踪,而不是指標,但原理大致相同。

任何 OpenTelemetry SDK 中指標的入口點都是 meter 提供者 。儀表提供者處理與度量相關的配置、聚合和資料導出。這也是使用者取得 meters 的方式。每個程式碼模組通常都有自己的儀表。根據該儀表指標創建,並根據這些指標記錄資料點。所有指標點都聚合在一起並透過計量提供者回流。

為了從儀表提供者讀取指標,您需要某種 metric reader 。如果您嘗試使用 OTLP 等協定推送指標,則可以使用定期匯出指標讀取器之類的工具,該讀取器會定期從計量提供者收集指標並使用匯出器匯出它們。

如果您嘗試使用基於拉動的度量系統(例如普羅米修斯),則導出器的作用類似於度量讀取器,並在度量系統每次請求抓取端點時讀取度量。這就是您連結的第二個範例中所做的事情。 serveMetrics 函數開啟偵聽連接埠 2223 並處理對 localhost:2223/metrics 的請求的 Web 伺服器。每次 GET 請求進入該端點時,都會根據儀表提供者配置聚合指標並在回應正文中傳回。這允許像 Prometheus 這樣的系統定期從您的應用程式請求指標。

以上是如何使用 go-sdk 將指標推送到 Opentelemetry的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除