Les journaux Application Insights sont manquants ou incorrects pour les applications Azure Functions
Article
Vous pouvez surveiller étroitement l’application de fonction via l’intégration entre Azure Functions et Application Insights. Vous pouvez également utiliser Application Insights sans configuration personnalisée.
Si les journaux Application Insights sont manquants ou si les données semblent partielles ou inexactes, procédez comme suit pour résoudre le problème.
Vérifier la configuration de l’application de fonction
Accédez à votre application de fonction sur le Portail Azure.
Dans la barre de recherche , tapez Vérifications de configuration de la fonction et ouvrez-la.
Vous voyez un rapport de diagnostic de toutes les vérifications de configuration d’application de fonction. En particulier pour Application Insights, les vérifications suivantes sont effectuées :
Seul l’un des paramètres de connexion suivants existe :
Nous vous recommandons d’utiliser le APPLICATIONINSIGHTS_CONNECTION_STRING pour un comportement plus stable. La possibilité d’utiliser APPINSIGHTS_INSTRUMENTATIONKEY sera déconseillée d’après 2025.
La journalisation intégrée AzureWebJobsDashboard est désactivée, comme cela est recommandé.
L’échantillonnage est activé pour la télémétrie Azure Functions (activée par défaut).
Recommandation : l’application de fonction doit se trouver sur la version 4 et la version du runtime doit être au moins 4.15.2xx. Cela est dû au fait que, à partir de cette version, vous pouvez suivre les flux de journal d’Azure Functions vers le service Application Insights. En surveillant les flux de journal, vous pouvez rechercher les journaux manquants.
Journaux des application personnalisés
Par défaut, les journaux des applications personnalisés que vous écrivez sont envoyés à l’hôte Functions, qui les envoie ensuite à Application Insights sous la catégorie Worker. Toutefois, certaines piles de langage vous permettent d’envoyer les journaux directement à Application Insights, ce qui vous donne un contrôle total sur la façon dont les journaux d’activité que vous écrivez sont émis. Dans ce cas, le pipeline de journalisation passe de worker > Functions host > Application Insights à worker > Application Insights.
Le tableau suivant résume les options de configuration disponibles pour chaque pile :
Pile de langages
Où configurer des journaux personnalisés
.NET (modèle in-process)
host.json
.NET (modèle isolé)
Par défaut (envoyer les journaux personnalisés à l’hôte Functions) : host.json Pour envoyer des journaux directement à Application Insights, consultez Configurer Application Insights dans HostBuilder.
Node.JS
host.json
Python
host.json
Java
Par défaut (envoyer les journaux personnalisés à l’hôte Functions) : host.json Pour envoyer des journaux directement à Application Insights, consultez Configurer l’agent Java Application Insights.
PowerShell
host.json
Quand vous configurez des journaux d’application personnalisés pour les envoyer directement, l’hôte ne les émet plus et host.json ne contrôle plus leur comportement. De même, les options exposées par chaque pile s’appliquent uniquement aux journaux personnalisés et ne modifient pas le comportement des autres journaux d’exécution décrits dans cet article. Dans ce cas, pour contrôler le comportement de tous les journaux, vous devrez peut-être modifier les deux configurations.
Les journaux sont manquants ou partiels
Application Insights collecte des données de journal, de performances et d’erreur.
La configuration d’échantillonnage est utilisée pour réduire le volume de données de télémétrie. La fonctionnalité d’échantillonnage est activée par défaut avec les paramètres indiqués dans l’exemple de host.json suivant. Les types exclus ne sont pas échantillonné.
Si vous remarquez des journaux partiellement manquants, cela peut se produire en raison de l’échantillonnage. Pour déterminer le taux d’échantillonnage réel, utilisez une requête Analytics qui utilise l’intervalle de temps requis indiqué dans l’extrait de code suivant. Si vous observez que le TelemetrySavedPercentage type d’échantillonnage est inférieur à 100, ce type de télémétrie est échantillonné.
union requests,dependencies,pageViews,browserTimings,exceptions,traces
| where timestamp > todatetime("mm/dd/yyyy hh:mm:ss") and timestamp < todatetime("mm/dd/yyyy hh:mm:ss")
| summarize TelemetrySavedPercentage = 100/avg(itemCount), TelemetryDroppedPercentage = 100-100/avg(itemCount) by bin(timestamp, 1d), itemType
| sort by timestamp asc
Vous pouvez augmenter ou supprimer les journaux écrits. Pour ce faire, vous pouvez utiliser une combinaison de niveaux de journal et de catégories comme configuré dans host.json.
L’enregistreur d’événements d’Azure Functions inclut une catégorie par journal. La catégorie indique quelle partie du code d’exécution ou votre code de fonction a généré le journal. Par exemple :
Function.<YOUR_FUNCTION_NAME> Voici Host.Results quelques-unes des catégories disponibles.
Un niveau de journal est affecté à chaque journal. La valeur indique une importance relative, telle que Warning ou Information.
Vous pouvez configurer la façon dont votre application doit écrire les journaux en suivant l’exemple d’extrait de code :
{
"version": "2.0",
"logging": {
"logLevel": {
"default": "Information", // catch all default, with modifications below for individual categories.
"Function": "Warning", // Warning level from all Functions (except the ones configured below).
"Host.Aggregator": "Trace", // Log all traces in the 'customMetrics' table of (and shown on Metrics/Alerts blade in AI) - use either this or Host.Results
"Host.Results": "Error", // Error and Critical requests are only logged in the 'requests' table of the AI (and shown on Monitor Functions blade in Functions App) - use either this or Host.Aggregator
"Function.Function1": "Information", //Information level logs from Function 1, logged in 'traces', 'dependencies' and 'customMetrics' tables of AI
"Function.Function2.User": "Information" //user code logs from Function2, logged in 'traces' table of AI
},
"applicationInsights": {
"samplingSettings": {
"isEnabled": true,
"maxTelemetryItemsPerSecond": 1,
"excludedTypes": "Exception"
}
}
}
}
Pour configurer ces valeurs au niveau des paramètres de l’application (pour éviter le redéploiement sur host.json modifications), remplacez les valeurs spécifiques host.json en créant une valeur équivalente en tant que paramètre d’application. Pour plus d’informations, consultez Substituer les valeurs de host.json.
L’application de fonction intégrée de réseau virtuel ne génère aucun journal
Si une application de fonction est intégrée à un réseau virtuel, vous devez ouvrir le port 443 pour le trafic sortant dans votre pare-feu de serveur afin de permettre au Kit de développement logiciel (SDK) Application Insights ou à l’agent Application Insights d’envoyer des données au portail pour les URL suivantes :
Générez des solutions de bout en bout dans Microsoft Azure pour créer des fonctions Azure Functions, implémenter et gérer des applications web, développer des solutions qui utilisent le Stockage Azure, et bien plus encore.