Envoyez des données de télémétrie de AWS Lambda vers OpenSearch pour des analyses et des visualisations en temps réel - Recommandations AWS

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 OpenSearchrecherche et d'analyse distribué open source. OpenSearch propose une plate-forme puissante et évolutive pour l'ingestion, le stockage et l'analyse de gros volumes de données, ce qui en fait un choix idéal pour les données de télémétrie Lambda. Plus précisément, ce modèle montre comment envoyer des journaux à partir d'une fonction Lambda écrite en Python directement à un OpenSearch cluster en utilisant une extension Lambda fournie par. AWS Cette solution est flexible et personnalisable. Vous pouvez donc créer votre propre extension Lambda ou modifier l'exemple de code source pour modifier le format de sortie comme vous le souhaitez.

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 L'extension Lambda peut utiliser les opérations groupées prises en charge par les événements de télémétrie OpenSearch API pour regrouper les événements de télémétrie et les envoyer au OpenSearch Service en une seule demande.

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.

Flux de travail pour envoyer des données de télémétrie à un OpenSearch cluster.

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 :

  1. 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.

  2. 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

  3. 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.

  4. 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 CloudFormationvous 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

Autres outils

  • OpenSearchest 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âcheDescriptionCompé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 python-example-telemetry-opensearch-extension.

Le référentiel d'AWS Lambda extensions que vous avez téléchargé contient de nombreux exemples relatifs à plusieurs cas d'utilisation et à plusieurs environnements d'exécution de langage. Accédez au dossier python-example-telemetry-opensearch-extension pour utiliser l' OpenSearch extension Python, qui envoie les journaux à OpenSearch.

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 :

chmod +x python-example-telemetry-opensearch-extension/extension.py
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 :

pip3 install -r python-example-telemetry-opensearch-extension/requirements.txt -t ./python-example-telemetry-opensearch-extension/

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éextensions/, où se trouve le fichier exécutable de l'extension, et un autre répertoire racine appelépython-example-telemetry-opensearch-extension/, où se trouvent la logique de base de l'extension et ses dépendances.

Créez le package .zip pour l'extension :

chmod +x extensions/python-example-telemetry-opensearch-extension zip -r extension.zip extensions python-example-telemetry-opensearch-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 :

aws lambda publish-layer-version \ --layer-name "python-example-telemetry-opensearch-extension" \ --zip-file "fileb://extension.zip"
Développeur d'applications, architecte cloud
TâcheDescriptionCompétences requises

Ajoutez la couche à votre fonction.

  1. Connectez-vous à la page Fonctions de la AWS Lambda console AWS Management Console et ouvrez-la.

  2. Sélectionnez votre fonction.

  3. Sous Couches, choisissez Ajouter une couche.

  4. Sous Choisir une couche, choisissez Couches personnalisées comme source de couche et ajoutez votre couche.

Pour plus d'informations sur l'ajout d'une couche à votre fonction Lambda, consultez la documentation Lambda.

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 :

  • URL— Le point URI de OpenSearch terminaison auquel vos journaux seront envoyés.

  • AUTH_SECRET— Les OpenSearch informations ARN d'identification enregistrées dans AWS Secrets Manager. Cela doit être stocké sous forme de paire clé-valeur et comporter deux clés : username et. password

  • PLATFORM_INDEX,FUNCTION_INDEX, et EXTENSION_INDEX — Les noms des index qui stockeront vos données de télémétrie, vos journaux de fonctions et vos journaux d'extension. Assurez-vous qu'ils respectent les critères de dénomination appropriés. Dans le cas contraire, vos index ne seront pas créés.

  • DISPATCH_MIN_BATCH_SIZE— Le nombre d'événements du journal que vous souhaitez regrouper. Toutefois, lorsque la fonction s'arrête, vos journaux seront envoyés quel que soit ce paramètre.

Développeur d'applications, architecte cloud
TâcheDescriptionCompé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 :

print("Your Log Message Here") logger = logging.getLogger(__name__) logger.info("Test Info Log.") logger.error("Test Error Log.")
Développeur d'applications, architecte cloud

Testez votre fonction .

  1. Sur la page des fonctions, choisissez l'onglet Tester.

  2. Créez un événement de test pour votre fonction et lancez le test. Pour plus d'informations, consultez la section Tester les fonctions Lambda dans la console dans la documentation Lambda.

Vous devriez voir Exécution de la fonction : réussi si tout fonctionne correctement.

Développeur d'applications, architecte cloud
TâcheDescriptionCompétences requises

Interrogez vos index.

Dans OpenSearch, exécutez la commande suivante pour interroger vos index :

SELECT * FROM index-name

Vos journaux devraient être affichés dans les résultats de la requête.

Architecte du cloud

Résolution des problèmes

ProblèmeSolution

Problèmes de connectivité

  • Vérifiez que votre fonction Lambda dispose de la connectivité réseau nécessaire pour accéder au OpenSearch cluster. Consultez la documentation du OpenSearch service pour obtenir des conseils sur la configuration des VPC paramètres.

  • Vérifiez que les IAM autorisations accordées à votre fonction Lambda lui permettent d'écrire des données dans le OpenSearch cluster. Consultez la documentation Lambda pour plus d'informations sur la gestion des IAM autorisations.

Erreurs d'ingestion de données

  • 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 Consultez la APIdocumentation de télémétrie Lambda pour obtenir des conseils de dépannage.

  • Vérifiez que le OpenSearch cluster est correctement configuré et qu'il possède les mappages d'index et les paramètres nécessaires pour ingérer les données de télémétrie Lambda. Consultez la OpenSearch documentation pour plus d'informations.

Ressources connexes

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.