Heim >Backend-Entwicklung >Golang >So übertragen Sie Metriken mithilfe von go-sdk an Opentelemetry
php-Editor Xigua zeigt Ihnen, wie Sie mit go-sdk Indikatoren an Opentelemetry übertragen. Opentelemetry ist ein Open-Source-Beobachtungsframework, das Entwicklern hilft, Anwendungsmetrikdaten zu sammeln und zu analysieren. Mit go-sdk können Sie benutzerdefinierte Metriken ganz einfach an Opentelemetry übertragen und sie über Dashboards visualisieren und überwachen. Dieser Artikel führt Sie im Detail in den Installations- und Konfigurationsprozess von go-sdk ein, zeigt Ihnen, wie Sie Code schreiben, um Indikatordaten an Opentelemetry zu übertragen, und gibt einige praktische Beispiele und Best Practices. Unabhängig davon, ob Sie ein Anfänger oder ein erfahrener Entwickler sind, erhalten Sie in diesem Artikel nützliche Informationen und Anleitungen, die Ihnen dabei helfen, go-sdk besser zu nutzen, um Indikatordaten an Opentelemetry zu übertragen.
Ich habe versucht, go-sdk zu verwenden, um Metriken an Opentelemetry zu übertragen, habe aber keine Dokumentation dazu gefunden. Bisher habe ich versucht, diesen Code zu verwenden, weiß aber nicht, was der nächste Schritt ist. Um ehrlich zu sein, bin ich etwas verwirrt mit den Anbieter- und Reader-Sachen, ich bin neu in der Überwachung
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)) }
Die Quellinformationen, die mir bisher vorliegen, stammen aus dem Beispiel hier und dem Beispiel hier
Zunächst ist es erwähnenswert, dass die OTel Go-Indikator-API und das SDK derzeit als instabil gelten. Ich werde versuchen, meine Antwort auf übergeordnete Elemente zu konzentrieren, die in der stabilen OpenTelemetry-Metrikspezifikation enthalten sind, damit sie nicht veraltet. Alle folgenden Go-spezifischen Inhalte können sich ändern.
Anscheinend versuchen Sie, zwei verschiedene Arten von Exporteuren einzurichten. Der Prometheus-Exporter wird von Prometheus gescrapt, und der otelmetricgrpc
-Exporter erstellt eine Verbindung, um Metriken über OTLP an eine Senke wie den OpenTelemetry Collector zu übertragen. Möglicherweise benötigen Sie nur das eine oder das andere, nicht beide. Das erste Beispiel, das Sie verlinkt haben, dient eigentlich nur der Nachverfolgung und nicht der Metrik, aber das Prinzip ist ungefähr das gleiche.
Der Einstiegspunkt für jede Metrik im OpenTelemetry SDK ist meter 提供商
。仪表提供程序处理与度量相关的配置、聚合和数据导出。这也是用户获取 meters
. Jedes Codemodul verfügt normalerweise über eine eigene Instrumentierung. Erstellen Sie basierend auf den Messgerätmetriken und protokollieren Sie Datenpunkte basierend auf diesen Metriken. Alle Indikatorpunkte werden aggregiert und über den Messanbieter zurückgeleitet.
Um Messwerte eines Zähleranbieters auszulesen, benötigen Sie eine Art metric reader
. Wenn Sie versuchen, Metriken mithilfe eines Protokolls wie OTLP zu übertragen, können Sie ein Tool wie Periodic Export Metrics Reader verwenden, das regelmäßig Metriken von Messanbietern sammelt und diese mithilfe eines Exporters exportiert.
Wenn Sie versuchen, ein Pull-basiertes Metriksystem (wie Prometheus) zu verwenden, verhält sich der Exporter wie ein Metrikleser und liest die Metriken jedes Mal, wenn das Metriksystem den Crawl-Endpunkt anfordert. Dies geschieht im zweiten Beispiel, das Sie verlinkt haben. serveMetrics
函数打开侦听端口 2223 并处理对 localhost:2223/metrics
的请求的 Web 服务器。每次 GET
Immer wenn eine Anfrage an diesem Endpunkt eingeht, werden Metriken entsprechend der Konfiguration des Instrumentierungsanbieters aggregiert und im Antworttext zurückgegeben. Dadurch können Systeme wie Prometheus regelmäßig Metriken von Ihrer Anwendung anfordern.
Das obige ist der detaillierte Inhalt vonSo übertragen Sie Metriken mithilfe von go-sdk an Opentelemetry. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!