View a markdown version of this page

Ingestion d'alarmes depuis les APM sans intégration directe avec EventBridge - Guide de l'utilisateur d'AWS Incident Detection and Response

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.

Ingestion d'alarmes depuis les APM sans intégration directe avec EventBridge

AWS Incident Detection and Response prend en charge l'utilisation de webhooks pour l'ingestion d'alarmes depuis des APM tiers qui ne sont pas directement intégrés à Amazon. EventBridge

Vous pouvez déployer un CloudFormation modèle ou configurer manuellement l'intégration. Avant de configurer l'intégration, vérifiez que le rôle AWS lié aux services (SLR) AWSServiceRoleForHealth_EventProcessor est créé dans vos comptes.

Option 1 : utilisation CloudFormation Modèle

Un CloudFormation modèle est disponible pour simplifier le processus de création de l'infrastructure d'intégration requise pour transmettre les alarmes à AWS Incident Detection and Response à partir de votre APM qui ne dispose pas d'une intégration directe avec Amazon EventBridge.

Considérations à prendre en compte avant de déployer ce CloudFormation modèle

  • Cette solution utilise un API Gateway Lambda Authorizer pour comparer un jeton secret transmis dans la charge utile par votre APM à un jeton entrant. AWS Secrets Manager Si le jeton ne correspond pas, une politique avec un refus explicite sera renvoyée. Pour plus d'informations, consultez la section https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html Autorisateurs Lambda.

  • Dans le cadre du modèle de responsabilité AWS partagée, il est de votre responsabilité de vous assurer que vous utilisez une approche d'authentification qui répond aux exigences de sécurité de votre organisation. Nous vous recommandons d'utiliser AWS Secrets Manager un service similaire au lieu de stocker des informations sensibles telles que des clés API ou des jetons d'autorisation sous forme de variables codées en dur. Pour plus d'informations, veuillez consulter Création et gestion des secrets avec AWS Secrets Manager.

  • Pour un autre exemple d'implémentation du code d'authentification des Hash-Based messages (HMAC), consultez receive-webhooks sur la page Github d'aws-samples. Pour plus d'informations sur la mise en œuvre de l'autorisation par jeton, consultez l'exemple de la fonction Lambda TOKEN authorizer dans la documentation API Gateway.

  • La solution utilise RateLimit BurstLimit, et Quota dans API Gateway pour contrôler les volumes de demandes. Ces outils limitent le nombre de demandes pouvant être traitées dans un délai défini. Cela permet d'éviter la surcharge du système et de maintenir la stabilité du service. Pour plus d'informations sur la limitation, consultez le guide du développeur d'API Gateway.

  • Envisagez d'utiliser le AWS Web Application Firewall (WAF) pour protéger l'API Gateway contre les mauvaises adresses IP connues. Cela réduit le risque que des attaquants inondent l'API de fausses requêtes susceptibles de bloquer de véritables événements de journalisation.

  • AWS Secrets Manager les valeurs des jetons doivent être stockées dans votre outil de surveillance des performances des applications (APM) sous forme d'en-tête HTTP. Assurez-vous de changer régulièrement le jeton en tant que meilleure pratique de sécurité.

  • Des coûts supplémentaires seront encourus pour les ressources déployées via ce CloudFormation modèle (par exemple : Lambda et EventBridge). Pour plus d'informations sur la tarification de ces services, consultez la section AWS Tarification.

  • Après avoir testé l'intégration, supprimez les instructions logger.info () de la TransformLambdaFunction (fonction Lambda) pour empêcher les charges utiles d'apparaître dans Amazon Logs. CloudWatch

  • Déployez ce CloudFormation modèle dans chaque AWS compte et chaque région à partir desquels AWS Incident Detection and Response doit d'ingérer des alarmes.

Préparation du CloudFormation modèle :

Remarque : Les étapes d'intégration utilisent Dynatrace comme exemple, mais ce modèle peut être utilisé pour tout APM capable d'envoyer des charges utiles à une passerelle API.

  1. Téléchargez et ouvrez le CloudFormation modèle.

  2. Localisez APIGWUsagePlan dans le modèle. Passez en revue les valeurs configurées pour RateLimitBurstLimit, et Quota Limit qui sont définies sur 20, 50 et 2000 par défaut. Ajustez les valeurs en fonction de vos besoins.

  3. Localisez AuthorizerLambdaFunction dans le modèle. Cette fonction Lambda est un exemple de mécanisme d'authentification. Il extrait une valeur de jeton à partir d'un en-tête appeléauthorizationToken, qui est transmis par votre APM. Vous pouvez modifier ce code pour l'aligner sur les politiques de sécurité et les exigences APM de votre organisation.

  4. TransformLambdaFunctionLocalisez-le dans le modèle. Remplacez le chemin du dictionnaireraw_json["detail"]["ProblemTitle"],, par le chemin du nom de votre alarme qui est envoyé dans la charge utile JSON depuis votre APM. Laissez cela tel quel pour Dynatrace.

Déploiement du CloudFormation modèle :

  1. Ouvrez la CloudFormation console dans votre compte cible et Région AWS.

  2. Choisissez Créer une pile, avec de nouvelles ressources (standard).

    • Sélectionnez Choisir un modèle existant, Charger un fichier modèle, Choisir un fichier, puis téléchargez le CloudFormation modèle que vous avez enregistré localement.

  3. Spécifiez les détails de la pile :

    • Entrez un nom de pile (par exemple, DynatraceIntegrationForIDR.)

    • APMNameParameter (exemple, Dynatrace.)

    • Choisissez Suivant.

  4. Configurez les options de pile :

    • Accédez au bas de la page et cochez la case pour autoriser la création CloudFormation de ressources IAM avec des noms personnalisés.

  5. Vérifiez et créez :

    • Vérifiez que les valeurs des paramètres sont correctement configurées et choisissez Soumettre.

  6. La CloudFormation pile déploie les ressources nécessaires pour intégrer vos événements APM à AWS Incident Detection and Response. Attendez que l'état de la CloudFormation pile soit CREATE_COMPLETE.

  7. La CloudFormation pile crée les ressources ci-dessous en supposant que la valeur d'exemple Dynatrace a été saisie dans les paramètres et exécutée dans la US-EAST-1 région.

    • Nom secret : DynatraceMySecretTokenName (une valeur secrète aléatoire sera créée par rapport à la clé secrète APMSecureToken)

    • Ressources API Gateway :

      • Nom de l'API : Dynatrace-AWSIncidentDetectionResponse-APIGW

      • Nom de scène : Dynatrace-Stage-Prod

      • Autorisateurs : Dynatrace-APIGW-Authorizer

      • Plan d'utilisation : APIGW_ Throttling_Plan

    • Fonctions Lambda :

      • Fonction d'autorisation : Dynatrace-AWSIncidentDetectionResponse-Lambda-Authorizer

      • Fonction de transformation : Dynatrace-AWSIncidentDetectionResponse-Lambda-Transform

    • EventBus Nom personnalisé : Dynatrace-AWSIncidentDetectionResponse-EventBus

    • Rôle IAM :

      • TransformLambdaExecutionRole: IDR-TransformLambdaExecutionRole-us-east-1

      • AuthorizerLambdaExecutionRole: IDR-AuthorizerLambdaExecutionRole-us-east-1

  8. Enregistrez l'URL du Webhook et la valeur du jeton :

    • Ouvrez la console API Gateway et choisissez le nom de votre API créé dans le cadre de la CloudFormation pile.

    • Choisissez Stages dans la barre de navigation de gauche, développez le nom de l'étape à l'aide du signe +, puis choisissez POST. Enregistrez l'URL d'invocation. Configurez cette URL dans votre APM comme destination pour envoyer des webhooks en cas d'alarme.

    • Ouvrez la AWS Secrets Manager console et choisissez le nom secret créé dans le cadre de la CloudFormation pile. (Exemple : DynatraceMySecretTokenName. )

      • Dans l'onglet Valeur secrète, choisissez Extraire la valeur secrète. Vous verrez la clé secrète sous la forme APMSecureToken. Enregistrez la valeur secrète. Ne partagez cette valeur secrète avec personne.

Tests d'intégration

Après avoir déployé la pile, testez l'intégration en envoyant une charge utile de test depuis votre APM :

  1. Accédez à la console Lambda et sélectionnez la APMNameParameter-AWSIncidentDetectionResponse-Lambda-Transform fonction. Choisissez l’onglet Surveiller.

  2. Recherchez une invocation réussie dans les graphiques métriques.

  3. Choisissez Afficher les CloudWatch journaux Amazon pour vérifier les flux de journaux relatifs à votre charge utile de test ou à d'éventuelles erreurs.

Partage de l'ARN de votre bus d'événements avec AWS Incident Detection and Response

  1. Ouvrez la EventBridge console Amazon. Sélectionnez les bus événementiels.

  2. Copiez l'ARN du bus d'événements personnalisé créé dans le cadre de la CloudFormation pile, par exemple : arn:aws:events:us-east-1:123456789123:event-bus/Dynatrace-AWSIncidentDetectionResponse-EventBus.

  3. Au cours du processus d'intégration, AWS Incident Detection and Response créera une EventBridge règle gérée sur ce bus d'événements personnalisé afin d'ingérer vos alarmes APM.

Option 2 : intégration manuelle

Schéma illustrant un exemple d'intégration à l'aide d'API Gateway.

Suivez les étapes suivantes pour configurer l'intégration avec AWS Incident Detection and Response.

  1. Créez une Amazon API Gateway pour accepter la charge utile de votre APM.

  2. Définissez une fonction Lambda pour l'autorisation à l'aide d'un jeton d'authentification.

  3. Effectuez l'une des actions suivantes :

    • (Recommandé) Créez un bus d'événements EventBridge personnalisé nommé$YourApmName-AWSIncidentDetectionResponse-EventBus.

    • (Alternative) Utilisez le bus d' EventBridge événements par défaut au lieu d'un bus d'événements personnalisé.

  4. Définissez une fonction Transform Lambda pour ajouter l'identifiant AWS Incident Detection and Response à votre charge utile. Vous pouvez également utiliser cette fonction pour filtrer les événements que vous souhaitez envoyer à AWS Incident Detection and Response.

    • L'API Gateway doit invoquer la fonction Transform Lambda qui transformera la charge utile transmise par l'API Gateway.

    • La fonction Transform Lambda doit écrire des événements transformés dans le bus d'événements défini au point 3 ci-dessus.

  5. Configurez votre APM pour envoyer des notifications à l'URL générée par l'API Gateway.