Cette traduction automatique est fournie pour votre commodité.
En cas d'incohérence entre la version anglaise et la version traduite, la version anglaise prévaudra. Veuillez visiter cette page pour plus d'informations.
Vous pouvez expédier Lambda monitoring les données New Relic de différentes manières en fonction de vos besoins. L'option qui offre les meilleures performances de votre fonction et la meilleure sécurité intégrée inclut la configuration de CloudWatch comme solution de secours. Cela signifie que vous enverrez la télémétrie à New Relic via l'extension et, s'il y a un problème avec l'extension, New Relic recevra toujours les frais via CloudWatch.
Avantages de la solution de secours CloudWatch :
Exécution indépendante: capture tous les logs de CloudWatch indépendamment de l'exécution de votre fonction. Il est très peu probable que cela interfère avec le fonctionnement normal de votre fonction ou ait un impact sur la durée d'invocation de votre fonction.
Fonctionne avec les réseaux sécurisés: utile pour les fonctions dans un VPC qui ne peuvent pas avoir de trafic sortant vers New Relic.
Bien que cette option d'expédition offre la meilleure sécurité, il est important de noter que le service AWS CloudWatch peut générer beaucoup de données. Gardez l’ingestion de données à l’esprit lorsque vous réfléchissez aux coûts et au plan tarifaire New Relic que vous choisissez.
Comment fonctionne la solution de secours CloudWatch
Si l'extension ne parvient pas à démarrer, autrement appelé mode noop, ou plante, elle ne parviendra pas à encoder la ligne NR_LAMBDA_MONITORING générée par nos agents. La ligne NR_LAMBDA_MONITORING apparaîtra à la place dans les logs CloudWatch . Si la newrelic-log-ingestion fonction est installée dans la même région que votre fonction, configurée pour les frais d'expédition et déclenchée par le groupe de votre CloudWatch log fonction, elle peut alors servir de solution de secours à l'extension pour les frais d'expédition.
Avant de commencer
Avant de configurer une option de secours, vous devez effectuer les opérations suivantes :
Installez la fonction newrelic-log-ingestion dans la région AWS à partir de laquelle vous souhaitez envoyer vos logs.
Si vous envoyez des logs, créez un modèle de filtre égal à null ou créez un modèle personnalisé correspondant aux logs de fonction que vous souhaitez envoyer. New Relic recevra les logs CloudWatch pour votre fonction. Pour éviter les logs en double, l'extension doit avoir son envoi log désactivé. L'envoi log de l'extension est désactivé par défaut.
Voici quelques bonnes pratiques avant de mettre à jour votre couche New Relic Lambda :
Avant de mettre à jour vers une version de couche plus récente, gardez à l’esprit que la dernière couche peut introduire des modifications qui interrompent l’extension ou une dépendance tierce.
Épinglez une version de couche qui fonctionne bien pour votre fonction et ne mettez à jour vers une version de couche plus récente que nécessaire pour résoudre des bogues, obtenir de nouvelles fonctionnalités et des correctifs de sécurité, ou parce qu'un agent est en fin de vie.
Examinez attentivement toutes les modifications et notes de sortie et testez-les dans un environnement de développement ou de simulation avant de déployer une nouvelle couche en production.
Options de mise en œuvre
Il existe trois façons d'implémenter une solution de secours CloudWatch :
Activer l'extension pour les frais de télémétrie et l'envoi des logs via CloudWatch: Dans ce scénario, les frais de télémétrie sont expédiés via l'extension et les logs via CloudWatch, et dans le cas où l'extension échoue, les frais sont également facturés.
Extension activée pour les frais et les logs de télémétrie: Dans ce scénario, les frais et les logs de télémétrie sont expédiés via l'extension.
Extension désactivée: dans ce scénario, CloudWatch est toujours utilisé pour envoyer les logs et la charge.
Si vous n'envoyez pas de logs à CloudWatch, cette option est le moyen le moins coûteux et le plus fiable de garantir que les frais instrumentés parviennent toujours à New Relic. Si vous envoyez des logs, cette option entraînera certains coûts CloudWatch pour l'envoi log . Consultez Ingestion de données : facturation et règles pour plus d’informations sur la tarification.
Après avoir ajouté une couche New Relic Lambda , l’extension est activée et l’expédition log est désactivée par défaut.
Le paramètre enableIntegration ne doit être inclus que si votre fonction est déployée sur un compte AWS qui n'a pas encore d'intégration. Une fois l'intégration configurée, cette option doit être supprimée du serverless.yml utilisé pour déployer votre fonction.
newrelic-lambda layers install--function<name or arn> --nr-account-id <YOUR_NEW_RELIC_ACCOUNT_ID>
$
newrelic-lambda subscriptions install--function<name or arn> --filter-pattern ""
Cette option offre le chemin le moins coûteux qui garantit que les frais instrumentés parviennent toujours à New Relic. Cette option envoie les logs des fonctions via l'extension New Relic Lambda . Ainsi, si l'extension ne parvient pas à démarrer ou plante, les logs des fonctions seront manquants dans New Relic.
Si vous envoyez des logs de fonction, assurez-vous que l'extension est configurée pour le faire. Ces logs ne seront envoyés que par l'extension et il n'y aura pas de solution de secours CloudWatch pour les logs afin d'éviter les doublons.
Après avoir ajouté une couche New Relic Lambda , l’extension est activée et l’expédition log est désactivée par défaut. Si vous souhaitez voir les logs des fonctions dans New Relic, vous devrez utiliser des variables d'environnement pour permettre à l'extension d'envoyer les logs des fonctions.
Il est important de noter que les logs de fonction ne sont que cela, des logs enregistrés par la fonction lors de son appel. L'extension n'enverra pas les logs de la plateforme Lambda comme START et END.
NEW_RELIC_EXTENSION_SEND_FUNCTION_LOGS: true 2 Définissez les variables d’environnement de votre fonction newrelic-log-ingestion :
INFRA_ENABLED: true
LOGGING_ENABLED: false (désactiver le transfert de log pour éviter les doublons ou définir le modèle de filtre d'abonnement CloudWatch pour qu'il corresponde uniquement aux lignes NR_LAMBDA_MONITORING)
Le paramètre enableIntegration ne doit être inclus que si votre fonction est déployée sur un compte AWS qui n'a pas encore d'intégration. Une fois l'intégration configurée, cette option doit être supprimée du serverless.yml utilisé pour déployer votre fonction.
newrelic-lambda layers install--function<name or arn> --nr-account-id <YOUR_NEW_RELIC_ACCOUNT_ID>
$
newrelic-lambda subscriptions install--function<name or arn> --filter-pattern "NR_LAMBDA_MONITORING"
Cette option repose entièrement sur CloudWatch et notre fonction newrelic-log-ingestion pour envoyer les logs et les frais à New Relic. Cette option désactive l'extension pour éviter d'éventuels temps d'arrêt causés par des pannes d'extension.
Pour cette méthode, l’extension New Relic Lambda doit être complètement désactivée afin qu’elle n’empêche pas l’écriture de la ligne NR_LAMBDA_MONITORING dans CloudWatch. Avec l'extension New Relic Lambda désactivée, toute la télémétrie sera envoyée via CloudWatch, le filtre d'abonnement et la fonction newrelic-log-ingestion .
Après avoir ajouté une couche New Relic Lambda , l'extension est activée et l'expédition log est désactivée par défaut. Vous devrez désactiver l'extension avec une variable d'environnement.
Le paramètre enableIntegration ne doit être inclus que si votre fonction est déployée sur un compte AWS qui n'a pas encore d'intégration. Une fois l'intégration configurée, cette option doit être supprimée du serverless.yml utilisé pour déployer votre fonction.
newrelic-lambda layers install--function<name or arn> --nr-account-id <YOUR_NEW_RELIC_ACCOUNT_ID> --disable-extension
$
newrelic-lambda subscriptions install--function<name or arn> --filter-pattern ""
Vous pouvez également choisir manuellement d'envoyer des données uniquement à CloudWatch. Pour ce faire :
Désactivez l'extension en ajoutant la variable d'environnement NEW_RELIC_LAMBDA_EXTENSION_ENABLED à votre fonction, avec la valeur false.
Créez un filtre d'abonnement aux logs CloudWatch pour appeler la fonction newrelic-log-ingestion avec les logs de votre fonction.
La CLI peut le faire pour vous : newrelic-lambda subscriptions install --function FUNCTION_NAME
Vous pouvez également utiliser la console AWS pour créer un filtre d'abonnement à partir du groupe de logs CloudWatch de votre fonction afin d'appeler la fonction Lambda newrelic-log-ingestion.
Ou, vous pouvez suivre ces étapes pour diffuser les logs CloudWatch vers New Relic Lambda:
Ouvrez CloudWatch et sélectionnez Logs dans le menu de gauche, puis sélectionnez le groupe log pour la fonction que vous monitoring.
Sous Lambda function, sélectionnez la fonction newrelic-log-ingestion .
Réglez Log format sur JSON.
Réglez le Subscription filter pattern to?REPORT ?NR_LAMBDA_MONITORING ?"Task timed out" ?RequestId. Alternativement, si vous utilisez la variable d'environnement LOGGING_ENABLEDpour diffuser tout vos logs vers nos logs, laissez ce champ vide.
Important
Assurez-vous que la fonction Lambda newrelic-log-ingestion que vous sélectionnez dans la méthode ci-dessus se trouve dans la même région AWS que votre fonction Lambda.