Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Envoyez des données de télémétrie de AWS Lambda vers OpenSearch pour des analyses et des visualisations en temps réel
Créé par Tabby Ward (AWS), Guy Bachar (AWS) et David Kilzer () AWS
Environnement : PoC ou pilote | Technologies : sans serveur ; modernisation | AWSservices : AWS Lambda ; Amazon Service OpenSearch |
Récapitulatif
Les applications modernes sont de plus en plus distribuées et axées sur les événements, ce qui renforce le besoin de surveillance et d'observabilité en temps réel. AWS Lambda est un service informatique sans serveur qui joue un rôle crucial dans la création d'architectures évolutives et axées sur les événements. Cependant, la surveillance et le dépannage des fonctions Lambda peuvent s'avérer difficiles si vous vous fiez uniquement à Amazon CloudWatch Logs, ce qui peut entraîner une latence et des périodes de rétention limitées.
Pour relever ce défi, nous avons AWS introduit la télémétrie Lambda, API qui permet aux fonctions Lambda d'envoyer des données de télémétrie directement à des outils de surveillance et d'observabilité tiers. Cela API prend en charge le streaming en temps réel des journaux, des métriques et des traces, et fournit une vue complète et opportune des performances et de l'état de vos fonctions Lambda.
Ce modèle explique comment intégrer la télémétrie Lambda à un moteur API de OpenSearch
Le modèle explique comment configurer l'APIintégration de la télémétrie Lambda et inclut les meilleures pratiques en matière de sécurité OpenSearch, d'optimisation des coûts et d'évolutivité. L'objectif est de vous aider à mieux comprendre vos fonctions Lambda et à améliorer l'observabilité globale de vos applications sans serveur.
Remarque : Ce modèle se concentre sur l'intégration de la télémétrie API Lambda avec Managed. OpenSearch Toutefois, les principes et techniques présentés sont également applicables à l'autogestion OpenSearch et à Elasticsearch. |
Conditions préalables et limitations
Avant de commencer le processus d'intégration, assurez-vous que les conditions préalables suivantes sont réunies :
Compte AWS: un actif Compte AWS doté des autorisations appropriées pour créer et gérer les AWS ressources suivantes :
AWS Lambda
AWS Identity and Access Management (IAM)
Amazon OpenSearch Service (si vous utilisez un OpenSearch cluster géré)
OpenSearch grappe :
Vous pouvez utiliser un OpenSearch cluster autogéré existant ou un service géré tel que OpenSearch Service.
Si vous utilisez OpenSearch Service, configurez votre OpenSearch cluster en suivant les instructions de la section Getting started with Amazon OpenSearch Service dans la documentation du OpenSearch Service.
Assurez-vous que le OpenSearch cluster est accessible depuis votre fonction Lambda et qu'il est configuré avec les paramètres de sécurité nécessaires, tels que les politiques d'accès, le chiffrement et l'authentification.
Configurez le OpenSearch cluster avec les mappages d'index et les paramètres nécessaires pour ingérer les données de télémétrie Lambda. Pour plus d'informations, consultez la section Chargement de données de streaming dans Amazon OpenSearch Service dans la documentation du OpenSearch service.
Connectivité réseau :
Assurez-vous que votre fonction Lambda dispose de la connectivité réseau nécessaire pour accéder au OpenSearch cluster. Pour obtenir des conseils sur la façon de configurer les paramètres du cloud privé virtuel (VPC), consultez la section Lancement de vos domaines Amazon OpenSearch Service VPC dans la documentation du OpenSearch service.
IAMrôles et politiques :
Créez un IAM rôle doté des autorisations nécessaires pour que votre fonction Lambda puisse accéder au OpenSearch cluster et accéder à vos informations d'identification qui y sont stockées. AWS Secrets Manager
Associez les IAM politiques appropriées au rôle, telles que la
AWSLambdaBasicExecutionRole
politique et toutes les autorisations supplémentaires requises pour interagir avec OpenSearch.Vérifiez que les IAM autorisations accordées à votre fonction Lambda lui permettent d'écrire des données dans le OpenSearch cluster. Pour plus d'informations sur la gestion IAM des autorisations, consultez la section Définition des autorisations de fonction Lambda avec un rôle d'exécution dans la documentation Lambda.
Connaissances du langage de programmation :
Vous devez avoir des connaissances de base en Python (ou le langage de programmation de votre choix) pour comprendre et modifier l'exemple de code de la fonction Lambda et de l'extension Lambda.
Environnement de développement :
Configurez un environnement de développement local avec les outils et les dépendances nécessaires pour créer et déployer des fonctions et des extensions Lambda.
AWS CLI ou AWS Management Console :
Installez et configurez le AWS Command Line Interface (AWS CLI) ou utilisez-le AWS Management Console avec les informations d'identification appropriées pour interagir avec les informations requises Services AWS.
Surveillance et journalisation :
Familiarisez-vous avec les meilleures pratiques en matière de surveillance et de journalisation AWS, notamment sur des services tels qu'Amazon CloudWatch et à des AWS CloudTrail fins de surveillance et d'audit.
Consultez les CloudWatch journaux de votre fonction Lambda afin d'identifier toute erreur ou exception liée à l'intégration de la télémétrie Lambda. API Pour obtenir des conseils de dépannage, consultez la documentation de APItélémétrie Lambda.
Architecture
Ce modèle utilise le OpenSearch service pour stocker les journaux et les données de télémétrie générés par les fonctions Lambda. Cette approche vous permet de diffuser rapidement les journaux directement vers votre OpenSearch cluster, ce qui réduit la latence et les coûts associés à l'utilisation CloudWatch des journaux comme intermédiaire.
Remarque : votre code d'extension Lambda peut transférer la télémétrie vers OpenSearch Service, soit en utilisant directement la bibliothèque cliente, soit en utilisant OpenSearch API une bibliothèque cliente. OpenSearch |
---|
Le schéma de flux de travail suivant illustre le flux de travail de journalisation des fonctions Lambda lorsque vous utilisez un OpenSearch cluster comme point de terminaison.
L'architecture inclut les composants suivants :
Fonction Lambda : fonction sans serveur qui génère des journaux et des données de télémétrie lors de l'exécution.
Extension Lambda : extension basée sur Python qui utilise la télémétrie API Lambda pour s'intégrer directement au cluster. OpenSearch Cette extension s'exécute parallèlement à la fonction Lambda dans le même environnement d'exécution.
Télémétrie Lambda API : elle API permet aux extensions Lambda d'envoyer des données de télémétrie, notamment des journaux, des métriques et des traces, directement à des outils de surveillance et d'observabilité tiers.
Cluster Amazon OpenSearch Service : OpenSearch cluster géré hébergé sur AWS. Ce cluster est chargé d'ingérer, de stocker et d'indexer les données de journal diffusées par la fonction Lambda via l'extension Lambda.
Le flux de travail comprend les étapes suivantes :
La fonction Lambda est appelée et génère des journaux et des données de télémétrie lors de son exécution.
L'extension Lambda s'exécute parallèlement à la fonction permettant de capturer les journaux et les données de télémétrie à l'aide de la télémétrie Lambda. API
L'extension Lambda établit une connexion sécurisée avec le cluster de OpenSearch services et diffuse les données du journal en temps réel.
Le cluster de OpenSearch services ingère, indexe et stocke les données du journal pour les rendre disponibles à des fins de recherche, d'analyse et de visualisation à l'aide d'outils tels que Kibana ou d'autres applications compatibles.
En contournant les CloudWatch journaux et en envoyant les données des journaux directement au OpenSearch cluster, cette solution offre plusieurs avantages :
Streaming et analyse des journaux en temps réel, permettant un dépannage plus rapide et une meilleure observabilité.
Réduction de la latence et des limites de rétention potentielles associées aux CloudWatch journaux.
Possibilité de personnaliser l'extension Lambda ou de créer votre propre extension pour des formats de sortie spécifiques ou des traitements supplémentaires.
Intégration aux fonctionnalités de recherche, d'analyse et de visualisation de OpenSearch Service pour l'analyse et la surveillance des journaux.
La section Epics fournit des step-by-step instructions pour configurer l'extension Lambda, configurer la fonction Lambda et intégrer le cluster de services. OpenSearch Pour les considérations relatives à la sécurité, les stratégies d'optimisation des coûts et les conseils de surveillance et de dépannage de la solution, consultez la section Bonnes pratiques.
Outils
AWSservices
AWS Lambda
est un service informatique qui vous permet d’exécuter un code sans demander la mise en service ou la gestion des serveurs. Lambda exécute le code uniquement lorsque cela est nécessaire et se met à l'échelle automatiquement, qu'il s'agisse de quelques requêtes par jour ou de milliers de requêtes par seconde. Amazon OpenSearch Service
est un service entièrement géré fourni par AWS qui facilite le déploiement, l'exploitation et le dimensionnement des OpenSearch clusters dans le cloud. Les extensions Lambda étendent les fonctionnalités de vos fonctions Lambda en exécutant du code personnalisé à côté de celles-ci. Vous pouvez utiliser les extensions Lambda pour intégrer Lambda à divers outils de surveillance, d'observabilité, de sécurité et de gouvernance.
AWS Lambda La télémétrie vous API permet d'utiliser des extensions pour capturer des données de surveillance et d'observabilité améliorées directement depuis Lambda et les envoyer vers la destination de votre choix.
AWS CloudFormation
vous aide à modéliser et à configurer vos AWS ressources afin que vous puissiez passer moins de temps à gérer ces ressources et plus de temps à vous concentrer sur vos applications.
Référentiels de code
AWS Lambda Les extensions
incluent des démos et des exemples de projets élaborés par des AWS partenaires AWS et destinés à vous aider à créer vos propres extensions. Example Lambda Telemetry Integrations for fournit OpenSearch
un exemple d'extension Lambda qui montre comment envoyer des journaux depuis une fonction Lambda vers un cluster. OpenSearch
Autres outils
OpenSearch
est un moteur de recherche et d'analyse distribué open source qui fournit une plate-forme puissante pour l'ingestion, le stockage et l'analyse de gros volumes de données. Kibana est un outil de visualisation et d'exploration de données open source que vous pouvez utiliser. OpenSearch Notez que la mise en œuvre de la visualisation et de l'analyse dépasse le cadre de ce modèle. Pour plus d'informations, consultez la documentation de Kibana
et d'autres ressources.
Bonnes pratiques
Lorsque vous intégrez la télémétrie Lambda à OpenSearch, tenez compte API des meilleures pratiques suivantes.
Sécurité et contrôle d'accès
Communication sécurisée : chiffrez toutes les communications entre vos fonctions Lambda et OpenSearch le cluster en utilisant. HTTPS Configurez les TLS paramètresSSL/nécessaires dans votre extension et OpenSearch votre configuration Lambda.
IAMautorisations :
Les extensions s'exécutent dans le même environnement d'exécution que la fonction Lambda. Elles héritent donc du même niveau d'accès aux ressources telles que le système de fichiers, le réseau et les variables d'environnement.
Accordez les IAM autorisations minimales nécessaires à vos fonctions Lambda pour accéder à la télémétrie Lambda API et écrire des données dans le cluster. OpenSearch Utilisez le principe du moindre privilège pour limiter l'étendue des autorisations.
OpenSearch contrôle d'accès : implémentez un contrôle d'accès précis dans votre OpenSearch cluster afin de restreindre l'accès aux données sensibles. Utilisez les fonctionnalités de sécurité intégrées, telles que l'authentification des utilisateurs, le contrôle d'accès basé sur les rôles et les autorisations au niveau de l'index, dans. OpenSearch
Extensions fiables : installez toujours les extensions provenant d'une source fiable uniquement. Utilisez des outils d'infrastructure en tant que code (IaC) AWS CloudFormation pour simplifier le processus consistant à associer la même configuration d'extension, y compris IAM les autorisations, à plusieurs fonctions Lambda. Les outils IaC fournissent également un enregistrement d'audit des extensions et des versions utilisées précédemment.
Gestion des données sensibles : lors de la création d'extensions, évitez de consigner des données sensibles. Nettoyez les charges utiles et les métadonnées avant de les enregistrer ou de les conserver à des fins d'audit.
Optimisation des coûts
Surveillance et alertes : configurez des mécanismes de surveillance et d'alerte pour suivre le volume de données envoyées OpenSearch depuis vos fonctions Lambda. Cela vous aidera à identifier les éventuels dépassements de coûts et à y remédier.
Conservation des données : réfléchissez soigneusement à la période de conservation des données appropriée pour vos données de télémétrie Lambda dans. OpenSearch Des périodes de rétention plus longues peuvent augmenter les coûts de stockage. Trouvez donc un équilibre entre vos besoins d'observabilité et l'optimisation des coûts.
Compression et indexation : activez la compression des données et optimisez votre stratégie d' OpenSearch indexation afin de réduire l'encombrement de stockage de vos données de télémétrie Lambda.
Réduction de la dépendance à l'égard de CloudWatch : en intégrant API directement la télémétrie Lambda OpenSearch, vous pouvez potentiellement réduire votre dépendance à l'égard des CloudWatch journaux, ce qui peut se traduire par des économies de coûts. En effet, la télémétrie Lambda vous API permet d'envoyer des journaux directement à OpenSearch, ce qui évite d'avoir à stocker et à traiter les données. CloudWatch
Évolutivité et fiabilité
Traitement asynchrone : utilisez des modèles de traitement asynchrones, tels qu'Amazon Simple Queue Service (Amazon) ou SQS Amazon Kinesis, pour dissocier l'exécution de la fonction Lambda de l'ingestion de données. OpenSearch Cela permet de maintenir la réactivité de vos fonctions Lambda et d'améliorer la fiabilité globale du système.
OpenSearch dimensionnement du cluster : surveillez les performances et l'utilisation des ressources de votre OpenSearch cluster, et augmentez-le ou diminuez-le selon les besoins pour gérer le volume croissant de données de télémétrie Lambda.
Basculement et reprise après sinistre : mettez en œuvre une stratégie de reprise après sinistre robuste pour votre OpenSearch cluster, notamment des sauvegardes régulières et la capacité de restaurer rapidement les données en cas de panne.
Observabilité et surveillance
Tableaux de bord et visualisations : utilisez Kibana ou d'autres outils de tableau de bord pour créer des tableaux de bord et des visualisations personnalisés qui fournissent des informations sur les performances et l'état de vos fonctions Lambda en fonction des données de télémétrie contenues dans. OpenSearch
Alertes et notifications : configurez des alertes et des notifications pour surveiller de manière proactive les anomalies, les erreurs ou les problèmes de performance dans vos fonctions Lambda. Intégrez ces alertes et notifications à vos processus de gestion des incidents existants.
Suivi et corrélation : assurez-vous que vos données de télémétrie Lambda incluent des informations de suivi pertinentes, telles que les demandes IDs ou les corrélationsIDs, afin de permettre l' end-to-endobservabilité et le dépannage dans l'ensemble de vos applications distribuées sans serveur.
En suivant ces meilleures pratiques, vous pouvez vous assurer que votre intégration de la télémétrie API Lambda OpenSearch est sécurisée, rentable et évolutive, et qu'elle fournit une observabilité complète pour vos applications sans serveur.
Épopées
Tâche | Description | Compétences requises |
---|---|---|
Téléchargez le code source. | Téléchargez les exemples d'extensions depuis le référentiel d'AWS Lambda extensions | Développeur d'applications, architecte cloud |
Accédez au dossier | Le référentiel d'AWS Lambda extensions | Développeur d'applications, architecte cloud |
Ajoutez des autorisations pour exécuter le point de terminaison de l'extension. | Exécutez la commande suivante pour rendre le point de terminaison de l'extension exécutable :
| Développeur d'applications, architecte cloud |
Installez les dépendances de l'extension localement. | Exécutez la commande suivante pour installer les dépendances locales pour le code Python :
Ces dépendances seront montées avec le code d'extension. | Développeur d'applications, architecte cloud |
Créez un package .zip pour l'extension afin de la déployer en tant que couche. | Le fichier d'extension .zip doit contenir un répertoire racine appelé Créez le package .zip pour l'extension :
| Développeur d'applications, architecte cloud |
Déployez l'extension en tant que couche Lambda. | Publiez la couche à l'aide de votre fichier d'extension .zip et de la commande suivante :
| Développeur d'applications, architecte cloud |
Tâche | Description | Compétences requises |
---|---|---|
Ajoutez la couche à votre fonction. |
| Développeur d'applications, architecte cloud |
Définissez les variables d'environnement pour la fonction. | Sur la page des fonctions, choisissez l'onglet Configuration et ajoutez les variables d'environnement suivantes à votre fonction :
| Développeur d'applications, architecte cloud |
Tâche | Description | Compétences requises |
---|---|---|
Ajoutez des instructions de journalisation à votre fonction. | Ajoutez des instructions de journalisation à votre fonction en utilisant l'un des mécanismes de journalisation intégrés ou le module de journalisation de votre choix. Voici des exemples de journalisation de messages en Python :
| Développeur d'applications, architecte cloud |
Testez votre fonction . |
Vous devriez voir Exécution de la fonction : réussi si tout fonctionne correctement. | Développeur d'applications, architecte cloud |
Tâche | Description | Compétences requises |
---|---|---|
Interrogez vos index. | Dans OpenSearch, exécutez la commande suivante pour interroger vos index :
Vos journaux devraient être affichés dans les résultats de la requête. | Architecte du cloud |
Résolution des problèmes
Problème | Solution |
---|---|
Problèmes de connectivité |
|
Erreurs d'ingestion de données |
|
Ressources connexes
Exemple d'intégrations de télémétrie Lambda
pour (référentiel) OpenSearch GitHub Augmentez les fonctions Lambda à l'aide d'extensions Lambda (documentation Lambda)
Télémétrie Lambda (documentation LambdaAPI)
Présentation de la AWS Lambda télémétrie API
(AWS article de blog) Intégration de la AWS Lambda télémétrie à API Prometheus et (article de blog
) OpenSearch AWS
Informations supplémentaires
Modification de la structure du journal
Par défaut, l'extension envoie les journaux sous forme de document OpenSearch imbriqué à. Cela vous permet d'effectuer des requêtes imbriquées pour récupérer des valeurs de colonnes individuelles.
Si la sortie du journal par défaut ne répond pas à vos besoins spécifiques, vous pouvez la personnaliser en modifiant le code source de l'extension Lambda fournie par. AWS AWS encourage les clients à adapter le résultat aux besoins de leur entreprise. Pour modifier la sortie du journal, localisez la dispatch_to_opensearch
fonction dans le telemetry_dispatcher.py
fichier dans le code source de l'extension et apportez les modifications nécessaires.