Surveiller les exécutions dans Azure Functions

Azure Functions est intégré à Azure Application Insights pour surveiller des exécutions de fonction. Cet article fournit une vue d’ensemble des fonctionnalités de surveillance fournies par Azure pour la surveillance d’Azure Functions.

Application Insights collecte des données de journal, de performances et d’erreur. Il détecte automatiquement les anomalies de performances et propose de puissants outils d’analyse, vous pouvez plus facilement diagnostiquer les problèmes et comprendre la manière dont vos fonctions sont utilisées. Ces outils sont conçus pour vous permettre d’améliorer continuellement les performances et la convivialité de vos fonctions. Vous pouvez également utiliser Application Insights lors du développement d'un projet d'application de fonction local. Pour plus d’informations, consultez Présentation d’Application Insights.

L’instrumentation Application Insights étant intégrée à Azure Functions, une clé d'instrumentation valide est nécessaire pour connecter votre application de fonction à une ressource Application Insights. La clé d’instrumentation est ajoutée aux paramètres de votre application lorsque vous créez la ressource de votre application de fonction dans Azure. Si votre application de fonction n’a pas encore cette clé, vous pouvez la définir manuellement.

Vous pouvez également surveiller l’application de fonction elle-même à l’aide d’Azure Monitor. Pour en savoir plus, consultez Monitorage d’Azure Functions avec Azure Monitor.

Tarification et limites d’Application Insights

Vous pouvez tester l’intégration d’Application Insights avec Azure Functions gratuitement, avec une limite quotidienne de la quantité de données traitées.

Si vous activez Application Insights pendant le développement, vous pouvez atteindre cette limite pendant le test. Azure envoie des notifications sur le portail et par e-mail lorsque la limite quotidienne est proche. Si vous manquez ces alertes et atteignez la limite fixée, les nouveaux journaux d’activité n’apparaîtront pas dans les requêtes Application Insights. N’oubliez pas ces limites pour éviter de passer du temps à résoudre des problèmes superflus. Pour plus d’informations, consultez Facturation d’Application Insights.

Important

Application Insights présente une fonctionnalité d’échantillonnage qui peut vous éviter de produire une quantité excessive de données de télémétrie portant sur les exécutions terminées aux heures de forte activité. L’échantillonnage est activé par défaut. Si vous pensez qu’il vous manque des données, il vous faut peut-être simplement adapter les paramètres d’échantillonnage à votre scénario de surveillance. Pour plus d’informations, consultez Configurer l’échantillonnage.

La liste complète des fonctionnalités Application Insights disponibles pour votre application de fonction est détaillée dans Fonctionnalités Application Insights prises en charge pour Azure Functions.

Intégration d’Application Insights

En général, vous créez une instance d’Application Insights lorsque vous créez votre application de fonction. Dans ce cas, la clé d’instrumentation requise pour l’intégration est déjà définie en tant que paramètre d’application nommé APPINSIGHTS_INSTRUMENTATIONKEY. Si, pour une raison quelconque, votre application de fonction n’a pas de clé d’instrumentation définie, vous devez activer l’intégration d’Application Insights.

Important

Les clouds souverains, comme Azure Government, requièrent l’utilisation de la chaîne de connexion Application Insights (APPLICATIONINSIGHTS_CONNECTION_STRING) au lieu de la clé d’instrumentation. Pour en savoir plus, consultez la référence APPLICATIONINSIGHTS_CONNECTION_STRING.

Le tableau suivant détaille les fonctionnalités prises en charge d’Application Insights disponibles pour surveiller vos applications de fonction :

Version du runtime Azure Functions 1.x 2.x+
Collecte automatique de
• Requêtes
• Exceptions
• Compteurs de performance
• Dépendances
   — HTTP
   — Service Bus
   — Event Hubs
   — SQL*
Fonctionnalités prises en charge
• Pulsation rapide/Métriques temps réel Oui Oui
   — Canal de contrôle sécurisé Oui
• Échantillonnage Oui Oui
• Pulsations Oui
Corrélation
• Service Bus Oui
• Event Hubs Oui
Configurable
Entièrement configurable Oui

* Pour activer la collection de texte de chaîne de requête SQL, consultez Activer la collection de requêtes SQL.

Collecte des données de télémétrie

Une fois l’intégration d’Application Insights activée, les données de télémétrie sont envoyées à votre instance d’Application Insights connectée. Ces données incluent des journaux générés par l’hôte Functions, des traces écrites à partir de votre code de fonctions et des données de performances.

Notes

En plus des données de vos fonctions et de l’hôte Functions, vous pouvez également collecter des données à partir du contrôleur d’échelle Functions.

Niveaux et catégories de journalisation

Lorsque vous écrivez des traces à partir de votre code d’application, vous devez leur assigner un niveau de journalisation. Les niveaux de journalisation vous permettent de limiter la quantité de données collectées à partir de vos traces.

Un niveau de journal est affecté à chaque journal. La valeur est un entier qui indique l’importance relative :

LogLevel Code Description
Trace 0 Journaux contenant les messages les plus détaillés. Ces messages peuvent contenir des données d’application sensibles. Ils sont désactivés par défaut et ne doivent jamais être activés dans un environnement de production.
Débogage 1 Journaux utilisés pour l’investigation interactive durant le développement. Ils doivent principalement contenir des informations utiles pour le débogage et n’ont pas d’intérêt à long terme.
Information 2 Journaux utilisés pour suivre le flux général de l’application. Ils ont généralement une utilité à long terme.
Avertissement 3 Les journaux qui mettent en évidence un événement anormal ou inattendu dans le workflow de l’application, mais ne provoquent pas l’arrêt de l’exécution de l’application.
Error 4 Les journaux qui surveillent le moment où le flux actuel de l’exécution est arrêté en raison d’un échec. Ces erreurs doivent indiquer un échec dans l’activité en cours, et non un échec sur l’ensemble de l’application.
Critique 5 Journaux qui décrivent un plantage irrécupérable de l’application ou du système, ou une défaillance catastrophique nécessitant une attention immédiate.
None 6 Désactive la journalisation pour la catégorie spécifiée.

La configuration du fichier host.json détermine la quantité de journalisation qu’une application de fonction envoie à Application Insights.

Pour en savoir plus sur les niveaux de journalisation, consultez Configurer les niveaux de journalisation.

En affectant des éléments journalisés à une catégorie, vous avez davantage de contrôle sur les données de télémétrie générées à partir de sources spécifiques dans votre application de fonction. Les catégories facilitent l’exécution d’analyses sur les données collectées. Les traces écrites à partir de votre code de fonction sont assignées à des catégories individuelles en fonction du nom de la fonction. Pour en savoir plus sur les catégories, consultez Configurer des catégories.

Données de télémétrie personnalisées

En C#, JavaScript et Python, vous pouvez utiliser un kit SDK Application Insights pour écrire des données de télémétrie personnalisées.

Dépendances

Depuis la version 2.x de Functions, Application Insights collecte automatiquement les données sur les dépendances pour les liaisons qui utilisent certains SDK clients. Le suivi distribué et le suivi des dépendances d’Application Insights ne sont actuellement pas pris en charge pour les applications C# s’exécutant dans un processus worker isolé. Application Insights collecte des données sur les dépendances suivantes :

  • Azure Cosmos DB
  • Azure Event Hubs
  • Azure Service Bus
  • Services de stockage Azure (Blob, file d’attente et table)

Les requêtes HTTP et les appels de base de données à l’aide de SqlClient sont également capturés. Pour obtenir la liste complète des dépendances prises en charge par Application Insights, consultez les dépendances suivies automatiquement.

Application Insights génère un plan de l’application des données de dépendance collectées. Voici un exemple de plan d’application d’une fonction de déclencheur HTTP avec une liaison de sortie de stockage File d’attente.

Application map with dependency

Les dépendances sont écrites au niveau Information. Si vous filtrez sur le niveau Warning ou supérieur, vous ne pouvez pas visualiser les données de dépendance. En outre, la collecte automatique des dépendances se produit en dehors de l’étendue utilisateur. Pour capturer des données de dépendance, assurez-vous que le niveau est défini sur au moins Information en dehors de l’étendue de l’utilisateur (Function.<YOUR_FUNCTION_NAME>.User) dans votre hôte.

En plus de la collecte automatique des données de dépendance, vous pouvez également utiliser l’un des kits de développement logiciel d’Application Insights propres aux langages pour écrire des informations de dépendance personnalisées dans les journaux. Pour obtenir un exemple d’écriture de dépendances personnalisées, consultez l’un des exemples de langages suivants :

Compteurs de performances

La collecte automatique de compteurs de performances n’est pas prise en charge sur Linux.

Écriture dans les journaux

La façon dont vous écrivez dans les journaux et les API que vous utilisez dépend du langage de votre projet d’application de fonction.
Pour en savoir plus sur l’écriture des journaux à partir de vos fonctions, consultez le guide du développeur pour votre langage.

Analyser des données

Par défaut, les données collectées à partir de votre application de fonction sont stockées dans Application Insights. Dans le portail Azure, Application Insights fournit un ensemble complet de visualisations de vos données de télémétrie. Vous pouvez parcourir les journaux d’erreurs et interroger les événements et les métriques. Pour en savoir plus, y compris des exemples de base montrant comment afficher et interroger vos données collectées, consultez Analyser la télémétrie d’Azure Functions dans Application Insights.

Journaux d’activité en continu

Quand vous développez une application, vous voulez souvent voir ce qui est écrit dans les journaux en quasi temps réel lors de l’exécution dans Azure.

Il existe deux façons d’afficher un flux des données de journal générées par vos exécutions de fonction.

  • Streaming des journaux intégré : la plateforme App Service vous permet d’afficher un flux de vos fichiers journaux d’application. Ce flux équivaut à la sortie observée quand vous déboguez vos fonctions au cours du développement local et quand vous utilisez l’onglet Test dans le portail. Toutes les informations basées sur les journaux sont affichées. Pour plus d’informations, consultez Diffuser les journaux d’activité en continu. Cette méthode de streaming ne prend en charge qu’une seule instance et ne peut pas être utilisée avec une application exécutée sur Linux dans un plan Consommation.

  • Flux de métriques temps réel : quand votre application de fonction est connectée à Application Insights, vous pouvez voir les données des journaux et d’autres métriques en quasi temps réel dans le portail Azure avec Flux de métriques temps réel. Appliquez cette méthode lors de la supervision de fonctions s’exécutant sur plusieurs instances ou sur Linux dans un plan Consommation. Cette méthode utilise des données échantillonnées.

Les flux de journaux peuvent être affichés à la fois dans le portail et dans la plupart des environnements de développement locaux. Pour savoir comment activer les flux de journalisation, consultez Activer les journaux d’exécution avec diffusion en continu dans Azure Functions.

Journaux de diagnostic

Application Insights vous permet d’exporter des données de télémétrie vers un stockage à long terme ou d’autres services d’analyse.

Étant donné que Functions s’intègre également à Azure Monitor, vous pouvez également utiliser des paramètres de diagnostic pour envoyer des données de télémétrie à différentes destinations, y compris des journaux Azure Monitor. Pour en savoir plus, consultez Monitorage d’Azure Functions avec Azure Monitor Logs.

Mettre à l'échelle les journaux de contrôleur

Le contrôleur de mise à l’échelle Azure Functions surveille les instances de l’hôte Azure Functions sur lequel votre application s’exécute. Ce contrôleur prend des décisions concernant l’ajout ou la suppression d’instances en fonction des performances actuelles. Vous pouvez faire en sorte que le contrôleur de mise à l’échelle émette des journaux vers Application Insights pour mieux comprendre les décisions prises par ce contrôleur pour votre application de fonction. Vous pouvez également stocker les journaux générés dans le stockage d’objets blob à des fins d’analyse par un autre service.

Pour activer cette fonctionnalité, vous ajoutez un paramètre d’application nommé SCALE_CONTROLLER_LOGGING_ENABLED à vos paramètres d’application de fonction. Pour en savoir plus, consultez Configurer les journaux de contrôleur de mise à l’échelle.

Mesures Azure Monitor

En plus des données de télémétrie basées sur les journaux que collecte Application Insights, vous pouvez obtenir des données sur la façon dont l’application de fonction s’exécute à partir d’Azure Monitor Metrics. Pour en savoir plus, consultez Surveillance avec Azure Monitor.

Signaler des problèmes

Pour signaler un problème avec l’intégration d’Application Insights dans Azure Functions, ou pour faire une suggestion ou une demande, créez un problème dans GitHub.

Étapes suivantes

Pour plus d’informations, consultez les ressources suivantes :