Azure Functions Nachverfolgung für „ Go “
Instana Go Collector unterstützt die Nachverfolgung von Funktionen unter Azure, die unter Go geschrieben wurden.
Handler müssen mithilfe des github.com/instana/go-sensor/instrumentation/instaazurefunction Pakets instrumentiert werden, um Trace-Daten zu erfassen und zu senden.
Informationen zur Verwendung von „ Instana “ für die Ablaufverfolgung von „ Azure “-Funktionen, die in „ Go “ geschrieben sind, finden Sie in den folgenden Abschnitten:
Unterstützte Laufzeiten
- Go Version
1.13oder höher
Richten Sie die Protokollierung der Funktionen „ Go “ und „ Azure “ ein
Ab Version kann der In-Process-Sensor unter Instanav1.49.0Go erkennen, dass ein Dienst auf Azure läuft, und in den serverlosen Modus wechseln. Anstatt die erfassten Traces an den Host-Agenten zu senden, übermittelt der In-Process-Sensor die erfassten Traces direkt an einen serverlosen Acceptor-Endpunkt v Instana, der in der INSTANA_ENDPOINT_URL Umgebungsvariable angegeben ist, und zwar unter Verwendung eines Agentenschlüssels, der in der Umgebungsvariable INSTANA_AGENT_KEYdefiniert ist.
Um sicherzustellen, dass Sie die neueste Version von github.com/instana/go-sensorverwenden, überprüfen Sie die Datei go.mod in Ihrem Projekt oder führen Sie den folgenden Befehl aus:
go get github.com/instana/go-sensor@latest
Anschließend können Sie die neueste Version des In-Process-Sensors „ Go “ herunterladen und die erforderliche Version in der go.mod Datei aktualisieren.
Konfiguration
Zum Senden erfasster Traces müssen Sie eine Azure -Funktion mit drei Umgebungsvariablen bereitstellen:
INSTANA_ENDPOINT_URL: Legt den Endpunkt „ URL “ Ihres Backend-Endpunkts „ Instana “ fest.INSTANA_AGENT_KEY: Legt Ihren Agentenschlüsselfest.INSTANA_TIMEOUT: Legt je nach konfigurierter Zone einen geeigneten Zeitlimitwert fest.
Um diese Werte der Funktions-App in der Funktion „ Azure “ bereitzustellen, rufen Sie in der Benutzeroberfläche von „ Instana “ die Seite „ Azure Function Settings > Configuration“ auf und führen Sie dann die folgenden Schritte aus:
- Klicken Sie auf Neue Anwendungseinstellung.
- Geben Sie im Dialogfenster Anwendungseinstellung hinzufügen/bearbeiten Werte für die Felder Name und Wert an und klicken Sie auf OK.
Nutzung
Für die Entwicklung von „ Azure “-Funktionen in „ Golang “ gibt es bis heute kein offizielles SDK von Microsoft. Stattdessen stellt „ Azure “ benutzerdefinierte Handler für verschiedene Arten von Triggern bereit, die zur Entwicklung von „ Azure “-Funktionen verwendet werden können. Weitere Informationen finden Sie in der Microsoft-Dokumentation. Um eine „ Azure “-Funktion zu verfolgen, die einen benutzerdefinierten Handler verwendet, müssen Sie den Handler instrumentieren. github.com/instana/go-sensor/instrumentation/instaazurefunction ist eine Instrumentierungsbibliothek, die Middleware-Wrapper zur Instrumentierung des Handler-Codes bereitstellt.
Um github.com/instana/go-sensor/instrumentation/instaazurefunction zu Ihrem Projekt hinzuzufügen, führen Sie den folgenden Befehl in dem Verzeichnis aus, das die Datei go.mod enthält:
go get github.com/instana/go-sensor/instrumentation/instaazurefunction
Anschließend wird das Instrumentierungsmodul zu Ihrer Projektabhängigkeitsliste und dem github.com/instana/go-sensor -Hauptprozesssensor hinzugefügt.
Handlerfunktion instrumentieren
Eine typische „ Azure “-Funktion mit einem „ HTTP “-Trigger, die in „ Go “ geschrieben ist, sieht wie folgt aus:
package main
import (
"net/http"
)
func main() {
http.HandleFunc("/api/azf-test", handlerFn)
}
func handlerFn(w http.ResponseWriter, r *http.Request) {
// ...
}
Eine Handler-Funktion entspricht genau einem einfachen Handler vom Typ „ HTTP “ unter Go. Um eine Handler-Funktion mithilfe von zu instaazurefunctioninstrumentieren, umschließen Sie den Handler mit instaazurefunction.WrapFunctionHandler() , sodass sich der vorherige Code wie folgt ändert:
package main
import (
"net/http"
instana "github.com/instana/go-sensor"
"github.com/instana/go-sensor/instrumentation/instaazurefunction"
)
// This example demonstrates how to instrument a custom handler for Azure Functions
func main() {
// Initialize a new sensor.
sensor := instana.NewSensor("my-azf-sensor")
// Instrument your handler before passing it to the http router.
http.HandleFunc("/api/azf-test", instaazurefunction.WrapFunctionHandler(sensor, handlerFn))
}
func handlerFn(w http.ResponseWriter, r *http.Request) {
// ...
}
Infrastrukturmessdaten
Zur Erfassung der Laufzeitmetriken der Azure -Umgebung und zusätzlicher Metadaten müssen Sie den Agenten mit den Azure -Subskriptionsdetails konfigurieren. Weitere Informationen finden Sie unter „Überwachung des Dienstes ‚ Azure Functions ‘“. Nach der Konfiguration erfasst der Agent die Metriken, und die Informationen werden zusammen mit den Trace-Daten im Dashboard von „ Instana “ angezeigt.