Azure Functions Recherche d' Go
Instana Go Collector prend en charge le traçage des fonctions d' Azure s écrites en Go.
Les gestionnaires doivent être instrumentés à l'aide du github.com/instana/go-sensor/instrumentation/instaazurefunction package afin de collecter et d'envoyer les données de traçage.
Pour utiliser Instana afin de tracer les fonctions Azure écrites en Go, consultez les sections suivantes :
Environnements d'exécution pris en charge
- Go versions
1.13ou ultérieures
Configurer le traçage des fonctions Go et Azure
À partir de la version v1.49.0 , Instana Go, le capteur « in-process » peut détecter qu'un service est en cours d'exécution sur Azure et basculer en mode sans serveur. Au lieu d'envoyer les traces collectées à l'agent hôte, le capteur intégré au processus transmet directement les traces collectées à un point de terminaison d'acceptation sans serveur d' Instana, spécifié dans la variable INSTANA_ENDPOINT_URL d'environnement, en utilisant une clé d'agent définie dans la variable d'environnement INSTANA_AGENT_KEY.
Pour vous assurer que vous utilisez la dernière version de github.com/instana/go-sensor, vérifiez le fichier go.mod dans votre projet ou exécutez la commande suivante:
go get github.com/instana/go-sensor@latest
Vous pouvez ensuite télécharger la dernière version du capteur en cours d'exécution « Go » et mettre à jour la version requise dans le go.mod fichier.
Configuration
Pour envoyer des traces collectées, vous devez fournir une fonction Azure avec trois variables d'environnement:
INSTANA_ENDPOINT_URL: Définit l' URL de votre point de terminaison du backend Instana.INSTANA_AGENT_KEY: définit votre clé d'agent.INSTANA_TIMEOUT: définit une valeur de délai d'attente appropriée en fonction de la zone que vous avez configurée.
Pour fournir ces valeurs à l'application de fonction dans « Azure Function », accédez à la page « Azure Function Settings > Configuration» dans l'interface utilisateur de Instana, puis effectuez les opérations suivantes :
- Cliquez sur Nouveau paramètre d'application.
- Dans la boîte de dialogue Ajouter / Editer un paramètre d'application , indiquez des valeurs pour les zones name et value , puis cliquez sur Ok.
Utilisation
À ce jour, il n'existe aucun SDK officiel de Microsoft permettant de développer des fonctions d' Azure dans l' Golang. Au lieu de cela, Azure propose des gestionnaires personnalisés pour différents types de déclencheurs, qui peuvent être utilisés pour développer des fonctions Azure. Pour plus d'informations, consultez la documentation Microsoft. Pour tracer une fonction ` Azure ` qui utilise un gestionnaire personnalisé, vous devez instrumenter ce gestionnaire. github.com/instana/go-sensor/instrumentation/instaazurefunction est une bibliothèque d'instrumentation qui fournit des wrappers de middleware permettant d'instrumenter le code des gestionnaires.
Pour ajouter github.com/instana/go-sensor/instrumentation/instaazurefunction à votre projet, exécutez la commande suivante à partir du répertoire qui contient le fichier go.mod :
go get github.com/instana/go-sensor/instrumentation/instaazurefunction
Ensuite, le module d'instrumentation est ajouté à votre liste de dépendances de projet et au détecteur github.com/instana/go-sensor principal en cours de traitement.
Instrumentation d'une fonction de gestionnaire
Une fonction « Azure » classique, déclenchée par l'événement « HTTP » et écrite en langage « Go », se présente comme suit :
package main
import (
"net/http"
)
func main() {
http.HandleFunc("/api/azf-test", handlerFn)
}
func handlerFn(w http.ResponseWriter, r *http.Request) {
// ...
}
Une fonction de gestionnaire est exactement identique à un gestionnaire de base de HTTP sur Go. Pour instrumenter une fonction de gestion à l'aide de instaazurefunction, encapsulez la fonction de gestion à l'aide de instaazurefunction.WrapFunctionHandler() , de sorte que le code précédent se présente désormais comme suit :
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) {
// ...
}
Métriques d'infrastructure
Pour collecter les métriques d'exécution de l'environnement Azure et des métadonnées supplémentaires, vous devez configurer l'agent avec les détails de l'abonnement Azure . Pour plus d'informations, consultez la section « Surveillance du service d' Azure Functions ». Une fois configuré, l'agent collecte les métriques, et ces informations seront disponibles sur le tableau de bord Instana, aux côtés des données de traçage.