DéveloppeurWeb.Com
    DéveloppeurWeb.Com
    • Agile Zone
    • AI Zone
    • Cloud Zone
    • Database Zone
    • DevOps Zone
    • Integration Zone
    • Web Dev Zone
    DéveloppeurWeb.Com
    Home»Uncategorized»Comment configurer l’observabilité CloudWatch
    Uncategorized

    Comment configurer l’observabilité CloudWatch

    mars 13, 2023
    Comment configurer l'observabilité CloudWatch
    Share
    Facebook Twitter Pinterest Reddit WhatsApp Email

    Clause de non-responsabilité: Toutes les vues et opinions exprimées dans le blog appartiennent uniquement à l’auteur et pas nécessairement à l’employeur de l’auteur ou à tout autre groupe ou individu. Il ne s’agit pas d’une promotion d’un service, d’une fonctionnalité ou d’une plate-forme.

    Dans mon article précédent sur l’observabilité inter-comptes CloudWatch(CW) pour AWS Organization, j’ai fourni un guide étape par étape sur la configuration de la visibilité et de l’observabilité multi-comptes à l’aide d’une nouvelle fonctionnalité appelée observabilité inter-comptes CloudWatch à l’aide d’AWS. Console. Dans cet article, je fournirai un guide étape par étape sur la façon dont vous pouvez automatiser l’observabilité entre comptes CloudWatch pour votre organisation AWS à l’aide de Terraform et d’un modèle CloudFormation.

    Veuillez vous référer à mon article précédent sur ce sujet pour une meilleure compréhension des concepts tels que les comptes de surveillance et les comptes sources.

    Surveillance de la configuration du compte

    Pour surveiller la configuration du compte, une combinaison de Terraform et CloudFormation est choisie comme aws_oam_sink et aws_oam_link. Les ressources ne sont pas encore disponibles dans terraform-provider-aws au 26 février 2023. Veuillez vous référer au problème GitHub.

    De plus, le terraform-provider-awscc a un bogue ouvert (au 26 février 2023) qui échoue lors de l’application de la politique Sink. Veuillez vous référer au lien du problème GitHub pour plus de détails.

    Code Terraform qui crée le récepteur OAM dans le compte AWS de surveillance

    N’hésitez pas à personnaliser le code pour modifier les fournisseurs et les balises ou modifier les conventions de dénomination selon les normes de votre organisation.

    fournisseur.tf

    N’hésitez pas à modifier le fournisseur AWS en fonction de votre compte AWS, de votre région et de vos besoins d’authentification/autorisation. Reportez-vous à la documentation du fournisseur AWS pour plus de détails sur la configuration du fournisseur pour la plate-forme AWS.

    provider "aws" {
      region = "us-east-1"
      assume_role {
        role_arn = "arn:aws:iam::MONITORING-ACCOUNT-NUMBER:role/YOUR-IAM-ROLE-NAME"
      }
    }
    
    terraform {
      required_providers {
        aws = {
          source  = "hashicorp/aws"
          version = "4.53.0"
        }
      }
    }

    main.tf

    /*
     AWS Cloudformation stack resource that runs CFT - oam-sink-cft.yaml
     The stack creates a OAM Sink in the current account & region as per provider configuration
     Please create the AWS provider configuration as per your environment.
     For AWS provider configuration, please refer to https://registry.terraform.io/providers/hashicorp/aws/2.43.0/docs
    */
    resource "aws_cloudformation_stack" "cw_sink_stack" {
      name          = "example"
      template_body = file("${path.module}/oam-sink-cft.yaml")
      parameters = {
        OrgPath = var.org_path
      }
      tags = var.tags
    }
    
    /*
      SSM parameter resource puts the CloudWatch Cross Account Observability Sink ARN in the parameter store,
      So that the Sink arn can be used from the source account while creating the Link
    */
    resource "aws_ssm_parameter" "cw_sink_arn" {
      name        = "cw-sink-arn"
      description = "CloudWatch Cross Account Observability Sink identifier"
      type        = "SecureString"
      value       = aws_cloudformation_stack.cw_sink_stack.outputs["ObservabilityAccessManagerSinkArn"]
      tags        = var.tags
    }

    variable.tf

    variable "tags" {
      description = "Custom tags for AWS resources"
      type        = map(string)
      default     = {}
    }
    
    variable "org_path" {
      description = "AWS Organization path that will be allowed to send Metric and Log data to the monitoring account"
      type        = string
    }

    Modèle AWS CloudFormation utilisé dans la ressource Terraform « AWS_cloudformation_stack »

    Le modèle CloudFormation ci-dessous crée la ressource OAM Sink dans le compte Monitoring. Ce modèle sera utilisé pour créer la CloudFormation Stack dans le compte Monitoring. Assurez-vous de placer le modèle et les fichiers terraform dans le même répertoire.

    oam-évier-cft.yaml

    AWSTemplateFormatVersion: 2010-09-09
    Description: 'AWS CloudFormation Template to 
                  creates or updates a sink in the current account, so that it can be used as a monitoring account in CloudWatch cross-account observability. 
                  A sink is a resource that represents an attachment point in a monitoring account, which source accounts can link to to be able to send observability data.'
    Parameters:
      OrgPath:
        Type: String
        Description: 'Complete AWS Organization path for source account configuration for Metric data'
    Resources:
      ObservabilityAccessManagerSink:
        Type: 'AWS::Oam::Sink'
        Properties:
          Name: "observability-access-manager-sink"
          Policy:
            Version: '2012-10-17'
            Statement:
              - Effect: Allow
                Principal: "*"
                Resource: "*"
                Action:
                  - "oam:CreateLink"
                  - "oam:UpdateLink"
                Condition:
                  ForAnyValue:StringLike:
                    aws:PrincipalOrgPaths:
                      - !Ref OrgPath
                  ForAllValues:StringEquals:
                    oam:ResourceTypes:
                      - "AWS::CloudWatch::Metric"
                      - "AWS::Logs::LogGroup"
    Outputs:
      ObservabilityAccessManagerSinkArn:
        Value: !GetAtt ObservabilityAccessManagerSink.Arn
        Export:
          Name: ObservabilityAccessManagerSinkArn

    Appliquer les modifications dans la plateforme de fournisseur AWS

    Une fois que vous avez placé tous les fichiers de modèle terraform et CloudFormation ci-dessus dans le même répertoire, exécutez terraform init pour installer le fournisseur et les dépendances, puis terraform plan ou terraform apply selon que vous souhaitez afficher uniquement les modifications ou afficher et appliquer les modifications dans votre compte AWS. Veuillez consulter le site Web de Hashicorp pour plus de détails sur les commandes terraform.

    Quand tu cours terraform apply ou terraform plan commande, vous devez saisir la org_path valeur. Assurez-vous de fournir le chemin d’accès complet de l’organisation AWS pour permettre au(x) compte(s) AWS sous ce chemin d’envoyer les données de métrique et de journal au compte de surveillance. Par exemple, si vous souhaitez autoriser tous les comptes AWS à envoyer les données de métrique et de journal au compte de surveillance sous l’unité d’organisation (OU) ou-0dsf-dasd67asd (en supposant que l’unité d’organisation se trouve directement sous le compte racine dans la hiérarchie de l’organisation), la valeur org_path devrait ressembler à ORGANIZATION_ID/ROOT_ID/ou-0dsf-dasd67asd/*. Pour plus d’informations sur la façon de définir le chemin de l’organisation, veuillez vous reporter à la documentation AWS.

    Une fois la org_path la valeur est fournie (vous pouvez également utiliser le fichier tfvars pour fournir les valeurs des variables), et terraform apply réussit, vous devriez voir que le compte AWS est désigné comme compte de surveillance en accédant aux paramètres CloudWatch dans la console CloudWatch.

    Paramètres CloudWatch

    Configuration du compte source

    Pour la configuration du compte source, nous pouvons utiliser le terraform-provider-awscc car la ressource de lien fonctionne parfaitement. Également aws_oam_sink et aws_oam_link les ressources ne sont pas encore disponibles dans le terraform-provider-aws au 26 février 2023. Veuillez vous référer au problème GitHub.

    Code Terraform qui crée le lien OAM dans le compte AWS source

    N’hésitez pas à personnaliser le code pour modifier le fournisseur et les balises ou modifier les conventions de dénomination selon les normes de votre organisation.

    fournisseur.tf

    N’hésitez pas à modifier le fournisseur AWSCC en fonction de votre compte AWS, de votre région et de vos besoins d’authentification/autorisation. Reportez-vous à la documentation du fournisseur AWSCC pour plus de détails sur la configuration du fournisseur.

    provider "aws" {
      region = "us-east-1"
      assume_role {
        role_arn = "arn:aws:iam::MONITORING-ACCOUNT-NUMBER:role/IAM-ROLE-NAME"
      }
    }
    
    provider "awscc" {
      region = "us-east-1"
      assume_role = {
        role_arn = "arn:aws:iam::SOURCE-ACCOUNT-NUMBER:role/IAM-ROLE-NAME"
      }
    }
    
    terraform {
      required_providers {
        aws = {
          source  = "hashicorp/aws"
          version = "4.53.0"
        }
        awscc = {
          source = "hashicorp/awscc"
          version = "0.45.0"
        }
      }
    }

    main.tf

    /*
      Link resource to create the link between the source account and the sink in the monitoring account
    */
    resource "awscc_oam_link" "cw_link" {
      provider          = awscc
      label_template    = "$AccountName"
      resource_types    = ["AWS::CloudWatch::Metric", "AWS::Logs::LogGroup"]
      sink_identifier   = data.aws_ssm_parameter.cw_sink_arn.value
    }
    
    /*
      SSM parameter data block retrieves the CloudWatch Cross Account Observability Sink ARN from the parameter store,
      So that the Sink arn can be associated with the source account while creating the Link
    */
    data "aws_ssm_parameter" "cw_sink_arn" {
      provider = aws
      name     = "cw-sink-arn"
    }

    Placez les deux fichiers terraform dans le même répertoire et exécutez le terraform init et puis terraform apply commandes pour créer le lien entre les comptes source et de surveillance.

    Étapes pour valider les modifications d’observabilité entre comptes CloudWatch

    Maintenant que les modifications sont appliquées dans les comptes source et de surveillance, il est temps de valider que les groupes de journaux et les données de métrique CloudWatch s’affichent dans le compte de surveillance.

    Aller vers Console CloudWatch > Paramètres > Gérer comptes sources dans le compte de surveillance. Vous devriez voir que le nouveau compte source est répertorié et que le journal et la métrique CloudWatch sont partagés avec le compte de surveillance.

    gérer les comptes sources

    Si vous accédez aux groupes de journaux CloudWatch dans le compte de surveillance, vous devriez maintenant voir certains des groupes de journaux du compte source.

    Groupes de journaux

    De plus, si vous naviguez vers CloudWatch Métriques > Toutes les métriques dans le compte de surveillance, vous devriez maintenant voir certaines des données de métrique du compte source.

    Métrique

    Share. Facebook Twitter Pinterest LinkedIn WhatsApp Reddit Email
    Add A Comment

    Leave A Reply Cancel Reply

    Catégories

    • Politique de cookies
    • Politique de confidentialité
    • CONTACT
    • Politique du DMCA
    • CONDITIONS D’UTILISATION
    • Avertissement
    © 2023 DéveloppeurWeb.Com.

    Type above and press Enter to search. Press Esc to cancel.