Amazon RDS

RDS Dashboard

Présentation

Amazon Relational Database Service (RDS) est un service Web qui facilite la configuration, l’exploitation et la mise à l’échelle d’une base de données relationnelle dans le cloud. Activez cette intégration pour visualiser toutes vos métriques RDS dans Datadog.

Remarque : vérifiez que la variable d’environnement DD_SITE est définie sur votre région en dehors du code, , ou définissez la variable dans le code comme suit :

DD_SITE = os.getenv("DD_SITE", default="")

Vous pouvez surveiller les instances RDS avec les intégrations standard, améliorée et native. Consultez la liste complète des métriques avant de choisir une configuration. En effet, chaque métrique correspond à une configuration précise. Passez également en revue les informations ci-dessous pour en savoir plus sur les exigences de chaque configuration ainsi que sur le dashboard par défaut :

Pour installer l’intégration standard, vous devez activer RDS dans l’onglet Metric Collection de la page de l’intégration AWS. Vous pourrez ainsi recevoir des métriques relatives à votre instance aussi souvent que votre intégration CloudWatch le permet. Tous les types de moteurs RDS sont pris en charge.

Le dashboard par défaut pour cette intégration rassemble des informations sur les connexions, le décalage de réplication, la latence et les opérations de lecture, l’ordinateur, la RAM, la latence et les opérations d’écriture ainsi que le disque.

L’intégration améliorée nécessite une configuration supplémentaire et est seulement disponible pour les moteurs MySQL, Aurora, MariaDB, SQL Server, Oracle et PostgreSQL. Des métriques supplémentaires sont disponibles, mais vous devez disposer d’un AWS Lambda pour envoyer les métriques à Datadog. Une granularité plus élevée et des services requis complémentaires peuvent engendrer une hausse des frais AWS.

Le dashboard par défaut pour cette intégration rassemble des informations sur les chargements, la disponibilité, l’utilisation du CPU, les tâches, la mémoire, le swap, les réceptions réseau, les transmissions réseau, le CPU utilisé par processus, la mémoire utilisée par processus, les opérations de disque, le système de fichiers utilisé (pourcentage), les tâches en cours d’exécution et l’utilisation du CPU système.

L’intégration native des bases de données est facultative et disponible pour les moteurs MySQL, Aurora, MariaDB, SQL Server et PostgreSQL. Pour faire correspondre les métriques de RDS et celles de l’intégration native, utilisez le tag dbinstanceidentifier de l’intégration native basé sur l’identificateur que vous attribuez à l’instance RDS. Le tag est automatiquement attribué aux instances RDS.

Il existe trois dashboards par défaut pour cette configuration : MySQL, Aurora et PostgreSql. Chacun d’entre eux inclut des informations sur le volume de requête, l’E/S du disque, les connexions, la réplication et les ressources AWS.

Remarque : ces dashboards affichent des métriques provenant à la fois d’AWS CloudWatch et du moteur de la base de données. Activez l’une des intégrations MySQL, Aurora ou PostgreSQL pour obtenir toutes les métriques des intégrations.

Implémentation

Installation

Pour l’intégration RDS standard, commencez par configurer l’intégration Amazon Web Services.

Activez la surveillance améliorée de votre instance RDS. Vous pouvez activer cette fonctionnalité lors de la création de l’instance ou ultérieurement, en sélectionnant Modify dans Instance Actions. Il est conseillé de choisir une granularité de surveillance de 15 secondes.

Les instructions suivantes reposent sur l’utilisation de KMS et de la console de gestion Lambda pour créer une version chiffrée de votre clé d’API Datadog. Cette dernière peut uniquement être utilisée avec la fonction Lambda de surveillance améliorée de RDS. Si vous disposez déjà d’une clé d’API chiffrée provenant d’un autre Lambda, tel que le Forwarder de logs, consultez le fichier README de la fonction Lambda pour obtenir des options supplémentaires.

Créer votre clé KMS

  1. Ouvrez la page d’accueil de KMS à l’adresse https://console.aws.amazon.com/kms/home.
  2. Accédez à Customer managed keys.
  3. Sélectionnez Create Key.
  4. Saisissez un alias pour la clé, par exemple lambda-datadog-key. Remarque : un alias ne peut pas commencer par « aws ». Les alias commençant par « aws » sont réservés par Amazon Web Services et représentent les clés CMK gérées par AWS dans votre compte.
  5. Ajoutez les administrateurs appropriés afin de déterminer les personnes pouvant gérer cette clé.
  6. Vous n’avez pas besoin d’ajouter le moindre rôle.
  7. Enregistrez votre clé KMS.

Créer votre fonction Lambda

  1. Depuis la console de gestion Lambda, créez une fonction Lambda. Votre fonction Lambda doit se trouver dans la même région que celle de la clé KMS que vous avez créée.
  2. Choisissez Serverless Application Repository, recherchez Datadog-RDS-Enhanced et sélectionnez cette option.
  3. Saisissez un nom unique pour l’application.
  4. Collez l’identifiant de la clé créée dans le paramètre KMSKeyId de la section précédente et effectuez le déploiement.
  5. Une fois l’application déployée, ouvrez la fonction Lambda créée (cliquez sur la fonction dans « Resource »).
  6. Cliquez sur l’onglet Configuration et accédez à la section Environment variables. Pour la variable d’environnement kmsEncryptedKeys, ajoutez votre clé d’API Datadog au format JSON complet dans le champ value comme suit : {"api_key":"<VOTRE_CLÉ_API>"}.
  7. Ouvrez la section Encryption configuration et sélectionnez Enable helpers for encryption in transit.
  8. Dans la section KMS key to encrypt at rest, sélectionnez Use a customer master key et saisissez la clé KMS que vous avez précédemment créée.
  9. Appuyez sur le bouton Encrypt à côté de l’objet blob JSON que vous venez de saisir, puis, dans la fenêtre qui s’affiche, choisissez également le nom de la clé KMS que vous avez précédemment créée.
  10. Cliquez sur Save.
  11. Créez un nouveau déclencheur en définissant le groupe de logs CloudWatch RDSOSMetrics en tant que source.
  12. Nommez le filtre, indiquez un pattern de filtre facultatif, puis cliquez sur Save.

Lorsque vous cliquez sur le bouton de test de votre fonction Lambda, il se peut que cette erreur s’affiche :

{
    "stackTrace": [
        [
            "/var/task/lambda_function.py",
            109,
            "lambda_handler",
            "event = json.loads(gzip.GzipFile(fileobj=StringIO(event['awslogs']['data'].decode('base64'))).read())"
        ]
    ],
    "errorType": "KeyError",
    "errorMessage": "'awslogs'"
}

Vous pouvez l’ignorer. Le bouton de test ne fonctionne pas avec cette configuration.

  1. Accédez à la console AWS et ouvrez la section RDS pour trouver l’instance que vous souhaitez surveiller.

    Console RDS
  2. Relevez l’URL de l’endpoint, par exemple mysqlrds.blah.us-east1.rds.amazonaws.com:3306, qui est utilisée pour configurer l’Agent. Notez également le paramètre DB Instance identifier, par exemple mysqlrds, qui est utilisé pour créer des graphiques et des dashboards.

Configuration

  1. Sur la page de l’intégration AWS, vérifiez que RDS est activé dans l’onglet Metric Collection.

  2. Ajoutez les autorisations suivantes à votre stratégie IAM Datadog afin de recueillir des métriques Amazon RDS. Pour en savoir plus, consultez la section relative aux stratégies RDS (en anglais) de la documentation AWS.

    Autorisation AWSDescription
    rds:DescribeDBInstancesDécrit les instances RDS auxquelles ajouter des tags.
    rds:ListTagsForResourceAjoute des tags personnalisés aux instances RDS.
    rds:DescribeEventsAjoute des événements associés aux bases de données RDS.
  3. Installez l’intégration Datadog/Amazon RDS.

  1. Sur la page de l’intégration AWS, vérifiez que RDS est activé dans l’onglet Metric Collection.

  2. Ajoutez les autorisations suivantes à votre stratégie IAM Datadog afin de recueillir des métriques Amazon RDS. Pour en savoir plus, consultez la section relative aux stratégies RDS (en anglais) de la documentation AWS.

    Autorisation AWSDescription
    rds:DescribeDBInstancesDécrit les instances RDS auxquelles ajouter des tags.
    rds:ListTagsForResourceAjoute des tags personnalisés aux instances RDS.
    rds:DescribeEventsAjoute des événements associés aux bases de données RDS.
  3. Installez l’intégration Datadog/Amazon RDS.

Configurez un Agent et connectez-vous à votre instance RDS en modifiant le fichier YAML approprié dans votre répertoire conf.d, puis redémarrez votre Agent :

Pour RDS Aurora, modifiez le fichier YAML de la base de données que vous utilisez.

Si vous utilisez MySQL ou MariaDB, modifiez mysql.yaml :

init_config:

instances:
    # L'URL d'endpoint de la console AWS
    - server: 'mysqlrds.blah.us-east-1.rds.amazonaws.com'
      user: '<NOM_UTILISATEUR>'
      pass: '<MOT_DE_PASSE>'
      port: 3306
      tags:
          - 'dbinstanceidentifier:<NOM_INSTANCE>'

Si vous utilisez PostgreSQL, modifiez postgres.yaml :

init_config:

instances:
    - host: 'postgresqlrds.blah.us-east-1.rds.amazonaws.com'
      port: 5432
      username: '<NOM_UTILISATEUR>'
      password: '<MOT_DE_PASSE>'
      dbname: '<NOM_BASE_DE_DONNÉES>'
      tags:
          - 'dbinstanceidentifier:<NOM_INSTANCE_BASE_DE_DONNÉES>'

Si vous utilisez Microsoft SQL Server, modifiez sqlserver.yaml :

init_config:

instances:
    - host: 'sqlserverrds.blah.us-east-1.rds.amazonaws.com,1433'
      username: '<NOM_UTILISATEUR>'
      password: '<MOT_DE_PASSE>'
      tags:
          - 'dbinstanceidentifier:<NOM_INSTANCE_BASE_DE_DONNÉES>'

Validation

Lancez la sous-commande status de l’Agent et cherchez quelque chose qui ressemble à ceci dans la section Checks :

Checks
======

[...]

  mysql
  -----
      - instance #0 [OK]
      - Collected 8 metrics & 0 events

Utilisation

Après quelques minutes, les métriques RDS et les métriques de MySQL, Aurora, MariaDB, SQL Server, Oracle ou PostgreSQL peuvent être consultées dans Datadog depuis le Metrics Explorer, les dashboards et les alertes. Voici un exemple de dashboard Aurora affichant un certain nombre de métriques issues des intégrations MySQL et RDS. Les métriques des deux intégrations sur l’instance quicktestrds sont unifiées à l’aide du tag dbinstanceidentifier.

dashboard rds aurora

Collecte de logs

Activer le logging

Vous pouvez transmettre des logs MySQL, MariaDB et Postgres à Amazon CloudWatch. Suivez les instructions figurant dans l’article sur la surveillance des logs Amazon Aurora MySQL, Amazon RDS pour MySQL et MariaDB avec Amazon CloudWatch (en anglais) pour commencer à envoyer vos logs RDS à CloudWatch.

Envoyer des logs à Datadog

  1. Si vous ne l’avez pas déjà fait, configurez la fonction AWS Lambda de collecte de logs avec Datadog.
  2. Une fois la fonction Lambda installée, ajoutez manuellement un déclencheur sur le groupe de logs CloudWatch contenant vos logs RDS. Sélectionnez le groupe de logs CloudWatch correspondant, ajoutez un nom de filtre (facultatif) et ajoutez le déclencheur.

Accédez ensuite à la section Log de Datadog pour explorer vos logs.

Données collectées

Outre les métriques recueillies depuis les moteurs de base de données, vous recevez également les métriques RDS suivantes :

Métriques

Chacune des métriques récupérées à partir d’AWS se voit assigner les mêmes tags que ceux qui apparaissent dans la console AWS, y compris, mais sans s’y limiter, le hostname et les groupes de sécurité.

Événements

L’intégration Amazon RDS comprend des événements liés aux instances de base de données, aux groupes de sécurité, aux snapshots et aux groupes de paramètres. Vous trouverez ci-dessous des exemples d’événements :

Événements Amazon RDS

Checks de service

aws.rds.read_replica_status Surveille le statut du réplica en lecture. Ce check renvoie l’un des statuts suivants :

  • OK - En cours de réplication ou de connexion
  • CRITICAL - Erreur ou terminé
  • WARNING - Arrêté
  • UNKNOWN - Autre

Fonctionnalités de surveillance prêtes à l’emploi

L’intégration Amazon RDS propose des fonctionnalités de surveillance prêtes à l’emploi vous permettant de surveiller et d’optimiser vos performances.

Dépannage

Besoin d’aide ? Contactez l’assistance Datadog.

Pour aller plus loin

PREVIEWING: may/embedded-workflows