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中文網其他相關文章!