Superviser Azure Functions avec Application Insights d’Azure Monitor
La solution Azure Functions est intégrée à Application Insights pour superviser des fonctions. Pour les langages autres que .NET et .NETCore, d’autres rôles de travail/extensions spécifiques au langage sont nécessaires pour tirer pleinement parti du suivi distribué.
Application Insights collecte les données des journaux, des performances et des erreurs, et détecte automatiquement les anomalies de performances. Application Insights intègre de puissants outils d’analyse conçus pour aider à diagnostiquer les problèmes et à comprendre la manière dont vos fonctions sont utilisées. Lorsque vous avez la possibilité de visualiser les données de vos applications, vous pouvez améliorer en permanence les performances et la convivialité. Vous pouvez également utiliser Application Insights lors du développement d'un projet d'application de fonction local.
L’instrumentation Application Insights nécessaire est intégrée à Azure Functions. Tout ce dont vous avez besoin c’est d’une chaîne de connexion valide pour connecter votre application de fonction à une ressource Application Insights. La chaîne de connexion doit être ajoutée aux paramètres de votre application lorsque la ressource de votre application de fonction est créée dans Azure. Si votre application de fonction n’a pas encore de chaîne de connexion, vous pouvez la définir manuellement. Pour plus d’informations, consultez Superviser les exécutions dans Azure Functions et Chaînes de connexion.
Notes
Le support de l’ingestion de clé d’instrumentation prendra fin le 31 mars 2025. L’ingestion de clé d’instrumentation continuera de fonctionner, mais nous ne fournirons plus de mises à jour ni de support pour la fonctionnalité. Passez aux chaînes de connexion pour tirer parti des nouvelles fonctionnalités.
Si vous souhaitez obtenir la liste des scénarios d’instrumentation automatique pris en charge, consultez Environnements, langages et fournisseurs de ressources pris en charge.
Suivi distribué pour les applications Java
Notes
Auparavant, cette fonctionnalité avait une implication de démarrage à froid de 8 à 9 secondes, qui a été réduite à moins d’une seconde. Si vous avez été un utilisateur précoce de cette fonctionnalité (par exemple, avant février 2023), consultez la section « Résolution des problèmes » pour effectuer la mise à jour vers la version actuelle et bénéficier du nouveau démarrage plus rapide.
Pour afficher plus de données de vos applications Azure Functions s’appuyant sur Java que celles collectées par défaut, activez l’agent Application Insights pour Java 3.x. Cet agent permet à Application Insights de collecter et de mettre en corrélation automatiquement les dépendances, journaux et métriques à partir des bibliothèques populaires et des Kits de développement logiciel (SDK) Azure. Cette télémétrie s’ajoute à la télémétrie des requêtes déjà capturée par Functions.
En utilisant la cartographie d’application et en ayant une vue plus complète des transactions de bout en bout, vous parvenez à mieux diagnostiquer les problèmes. Vous bénéficiez d’une vue topologique sur la façon dont les systèmes interagissent avec les données sur les performances moyennes et les taux d’erreur. Vous disposez également de plus de données pour les diagnostics de bout en bout. Vous pouvez utiliser la cartographie d’application sur chaque requête pour trouver facilement la cause principale des problèmes de fiabilité et de goulots d’étranglement des performances.
Pour les cas d’usage plus élaborés, vous pouvez modifier la télémétrie en ajoutant des étendues, en mettant à jour l’état de l’étendue et en ajoutant des attributs d’étendue. Vous pouvez également envoyer une télémétrie personnalisée à l’aide d’API standard.
Activer le suivi distribué pour les applications de fonction Java
Dans le volet Vue d’ensemble de l’application de fonction, accédez à Application Insights. Sous Niveau de collection, sélectionnez Recommandé.
Configuration
Pour configurer cette fonctionnalité pour une application de fonction Azure qui n’est pas dans un plan de consommation, ajoutez des variables d’environnement dans les paramètres de l’application. Pour consulter les configurations disponibles, consultez Options de configuration : Azure Monitor Application Insights pour Java.
Pour Azure Functions sur un plan Consommation, les options de configuration disponibles sont limitées à APPLICATIONINSIGHTS_INSTRUMENTATION_LOGGING_LEVEL et APPLICATIONINSIGHTS_SELF_DIAGNOSTICS_LEVEL. Pour effectuer des configurations supplémentaires sur une fonction de plan Consommation, déployez votre propre agent, consultez Agent de suivi distribué personnalisé pour les fonctions Java.
Le déploiement de votre propre agent entraîne une implication plus longue du démarrage à froid pour les fonctions du plan Consommation.
Dépannage
Vos fonctions Java peuvent avoir des temps de démarrage lents si vous avez adopté cette fonctionnalité avant février 2023. Dans le volet Vue d’ensemble de l’application de fonction, accédez à Configuration dans le menu de navigation de gauche. Sélectionnez ensuite Paramètres d’application et utilisez les étapes suivantes pour corriger le problème.
Windows
Vérifiez si les paramètres suivants existent et supprimez-les :
XDT_MicrosoftApplicationInsights_Java -> 1 ApplicationInsightsAgent_EXTENSION_VERSION -> ~2
Activez la dernière version en ajoutant ce paramètre :
APPLICATIONINSIGHTS_ENABLE_AGENT: true
Dedicated/Premium Linux
Vérifiez si les paramètres suivants existent et supprimez-les :
ApplicationInsightsAgent_EXTENSION_VERSION -> ~3
Activez la dernière version en ajoutant ce paramètre :
APPLICATIONINSIGHTS_ENABLE_AGENT: true
Notes
Si la dernière version de l’agent Application Insights pour Java n’est pas disponible dans Azure Functions, vous pouvez la charger manuellement en suivant ces instructions.
Tester la connectivité entre votre hôte d’application et le service d’ingestion
Les SDK et les agents Application Insights envoient de la télémétrie à ingérer en tant qu’appels REST à nos points de terminaison d’ingestion. Vous pouvez tester la connectivité de votre serveur web ou de votre machine hôte d’application vers les points de terminaison de service d’ingestion en utilisant des clients du Representational State Transfer (REST) bruts à partir de commandes PowerShell ou curl. Consultez Résoudre les problèmes de télémétrie d’application manquante dans Azure Monitor Application Insights.
Journaux en double
Si vous utilisez log4j
ou logback
pour la journalisation de la console, le suivi distribué pour Java Functions crée des journaux dupliqués. Ces journaux en double sont ensuite envoyés à Application Insights. Pour éviter ce comportement, utilisez les solutions de contournement suivantes.
Log4j
Ajoutez le filtre suivant à votre log4j.xml :
<Filters>
<ThresholdFilter level="ALL" onMatch="DENY" onMismatch="NEUTRAL"/>
</Filters>
Exemple :
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
<Filters>
<ThresholdFilter level="ALL" onMatch="DENY" onMismatch="NEUTRAL"/>
</Filters>
</Console>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
Logback
Ajoutez le filtre suivant à votre logback.xml :
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>OFF</level>
</filter>
Exemple :
<configuration debug="true">
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are by default assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%kvp- %msg%n</pattern>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>OFF</level>
</filter>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="STDOUT" />
</root>
</configuration>
Suivi distribué pour les applications de fonction Node.js
Pour voir plus de données de vos applications Node Azure Functions que celles collectées par défaut, instrumentez votre fonction avec la distribution OpenTelemetry d’Azure Monitor.
Suivi distribué pour les applications de fonction Python
Pour collecter les données de télémétrie des services tels que Requests, urllib3, httpx
, PsycoPG2, entre autres, utilisez Azure Monitor OpenTelemetry Distro. Les requêtes entrantes suivies dans votre application Python hébergées dans Azure Functions ne sont pas automatiquement corrélées avec les données de télémétrie qui y sont suivies. Vous pouvez obtenir manuellement la corrélation de trace en extrayant le TraceContext directement comme suit :
import azure.functions as func
from azure.monitor.opentelemetry import configure_azure_monitor
from opentelemetry import trace
from opentelemetry.propagate import extract
# Configure Azure monitor collection telemetry pipeline
configure_azure_monitor()
def main(req: func.HttpRequest, context) -> func.HttpResponse:
...
# Store current TraceContext in dictionary format
carrier = {
"traceparent": context.trace_context.Traceparent,
"tracestate": context.trace_context.Tracestate,
}
tracer = trace.get_tracer(__name__)
# Start a span using the current context
with tracer.start_as_current_span(
"http_trigger_span",
context=extract(carrier),
):
...
Étapes suivantes
- Consultez plus d’instructions et d’informations sur la supervision d’Azure Functions.
- Obtenez une vue d’ensemble du suivi distribué.
- Découvrez ce que la cartographie d’application peut apporter à votre entreprise.
- Sachez-en plus sur les requêtes et les dépendances des applications Java.
- Découvrez-en davantage sur Azure Monitor et Application Insights.