概要
Amazon Relational Database Service (RDS) は、クラウドでリレーショナルデータベースのセットアップ、運用、スケーリングに使用される Web サービスです。このインテグレーションを有効にすると、Datadog にすべての RDS メトリクスを表示できます。
注: 環境変数 DD_SITE がコード  の外のリージョンに設定されていることを確認するか、または次のようにコードで変数を設定します。
DD_SITE = os.getenv("DD_SITE", default="")
RDS インスタンスを監視するには、Standard、Enhanced、Native の 3 つのオプションがあります。コンフィギュレーションを選択する前に、メトリクスのリスト全体を確認してください。各メトリクスには対応するコンフィギュレーションのラベルが付いているためです。さらに、以下の情報を確認して、各コンフィギュレーションの要件とプリセットダッシュボードの詳細を確認してください。
標準インテグレーションの場合、AWS インテグレーションページの Metric Collection タブで RDS を有効にする必要があります。これにより、ご使用の CloudWatch インテグレーションで利用可能な回数だけ、インスタンスに関するメトリクスを受信できます。すべての RDS エンジンタイプに対応しています。
このインテグレーションのプリセットダッシュボードには、接続、レプリケーションラグ、読み取り操作とレイテンシー、コンピューター、RAM、書き込み操作とレイテンシー、ディスクメトリクスのメトリクス情報が含まれています。
拡張インテグレーションの場合、構成を追加する必要があります。また、MySQL、Aurora、MariaDB、SQL Server、Oracle、PostgreSQL エンジンで使用できます。メトリクスを追加することができますが、追加したメトリクスを Datadog に送信するには、AWS Lambda が必要です。粒度が高く、追加のサービスが必要になると AWS の追加料金が発生します。
このインテグレーションのプリセットダッシュボードには、負荷、アップタイム、CPU 使用率、タスク、メモリ、SWAP、ネットワーク受信、ネットワーク送信、プロセスごとに使用される CPU、プロセスごとに使用されるメモリ、ディスク操作、使用されるファイルシステム (pct)、 実行中のタスク、システム CPU 使用率のメトリクス情報が含まれています。
ネイティブデータベースインテグレーションはオプションです。MySQL、Aurora、MariaDB、SQL Server、PostgreSQL の各エンジンタイプで使用できます。RDS とネイティブインテグレーションの両方からメトリクスを取得して照合するには、RDS インスタンスに割り当てる識別子に基づいて、ネイティブインテグレーションで dbinstanceidentifier タグを使用します。RDS インスタンスには自動的にタグが割り当てられます。
このコンフィギュレーションで使用できるプリセットダッシュボードは、MySQL、Aurora、PostgreSQL の 3 つです。各ダッシュボードには、クエリボリューム、ディスク I/O、接続、レプリケーション、AWS リソースのメトリクスが含まれています。
注: これらのダッシュボードには、AWS CloudWatch と個々のデータベースエンジン自体の両方からのメトリクスが表示されます。すべてのインテグレーションメトリクスに対して、インテグレーション (MySQL、Aurora、PostgreSQL) の 1 つを有効にします。
セットアップ
インストール
インスタンスの作成中または作成後に RDS インスタンスの拡張モニタリングを有効にするには、Instance Actions の下にある Modify を選択します。監視の詳細度には 15 を選択することをお勧めします。
次の手順では、KMS と Lambda Management Console を使用して、RDS Enhanced Monitoring Lambda 関数でのみ使用できる Datadog API キーの暗号化バージョンを作成します。Log Forwarder などの別の Lambda 関数ですでに暗号化された API キーをお持ちの場合は、他のオプションについて Lambda 関数の README を参照してください。
KMS キーの作成
- KMS のホーム (https://console.aws.amazon.com/kms/home) を開きます。
 - Customer managed keys に進みます。
 - Create Key を選択します。
 - キーのエイリアス (例: 
lambda-datadog-key) を入力します。注: 「aws」で始まるエイリアスは使用できません。「aws」で始まるエイリアスは、ご使用のアカウントで AWS 管理の CMK を表すために Amazon Web Services によって予約されています。 - 適切な管理者を追加して、このキーを管理できるユーザーを指定します。
 - ロールを追加する必要はありません。
 - KMS キーを保存します。
 
Lambda 関数の作成
- Lambda マネジメントコンソールから、新しい Lambda 関数を作成します。Lambda 関数は、作成した KMS キーと同じリージョンにある必要があります。
 Serverless Application Repository を選択し、Datadog-RDS-Enhanced を検索して選択します。- アプリケーションに一意の名前を付けます。
 - 前のセクションで作成したキーの ID を 
KMSKeyId パラメーターに貼り付け、デプロイします。 - アプリケーションがデプロイされたら、新しく作成された Lambda 関数を開きます (「Resource」の下にある関数をクリック)。
 Configuration タブをクリックし、Environment variables セクションに移動します。環境変数 kmsEncryptedKeys の value フィールドに、以下のように完全な JSON 形式で Datadog API キー を追加します: {"api_key":"<YOUR_API_KEY>"}Encryption configuration セクションを開き、Enable helpers for encryption in transit を選択します。KMS key to encrypt at rest セクションで、Use a customer master key を選択し、先に作成したものと同じ KMS キーを入力します。- 先ほど入力した JSON blob の横にある Encrypt ボタンを押し、ポップアップで、先ほど作成したものと同じ KMS キーを選択します。
 - Save を押します。
 RDSOSMetrics CloudWatch ロググループをソースとして使用して新しいトリガーを作成します。- フィルターに名前を付け、オプションでフィルターパターンを指定して、Save を押します。
 
Lambda 関数のテストボタンをクリックすると、次のエラーが発生する可能性があります。
{
    "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'"
}
これは無視してかまいません。Test ボタンはこのセットアップでは機能しません。
AWS コンソールに移動し、RDS セクションを開いて、監視するインスタンスを見つけます。
エンドポイント URL をメモします (例: mysqlrds.blah.us-east1.rds.amazonaws.com:3306)。これは Agent の構成に使用されます。DB Instance identifier もメモします (例 mysqlrds)。これはグラフやダッシュボードの作成に使用されます。
コンフィギュレーション
AWS インテグレーションページで、Metric Collection タブの下にある RDS が有効になっていることを確認します。
Amazon RDS のメトリクスを収集するには、次のアクセス許可を Datadog IAM ポリシーに追加します。詳細については、AWS ウェブサイト上の RDS ポリシーを参照してください。
| AWS アクセス許可 | 説明 | 
|---|
rds:DescribeDBInstances | タグを追加するための RDS インスタンスを記述します。 | 
rds:ListTagsForResource | RDS インスタンスにカスタムタグを追加します。 | 
rds:DescribeEvents | RDS データベースに関連するイベントを追加します。 | 
Datadog - Amazon RDS インテグレーションをインストールします。
AWS インテグレーションページで、Metric Collection タブの下にある RDS が有効になっていることを確認します。
Amazon RDS のメトリクスを収集するには、次のアクセス許可を Datadog IAM ポリシーに追加します。詳細については、AWS ウェブサイト上の RDS ポリシーを参照してください。
| AWS アクセス許可 | 説明 | 
|---|
rds:DescribeDBInstances | タグを追加するための RDS インスタンスを記述します。 | 
rds:ListTagsForResource | RDS インスタンスにカスタムタグを追加します。 | 
rds:DescribeEvents | RDS データベースに関連するイベントを追加します。 | 
Datadog - Amazon RDS インテグレーションをインストールします。
conf.d ディレクトリ内の適切な yaml ファイルを編集することで Agent を構成し、RDS インスタンスに接続します。その後、Agent を再起動します。
RDS Aurora の場合は、使用しているデータベース用の YAML ファイルを編集します。
MySQL または MariaDB を使用している場合は、mysql.yaml を編集します。
init_config:
instances:
    # AWS コンソールからのエンドポイント URL
    - server: 'mysqlrds.blah.us-east-1.rds.amazonaws.com'
      user: '<USERNAME>'
      pass: '<PASSWORD>'
      port: 3306
      tags:
          - 'dbinstanceidentifier:<INSTANCE_NAME>'
PostgreSQL を使用している場合は、postgres.yaml を編集します。
init_config:
instances:
    - host: 'postgresqlrds.blah.us-east-1.rds.amazonaws.com'
      port: 5432
      username: '<USERNAME>'
      password: '<PASSWORD>'
      dbname: '<DB_NAME>'
      tags:
          - 'dbinstanceidentifier:<DB_INSTANCE_NAME>'
Microsoft SQL Server を使用している場合は、sqlserver.yaml を編集します。
init_config:
instances:
    - host: 'sqlserverrds.blah.us-east-1.rds.amazonaws.com,1433'
      username: '<USERNAME>'
      password: '<PASSWORD>'
      tags:
          - 'dbinstanceidentifier:<DB_INSTANCE_NAME>'
検証
Agent の status サブコマンドを実行し、Checks セクションでこれに似た値を探します。
Checks
======
[...]
  mysql
  -----
      - instance #0 [OK]
      - Collected 8 metrics & 0 events
使用方法
数分経つと、RDS メトリクスと MySQL、Aurora、MariaDB、SQL Server、Oracle、PostgreSQL の各メトリクスが Datadog のメトリクスエクスプローラー、ダッシュボード、アラートからアクセスできようになります。
下記に RDS と MySQL 双方のインテグレーションから取得した複数のメトリクスを表示する Aurora ダッシュボードの例を示します。インスタンス quicktestrds で双方のインテグレーションから取得したメトリクスを dbinstanceidentifier タグを使用して一つにまとめています。
ログの収集
ログの有効化
MySQL、MariaDB、および Postgres のログを Amazon CloudWatch に転送することができます。Amazon CloudWatch で Amazon Aurora MySQL、Amazon RDS for MySQL、MariaDB のログを監視の指示に従って、RDS のログを CloudWatch に送信します。
ログを Datadog に送信する方法
- Datadog ログコレクション AWS Lambda 関数をまだセットアップしていない場合は、セットアップします。
 - Lambda 関数をインストールしたら、RDS ログを含む CloudWatch ロググループにトリガーを手動で追加します。対応する CloudWatch ロググループを選択し、フィルター名 (オプション) を追加して、トリガーを追加します。
 
完了したら、Datadog Log セクションに移動し、ログを確認します。
収集データ
データベースエンジンから収集されたメトリクスのほかに、以下の RDS メトリクスも受信します。
メトリクス
AWS から取得される各メトリクスには、ホスト名やセキュリティ グループなど、AWS コンソールに表示されるのと同じタグが割り当てられます。
イベント
Amazon RDS インテグレーションには、DB インスタンス、セキュリティグループ、スナップショット、およびパラメーターグループに関連するイベントが含まれます。以下はイベントの例です。
サービスのチェック
aws.rds.read_replica_status
読み取りレプリケーションのステータスを監視します。このチェックは、以下のいずれかのステータスを返します。
- OK - レプリケート中または接続中
 - CRITICAL - エラーまたは途中終了
 - WARNING - 停止
 - UNKNOWN - その他
 
すぐに使える監視
Amazon RDS インテグレーションは、パフォーマンスを監視し最適化するために、すぐに使える監視機能を提供します。
トラブルシューティング
ご不明な点は、Datadog のサポートチームまでお問合せください。
その他の参考資料