Les fonctions fonctionnent sur demande, s'échellent automatiquement et vous ne payez que pour le temps d'exécution. Cependant, ce changement de paradigme apporte un nouvel ensemble de défis d'observation. Les méthodes de surveillance traditionnelles conçues pour les serveurs à long terme se décomposent lorsque les fonctions des dernières millisecondes, les instances sont éphémères et l'environnement d'exécution est partagé. Sans instrumentation soignée, vous pouvez facilement perdre de la visibilité dans les goulets d'étranglement de performance, les sources d'erreur et les pilotes de coûts.

Les défis uniques de l'observation dans les sans-serveur

Les architectures sans serveur présentent plusieurs problèmes distincts qui rendent la surveillance et la connexion plus difficile que dans les configurations traditionnelles :

  • Fonctions éphémères:[ Une instance de fonction peut exister pendant quelques secondes seulement. Les agents classiques qui installent des démons ou des fichiers de log de queue sont peu pratiques. Vous avez besoin d'une approche complètement différente pour capturer les métriques et les logs.
  • Cold commence:[ Lorsqu'une fonction est invoquée après avoir été inactive, elle peut prendre beaucoup plus de temps en raison de l'initialisation du conteneur et de la charge de dépendance.
  • Complicité répartie: Une application sans serveur implique souvent plusieurs fonctions, API Gateway, DynamoDB, S3 et des services tiers. La recherche d'une requête sur ces composants nécessite des identifiants de transactions distribués et des journaux corrélés.
  • L'attribution des coûts généraux :[ La facturation par poste signifie que vous devez suivre les fonctions qui consomment le plus de ressources, y compris la mémoire, la durée et les appels d'API en aval.
  • Écalage et étranglement:[ Les plateformes sans serveur peuvent faire varier de zéro à des centaines d'instances simultanées en quelques secondes. Cette élasticité peut provoquer des disputes sur les ressources en aval et entraîner des erreurs de throttling.

Ces facteurs exigent une pile de surveillance et de logage qui est conçue pour les serveurs sans. Les outils génériques ne parviennent souvent pas à saisir le bon niveau de détail ou à introduire une latence inacceptable.

Exigences de base pour l'observation sans serveur

Avant d'évaluer les outils, il aide à définir à quoi ressemble une observabilité efficace dans un environnement sans serveur :

  • Méthodes: Données en temps réel sur les invocations, la durée, les taux d'erreur, les gaz, la fréquence de démarrage à froid et les exécutions simultanées.
  • Logs: Sortie captée des fonctions, y compris les journaux structurés au format JSON pour faciliter la recherche. Les journaux doivent être consultables, filtrés et conservés pour être conformes.
  • Traces: Traçage distribué qui suit une seule requête de API Gateway via plusieurs fonctions Lambda et services en aval. Les traces révèlent des ruptures de latence et identifient la cause fondamentale des défaillances.
  • Alerte:[ Notifications proactives pour des anomalies telles que des pics soudains dans les taux d'erreur, des latences de démarrage à froid au-dessus des limites acceptables, ou des anomalies de coûts.
  • Visibilité du coût:[ Capacité de ventiler les coûts par fonction, par demande ou par route API. Cela aide à optimiser le rendement et le budget.

Les outils que vous choisissez devraient couvrir ces catégories sans nécessiter une configuration manuelle excessive.

Haut de la page Outils de surveillance pour les environnements sans serveur

AWS CloudWatch

AWS CloudWatch est la solution de surveillance native pour AWS Lambda et d'autres services AWS. Elle collecte automatiquement des métriques telles que des invocations, la durée, le nombre d'erreurs et les gaz. Vous pouvez définir des métriques personnalisées, créer des alarmes et construire des tableaux de bord. CloudWatch fournit également une collection de journaux via CloudWatch Logs avec un agent intégré que Lambda utilise natif.

Les forces de CloudWatch incluent zéro coût supplémentaire pour les métriques de base, une intégration profonde avec AWS, et le support pour la publication métrique personnalisée à l'aide de l'API . Cependant, la log par défaut peut être bruyante et coûteuse à l'échelle.

Pour le traçage distribué, AWS offre X-Ray, qui s'intègre à CloudWatch mais est un service distinct. X-Ray fournit des cartes de service, des traces et des annotations, mais nécessite une instrumentation explicite dans votre code de fonction.

Site officiel de AWS CloudWatch

Chien de données

Datadog est une plateforme de tiers largement adoptée qui offre une surveillance unifiée à travers les fournisseurs de cloud. Ses capacités de surveillance sans serveur incluent des tableaux de bord hors-boîte pour les fonctions AWS Lambda, Azure et Google Cloud. Datadog découvre automatiquement les fonctions, collecte des paramètres d'invocation et fournit une détection de démarrage à froid en temps réel.

L'un des principaux avantages de Datadog est sa capacité à corréler les métriques, les logs et les traces dans une seule interface. Vous pouvez commencer par un pic de taux d'erreur et de percer dans les lignes de trace et de log exacts pour cette fonction. La plate-forme comprend également des fonctionnalités de détection d'anomalie, de surveillance synthétique et d'analyse des coûts.

Surveillance sans serveur

Nouvelle relique

New Relic offre une solution de surveillance robuste sans serveur qui prend en charge les fonctions AWS Lambda, Azure et Google Cloud. Elle fournit un traçage distribué, une analyse des erreurs et des ventilations détaillées des performances (y compris les durées de démarrage à froid et de démarrage à chaud).

La plate-forme utilise un agent léger qui intègre via les couches Lambda ou le plugin Serverless Framework. Les tableaux de bord de New Relic sont personnalisables et comprennent l'alerte à moteur d'IA. Une caractéristique notable est "Errors inbox" qui regroupe des erreurs similaires pour réduire le bruit. New Relic a un niveau gratuit généreux mais le coût pour les besoins de l'entreprise peut être élevé, en particulier avec de grands volumes de log.

Nouvelle surveillance sans serveur Relic

Prométhée et Grafana

Prométhée est une option puissante et entièrement personnalisable. Prométhée est conçue pour la collection de métriques à base de pull et fonctionne mieux avec des services à long terme, mais elle peut être adaptée à des serveurs sans porte-pousse ou à des exportateurs personnalisés. Pour AWS Lambda, vous pouvez utiliser un outil comme pour pousser les métriques de chaque invocation de fonction vers une porte-pousse Prométhée, qui Prométhée s'efface ensuite.

Grafana fournit de riches visualisations et alertes. La combinaison vous donne un contrôle complet sur votre pile de surveillance, mais elle nécessite une configuration et une maintenance importantes. Vous devez gérer l'infrastructure pour Prométheus, Alertmanager et Grafana, et vous assurer que les mesures des fonctions sans serveur sont poussées ou grattées de manière fiable.

Aperçu du prométhée

Outils de logging efficaces pour sans serveur

Registres de veille en nuage AWS

Comme destination de log par défaut pour AWS Lambda, les journaux de veille Cloud sont automatiquement activés lorsque vous invoquez une fonction. Chaque fonction écrit des journaux dans un groupe de log, et chaque invocation crée un flux de log. Vous pouvez utiliser la console AWS ou CLI pour rechercher des journaux, mais la requête avancée nécessite des journaux de veille Cloud Insights, qui utilise une syntaxe SQL.

Les journaux CloudWatch sont simples à adopter, mais peuvent devenir coûteux et lents à l'échelle. Les politiques de conservation des journaux doivent être définies pour contrôler les coûts. De nombreux développeurs utilisent la logarithme structurée (par exemple ) pour rendre les journaux plus consultables.

Les données sont disponibles sur le site internet de l'Agence.

Logz.io est une plateforme d'analyse de log basée sur le cloud, construite sur le haut de la balance ELK et Grafana. Elle offre un pipeline d'ingestion géré pour les logs sans serveur, en utilisant un agent ou via la diffusion directe des abonnements AWS CloudWatch Logs. Logz.io fournit des informations sur l'IA, la détection d'anomalies et des tableaux de bord pré-construits pour AWS Lambda.

La plateforme est adaptée aux équipes qui veulent une solution de log entièrement gérée avec des fonctionnalités d'entreprise comme le contrôle d'accès basé sur le rôle et la conformité (SOC 2, HIPAA). Le prix Logz.io est basé sur le volume d'ingestion de données, vous devez donc être attentif à la logage verbeux. Il s'intègre facilement avec AWS, Azure et Google Cloud via l'envoi de log.

Logz.io log sans serveur

Spunk est une plateforme de gestion et d'analyse de log très utilisée dans les environnements d'entreprise. Il peut ingérer les logs sans serveur via les filtres d'abonnement HTTP Event Collector (HEC) ou CloudWatch Logs. Le langage de traitement de recherche (SPL) de Splunk permet des requêtes complexes, des analyses statistiques et des alertes en temps réel.

Splunk offre une grande évolutivité et de nombreuses intégrations, mais il est livré avec une courbe d'apprentissage et une étiquette de prix significatifs. Pour les équipes plus petites ou les applications légères, Splunk peut être surqualifié. Cependant, pour les organisations déjà investies dans Splunk pour d'autres infrastructures, ajouter des journaux sans serveur est simple.

Spunk Cloud Platform

Échelle ELK (Elasticsearch, Logstash, Kibana)

Le open-source ELK Stack fournit un pipeline flexible: Logstash (ou Beats) collecte les journaux, Elasticsearch les indexe et Kibana visualise et interroge. Pour les serveurs, vous pouvez faire suivre les journaux depuis les journaux CloudWatch en utilisant une fonction Lambda qui pousse vers Logstash ou directement vers Elasticsearch.

ELK vous donne un contrôle total sur la transformation et la conservation des données, et il peut être auto-organisé ou utilisé comme un service géré (Elastic Cloud). L'inconvénient principal est la complexité opérationnelle. Vous devez maintenir la pile, gérer l'échelle et configurer la gestion du cycle de vie de l'index.

Observabilité élastique pour les sans-serveur

Traçage distribué : un complément essentiel

La recherche distribuée est essentielle pour comprendre comment une requête circule à travers plusieurs fonctions sans serveur, passerelles API et services en aval comme DynamoDB ou SNS. Sans la recherche, une réponse lente peut être attribuée à la mauvaise fonction.

AWS X-Ray est le service de traçage natif pour AWS Lambda. Il capture automatiquement les segments et sous-segments pour les appels SDK AWS. Vous pouvez ajouter des sous-segments personnalisés pour tout travail supplémentaire. X-Ray s'intègre à CloudWatch ServiceLens pour combiner des traces avec des métriques et des journaux.

OpenTelemetry est un standard émergent pour l'observation qui prend en charge sans serveur. Vous pouvez instrumenter vos fonctions avec OpenTelemetry SDKs et envoyer la télémétrie à différents moteurs (Jaeger, Zipkin, Datadog, New Relic). OpenTelemetry fournit une auto-instrumentation spécifique au langage et une API neutre pour les fournisseurs, ce qui évite le verrouillage.

Lumigo[ et Epsagon (acquis) sont des outils de tiers qui se concentrent exclusivement sur le traçage sans serveur, fournissant des instruments automatiques, l'analyse des coûts et des capacités de débogage.

Comment choisir la bonne pile

La meilleure combinaison de surveillance et de loging dépend de votre budget, vos compétences en équipe, votre fournisseur de cloud et votre maturité opérationnelle.

  • Profondeur du fournisseur: Si vous êtes tout-en-un sur AWS, en commençant par CloudWatch + X-Ray peut être suffisant. Évaluer si le coût ajouté pour des outils tiers vaut l'UX et l'analyse améliorées.
  • Si vous utilisez plusieurs fournisseurs de cloud, évitez les outils propriétaires. Datadog, New Relic ou des solutions open-source comme Prometheus + ELK fournissent des tableaux de bord unifiés à travers les environnements.
  • Compétence de l'équipe: Les piles open-source nécessitent des compétences DevOps pour maintenir.
  • Échelle et coût: Estimez vos volumes de log et de métrique. Parfois, la simplicité des journaux CloudWatch + un filtre d'abonnement à un évier de log moins cher (comme S3 + Athena) peut être plus rentable qu'une plate-forme de log dédiée.
  • Certaines industries exigent la conformité à la norme SOC 2, HIPAA ou RGPD. Assurez-vous que l'outil que vous choisissez supporte ces certifications et dispose de contrôles de résidence des données.

Un modèle courant est d'utiliser CloudWatch pour les métriques et les journaux de référence, puis d'utiliser un filtre d'abonnement pour transférer les journaux vers un moteur d'analyse plus puissant comme Logz.io, Spunk, ou Elastic. Pour le traçage, X-Ray ou Datadog APM remplit l'écart.

Meilleures pratiques pour l'observation sans serveur

Quels que soient les outils que vous choisissez, suivre ces pratiques améliorera l'efficacité de l'opérateur :

  • Utiliser la logarithme structuré Les journaux de sortie au format JSON avec un schéma cohérent. Inclure les ID de requête, le nom de la fonction, la version et les données de chronométrage.
  • Injecter des ID de corrélation. Générer un ID unique au point d'entrée (Pateway API ou SQS) et le passer à travers toutes les invocations en aval. Cela permet de tracer de bout en bout même si vous n'avez pas de système de traçage distribué formel.
  • Le froid commence avec soin. Suivre la probabilité et la durée de démarrage à froid. Si le début à froid a une incidence sur l'expérience utilisateur, envisager la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la comptabilisation de la
  • ]Définir la conservation des journaux en fonction des besoins de l'entreprise. AWS CloudWatch permet de fixer la conservation par groupe de journaux. Supprimer les journaux plus âgés de 30 jours pour les environnements de développement; conserver les journaux de production plus longtemps en fonction de la conformité.
  • Simple agressivement. Il n'est pas nécessaire de tracer ou de consigner toutes les demandes en détail. Utilisez l'échantillonnage pour réduire les coûts tout en préservant les données critiques pour le débogage.
  • Créer des alertes actionnables Ne pas alerter sur chaque changement métrique. Concentrez-vous sur les pics de taux d'erreur, les anomalies de durée, les anomalies de coûts et les événements de throttling.
  • Coûts de surveillance par fonction Utilisez les fonctions de répartition des coûts de votre fournisseur de cloud (AWS Cost Explorer avec les balises de ressources Lambda) à côté de votre outil de surveillance.

Conclusion

Bien que les solutions natives comme AWS CloudWatch et X-Ray offrent une base de référence solide, des plateformes tierces telles que Datadog, New Relic et Logz.io fournissent une analyse plus riche et une corrélation plus facile entre les métriques, les journaux et les traces. Les piles open-source comme Prométheus, Grafana et ELK donnent un contrôle maximum mais exigent un effort opérationnel plus important.

La bonne approche est de commencer par les outils intégrés que votre fournisseur sans serveur offre, puis de calquer sur des solutions spécialisées au fur et à mesure que vos besoins grandissent. Implémenter l'enregistrement structuré, les identifiants de corrélation et l'échantillonnage tôt pour garder les coûts gérables. Revoir régulièrement votre pile d'observabilité au fur et à mesure que vos échelles d'application et de nouvelles fonctionnalités d'outil émergent.