ログアーカイブ

ログアーカイブ

概要

Datadog アカウントを構成して、独自のクラウドストレージシステムへ収集されたすべてのログ(インデックス化の有無にかかわらず)を転送します。ストレージに最適化されたアーカイブにログを長期間保管し、コンプライアンス要件を満たすことができると同時に、アドホック調査のための監査適合性をリハイドレートで維持できます。

このガイドでは、クラウドホスト型ストレージバケットに収集したログを転送するためのアーカイブの設定方法を説明します。

  1. まだの場合は、お使いのクラウドプロバイダーと Datadogのインテグレーションを設定してください
  2. ストレージバケットを作成します
  3. そのアーカイブへの read および write 許可を設定します
  4. アーカイブへ、およびアーカイブからログをルーティングします
  5. 暗号化、ストレージクラス、タグなどの詳細設定を構成します
  6. Datadog で検出される可能性のある構成ミスがないか、設定を確認します

注: logs_write_archive 権限のある Datadog ユーザーだけがログアーカイブ構成を作成、変更、または削除できます。

ログアーカイブの構成

インテグレーションを設定

AWS Role Delegation は、Datadog for Government site でサポートされていません。アクセスキーを使用する必要があります。

まだ構成されていない場合は、S3 バケットを保持する AWS アカウントの AWS インテグレーションをセットアップします。

  • 一般的なケースでは、これには、Datadog が AWS S3 との統合に使用できるロールの作成が含まれます。
  • 特に AWS GovCloud または China アカウントの場合は、ロール委任の代わりにアクセスキーを使用します。

新しいストレージアカウントのあるサブスクリプション内で Azure インテグレーションをセットアップしていない場合、セットアップします。これには、Datadog が統合に使用できるアプリ登録の作成も含まれます。

GCS ストレージバケットを持つプロジェクト用の GCP インテグレーションをセットアップしていない場合、セットアップします。これには Datadog が統合に使用できる GCP サービスアカウントの作成 も含まれます。

ストレージバケットを作成

AWS コンソールにアクセスし、アーカイブを転送する S3 バケットを作成します。

注:

  • バケットは一般ユーザーが読み取り可能になるよう設定してください。
  • まれに最後のデータを書き換える必要があるため、オブジェクトロックを設定しないでください (通常はタイムアウト)。
  • Azure ポータルにアクセスし、アーカイブを転送するストレージアカウントを作成します。ストレージアカウントの名前と種類を指定し、hot アクセス層を選択します。
  • そのストレージアカウントに container サービスを作成します。Datadog アーカイブページに追加する必要があるため、コンテナ名をメモしてください。

注: まれに最後のデータを書き換える必要があるため、不変性ポリシーを設定しないでください (通常はタイムアウト)。

GCP アカウントにアクセスし、アーカイブを転送する GCS バケットを作成します。「Choose how to control access to objects」で、「Set object-level and bucket-level permissions」を選択します。

注: まれに最後のデータを書き換える必要があるため、保持ポリシーを追加しないでください (通常はタイムアウト)。

アクセス許可を設定

次の 2 つのアクセス許可ステートメントを IAM ポリシーに追加します。バケット名を編集し、必要に応じてログアーカイブを含むパスを指定します。

:

  • GetObject および ListBucket アクセス許可は、アーカイブからリハイドレートを可能にします。
  • アーカイブのアップロードには、PutObject アクセス許可で十分です。
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DatadogUploadAndRehydrateLogArchives",
      "Effect": "Allow",
      "Action": ["s3:PutObject", "s3:GetObject"],
      "Resource": [
        "arn:aws:s3:::<バケット名_1_/_バケットへのパス_任意_1>/*",
        "arn:aws:s3:::<バケット名_2_/_バケットへのパス_任意_2>/*"
      ]
    },
    {
      "Sid": "DatadogRehydrateLogArchivesListBucket",
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": [
        "arn:aws:s3:::<バケット名_1>",
        "arn:aws:s3:::<バケット名_2>"
      ]
    }
  ]
}
  • Datadog アプリに、ストレージアカウントへ書き込み、ここからリハイドレートするための許可を与えます。
  • ストレージアカウントのページでストレージアカウントを選択し、Access Control (IAM)Add -> Add Role Assignment を選択します。
  • Role に Storage Blob Data Contributor を入力し、Azure と統合するために作成した Datadog アプリを選択して、保存します。

Datadog GCP サービスアカウントに、バケットへアーカイブを書き込むための許可を与えます。

Storage の下に Storage Object Admin というロールを追加します。

ログをバケットにルーティング

Datadog アプリのアーカイブページに移動し、下にある Add a new archive オプションを選択します。

: logs_write_archive 権限のある Datadog ユーザーだけがこの手順と次の手順を完了させることができます。

S3 バケットに適した AWS アカウントとロールの組み合わせを選択します。

バケット名を入力します。任意: ログアーカイブのすべてのコンテンツにプレフィックスディレクトリを入力します。

Azure Storage アーカイブタイプを選択し、ストレージアカウントで Storage Blob Data Contributor ロールのある Datadog アプリ用の Azure テナントとクライアントを選択します。

ストレージアカウント名とアーカイブのコンテナ名を入力します。任意: ログアーカイブのすべてのコンテンツにプレフィックスディレクトリを入力します。

GCS のアーカイブタイプを選択し、ストレージバケットに書き込む権限を持つ GCS サービスアカウントを選択します。バケット名を入力します。

バケット名を入力します。任意: ログアーカイブのすべてのコンテンツにプレフィックスディレクトリを入力します。

高度な設定

Datadog のアクセス許可

デフォルト:

  • すべての Datadog 管理者ユーザーは、アーカイブの作成、編集、並べ替えができます (複数アーカイブの構成を参照)
  • すべての Datadog 監理者および標準ユーザーは、アーカイブからリハイドレーションできます
  • Datadog の読み取り専用ユーザーを含むすべてのユーザーは、リハイドレーションされたログにアクセスできます

オプションで、コンフィギュレーションステップを使用し、アーカイブにロールを割り当て、以下を実行できるユーザーを設定できます。

Datadog タグ

このコンフィギュレーションのオプション手順を使用すると、以下が可能です。

  • アーカイブ内のすべてのログタグを含める (デフォルトでは、すべての新規アーカイブに有効化されています)。: 結果のアーカイブサイズが増大します。
  • リハイドレート済みのログのタグを制限クエリポリシーに追加(logs_read_data 権限を参照)。

ストレージクラス

S3 バケットにライフサイクルコンフィギュレーションを設定して、ログアーカイブを最適なストレージクラスに自動的に移行できます。

リハイドレートは、Glacier および Glacier Deep Archive を除くすべてのストレージクラスをサポートしています。Glacier または Glacier Deep Archive ストレージクラスのアーカイブからリハイドレートする場合は、まずそれらを別のストレージクラスに移動する必要があります。

サーバー側の暗号化 (SSE)

SSE-S3

サーバー側の暗号化を S3 ログアーカイブに追加するもっとも簡単な方法は、S3 のネイティブサーバーサイド暗号化 SSE-S3 を利用することです。

有効化するには S3 バケットの Properties タブに移動し、Default Encryption を選択します。AES-256 オプションを選択して、Save を選択します。

SSE-KMS

また、Datadog は CMK を利用した AWS KMS からのサーバーサイド暗号化もサポートしています。有効化するには次の手順に従ってください。

  1. CMK の作成
  2. CMK に付随する CMK ポリシーに以下のコンテンツを添加して、AWS アカウント番号と Datadog IAM ロール名を適切なものに置き換えます。
{
    "Id": "key-consolepolicy-3",
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Enable IAM User Permissions",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::<MY_AWS_ACCOUNT_NUMBER>:root"
            },
            "Action": "kms:*",
            "Resource": "*"
        },
        {
            "Sid": "Allow use of the key",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::<MY_AWS_ACCOUNT_NUMBER>:role/<MY_DATADOG_IAM_ROLE_NAME>"
            },
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey*",
                "kms:DescribeKey"
            ],
            "Resource": "*"
        },
        {
            "Sid": "Allow attachment of persistent resources",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::<MY_AWS_ACCOUNT_NUMBER>:role/<MY_DATADOG_IAM_ROLE_NAME>"
            },
            "Action": [
                "kms:CreateGrant",
                "kms:ListGrants",
                "kms:RevokeGrant"
            ],
            "Resource": "*",
            "Condition": {
                "Bool": {
                    "kms:GrantIsForAWSResource": "true"
                }
            }
        }
    ]
}
  1. S3 バケットの Properties タブに移動し、Default Encryption を選択します。“AWS-KMS” オプション、CMK ARN の順に選択して保存します。

検証

Datadog アカウントでアーカイブ設定が正常に構成された時点から、処理パイプラインは Datadog が収集したすべてのログを加工し始めます。その後アーカイブに転送されます。

ただし、アーカイブ構成を作成または更新してから次にアーカイブのアップロードが試行されるまで、数分かかることがあります。ログは15分ごとにアーカイブにアップロードされるので、15 分待ってストレージバケットをチェックし、Datadog アカウントからアーカイブが正常にアップロードされたことを確認してください。その後、アーカイブが依然として保留中の場合は、包含フィルターをチェックしクエリが有効であることと、live tail でログイベントが一致することを確認します。

Datadog でコンフィギュレーションの問題が検出された場合、該当するアーカイブがコンフィギュレーションページでハイライトされます。エラーアイコンをチェックして、問題を修正するためにとるべきアクションを確認します。

複数のアーカイブ

複数のアーカイブが定義された場合、ログはフィルターに基づく最初のアーカイブに保存されるため、アーカイブの順番は慎重に決定する必要があります。

たとえば、最初に env:prod タグで絞り込まれるアーカイブを作成し、次にフィルターなし (* と同等) でアーカイブを作成した場合、すべてのプロダクションログは一方のストレージバケット/パスに転送され、その他のログはもう一方のアーカイブに転送されます。

アーカイブの形式

Datadog がストレージバケットに転送するログアーカイブは、圧縮 JSON 形式(.json.gz)になっています。アーカイブは、指定したプレフィックスの下の (指定しなかった場合は /)、アーカイブファイルが生成された日時を示すディレクトリ構造に保存されます。

/my/bucket/prefix/dt=20180515/hour=14/archive_143201.1234.7dq1a9mnSya3bFotoErfxl.json.gz
/my/bucket/prefix/dt=<YYYYMMDD>/hour=<HH>/archive_<HHmmss.SSSS>.<DATADOG_ID>.json.gz

このディレクトリ構造により、過去のログアーカイブを日付に基づいてクエリする処理が簡略化されます。

圧縮 JSON ファイル内の各イベントは、以下の形式で内容が表されます。

{
    "_id": "123456789abcdefg",
    "date": "2018-05-15T14:31:16.003Z",
    "host": "i-12345abced6789efg",
    "source": "source_name",
    "service": "service_name",
    "status": "status_level",
    "message": "2018-05-15T14:31:16.003Z INFO rid='acb-123' status=403 method=PUT",
    "attributes": { "rid": "abc-123", "http": { "status_code": 403, "method": "PUT" } },
    "tags": [ "env:prod", "team:acme" ]
}

: アーカイブへのタグの追加はオプトイン機能です。アーカイブに有効にする方法については、Datadog タグのセクションを参照してください。

その他の参考資料

次に、Datadog からアーカイブされたログコンテンツにアクセスする方法を説明します。



*Logging without Limits は Datadog, Inc. の商標です。