概要
Datadog アカウントを設定して、取り込まれたすべてのログ (インデックス化済み かどうかにかかわらず) を、お客様自身のクラウドストレージシステムへ転送します。リハイドレート や アーカイブ検索 を利用することで、ログをストレージ効率に優れたアーカイブに長期間保存しながら、コンプライアンス要件を満たし、必要に応じた調査のための監査性も維持できます。
Log Archiving & Forwarding ページ に移動して、取り込まれたログをお客様自身のクラウドホスト型ストレージバケットへ転送するためのアーカイブを設定します。
- まだ設定していない場合は、お使いのクラウドプロバイダーについて、Datadog のインテグレーションを設定してください。
- ストレージバケットを作成します。
- そのアーカイブに対して、
readおよび/またはwriteの権限を設定します。
そのアーカイブへの送信およびそのアーカイブからの取得のために、4. ログをルーティングします。 - 暗号化、ストレージクラス、タグなどのadvanced settingsを構成します。
設定を6. Validateし、Datadog で検出される可能性のある構成ミスがないか確認します。
環境から直接ストレージに最適化されたアーカイブにログをルーティングしたい場合は、Observability Pipelines でログをアーカイブする 方法を参照してください。
次のメトリクスは、再試行後に正常に送信されたログなどの正常にアーカイブされたログについて報告します。
- datadog.archives.logs.bytes
- datadog.archives.logs.count
インテグレーションを設定する
まだ構成されていない場合は、S3 バケットを保持する AWS アカウントの AWS インテグレーション を設定します。
- 一般的なケースでは、これには、Datadog が AWS S3 との統合に使用できるロールの作成が含まれます。
- 特に AWS China アカウントの場合は、ロール委任の代わりにアクセスキーを使用します。
まだ設定していない場合は、新しいストレージアカウントが属するサブスクリプション内で Azure インテグレーション を設定してください。これは、Datadog が統合に使用できるアプリ登録の作成 を含みます。
注: Azure ChinaCloud および Azure GermanyCloud へのアーカイブはサポートされていません。Azure GovCloud へのアーカイブはプレビュー版でサポートされています。アクセスをリクエストするには、Datadog サポートにお問い合わせください。
ストレージバケットを作成する
ログをアーカイブに送信することは Datadog GovCloud 環境の外で行われるため、Datadog の管理外となります。Datadog は、Datadog GovCloud 環境を離れたログについて一切の責任を負いません。これには、FedRAMP、DoD インパクトレベル、ITAR、輸出コンプライアンス、データ所在地、またはそれらのログに適用される同様の規制に関連してユーザーが負う義務や要件が含まれますが、これらに限定されません。
AWS コンソール にアクセスし、アーカイブを転送する S3 バケットを作成 します。
Datadog アーカイブは、仮想ホスト形式のアドレッシングを使用する S3 FIPS エンドポイントと統合する場合、ドット (.) を含むバケット名をサポートしていません。AWS のドキュメントで詳細をご確認ください。
AWS FIPS および
AWS バーチャルホスティング。
注:
- バケットを公開読み取り可能にしないでください。
- US1、US3、US5 サイト については、AWS 料金 を参照し、リージョン間データ転送料金およびクラウドストレージコストへの影響をご確認ください。リージョン間データ転送料金を管理するために、
us-east-1 にストレージバケットを作成することを検討してください。
- Azure ポータル に移動し、アーカイブの送信先となる ストレージアカウントを作成 してください。ストレージアカウントに名前を付け、標準パフォーマンスまたは Block Blob プレミアムアカウントタイプのいずれかを選択し、hotまたはcoolアクセス層を選択してください。
- そのストレージアカウントに、コンテナサービスを作成してください。コンテナ名をメモしておいてください。この後、Datadog アーカイブページに追加する必要があります。
注: まれに最後のデータを書き換える必要があるため、不変性ポリシー は設定しないでください (通常はタイムアウトが発生します)。
権限を設定する
logs_write_archive権限 を持つ Datadog ユーザーのみが、ログアーカイブ構成を作成、変更、または削除できます。
次の権限ステートメントを持つ ポリシーを作成 します。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DatadogUploadAndRehydrateLogArchives",
"Effect": "Allow",
"Action": ["s3:PutObject", "s3:GetObject"],
"Resource": [
"arn:aws:s3:::<MY_BUCKET_NAME_1_/_MY_OPTIONAL_BUCKET_PATH_1>/*",
"arn:aws:s3:::<MY_BUCKET_NAME_2_/_MY_OPTIONAL_BUCKET_PATH_2>/*"
]
},
{
"Sid": "DatadogRehydrateLogArchivesListBucket",
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": [
"arn:aws:s3:::<MY_BUCKET_NAME_1>",
"arn:aws:s3:::<MY_BUCKET_NAME_2>"
]
}
]
}
- The
GetObject and ListBucket permissions allow for rehydrating from archives. - The
PutObject permission is sufficient for uploading archives. - Ensure that the resource value under the
s3:PutObject and s3:GetObject actions ends with /* because these permissions are applied to objects within the buckets.
バケット名を編集します。
オプションで、ログアーカイブを含むパスを指定します。
Datadog のインテグレーションロールに新しいポリシーをアタッチします。
- AWS IAM コンソールで Roles に移動します。
- Datadog インテグレーションで使用されているロールを特定します。デフォルトでは DatadogIntegrationRole という名前ですが、組織で名称が変更されている場合は異なる可能性があります。ロール名をクリックして、ロールのサマリーページを開きます。
- Add permissions、Attach policies の順にクリックします。
- 上記で作成したポリシーの名称を入力します。
- Attach policies をクリックします。
- Datadog アプリに、ストレージアカウントへの書き込みおよびリハイドレートを行うための権限を付与します。
- ストレージアカウントのページ でストレージアカウントを選択し、Access Control (IAM) で Add -> Add Role Assignment を選択します。
- Role に Storage Blob Data Contributor を入力し、Azure と統合するために作成した Datadog アプリを選択して、保存します。
Datadog Google Cloud サービスアカウントに、アーカイブをバケットに書き込むための権限を付与します。
Google Cloud IAM Admin ページ から Datadog の Google Cloud サービスアカウントのプリンシパルを選択し、Edit principal を選択します。
ADD ANOTHER ROLE をクリックし、Storage Object Admin ロールを選択し、保存します。
Storage Object Admin ロールは Datadog の推奨構成です。組織で最小権限のカスタムロールが必要な場合、アーカイブのアップロードには以下の個別権限が必要です。
storage.objects.createstorage.objects.getstorage.objects.liststorage.objects.delete
storage.objects.deleteはアーカイブの書き込みリトライをサポートするために必要であり、その際 Datadog はバケット内の既存オブジェクトを上書きします。マルチパートアップロードの権限 (storage.multipartUploads.*) は必要ありません。
ログをバケットにルーティング
Log Archiving & Forwarding ページ に移動し、Archives タブで Add a new archive を選択します。
注:
logs_write_archive 権限 のある Datadog ユーザーだけがこの手順と次の手順を完了させることができます。- ログを Azure Blob Storage にアーカイブするには、アプリ登録が必要です。Azure 統合ページ の指示を参照し、ドキュメントページ右側の「site」を「US」に設定してください。アーカイブ目的で作成されたアプリ登録には、「Storage Blob Data Contributor」ロールのみが必要です。ストレージバケットが Datadog リソース経由で監視されているサブスクリプションにある場合、アプリ登録が冗長であるという警告が表示されます。この警告は無視できます。
- バケットのネットワークアクセスが特定の IP に制限されている場合は、 IP ranges list に記載されている Webhook IP を許可リストに追加してください。
- US1-FED および US2-FED サイト については、Datadog を構成して Datadog GovCloud 環境外の送信先にログを送信できます。Datadog は、Datadog GovCloud 環境を離れたログについて一切の責任を負いません。さらに Datadog は、GovCloud 環境を離れた後のこれらのログに適用される FedRAMP、DoD インパクトレベル、ITAR、輸出コンプライアンス、データ所在地、または同様の規制に関して、ユーザーが負う義務や要件について一切の責任を負いません。
| サービス | ステップ |
|---|
| Amazon S3 | - S3 バケットに適した AWS アカウントとロールの組み合わせを選択します。 - バケット名を入力します。 オプション: ログアーカイブのすべてのコンテンツにプレフィックスディレクトリを入力できます。 |
| Azure Storage | - Azure Storage アーカイブタイプを選択し、ストレージアカウントで Storage Blob Data Contributor ロールのある Datadog アプリ用の Azure テナントとクライアントを選択します。 - ストレージアカウント名とアーカイブのコンテナ名を入力します。 オプション: ログアーカイブのすべてのコンテンツにプレフィックスディレクトリを入力できます。 |
| Google Cloud Storage | - Google Cloud Storage のアーカイブタイプを選択し、ストレージバケットに書き込む権限を持つ GCS サービスアカウントを選択します。 - バケット名を入力します。 オプション: ログアーカイブのすべてのコンテンツにプレフィックスディレクトリを入力できます。 |
高度な設定
以下のためにこのオプションの構成ステップを使用します。
- アーカイブ内のすべてのログタグを含める (デフォルトでは、すべての新規アーカイブに有効化されています)。注: 結果のアーカイブサイズが増大します。
- リハイドレートされたログに、制限クエリポリシーに従ってタグを追加します。
logs_read_data 権限を参照してください。
最大スキャンサイズを定義する
このオプションの構成ステップを使用して、ログアーカイブでリハイドレートのためにスキャンできるログデータの最大量 (GB 単位) を定義します。
最大スキャンサイズが定義されたアーカイブの場合、すべてのユーザーはリハイドレートを開始する前にスキャンサイズを見積もる必要があります。見積もったスキャンサイズがそのアーカイブで許可されているサイズを超える場合、ユーザーはリハイドレートの対象となる時間範囲を短縮する必要があります。時間範囲を短縮することでスキャンサイズが減少し、ユーザーはリハイドレートを開始できるようになります。
アーカイブパーティション属性 (プレビュー)
アーカイブされたログがストレージ内で物理的にどのように整理されるかを最適化し (アーカイブ検索 の高速化のため)、Datadog アーカイブでパーティション属性を構成します。
- パーティション属性: 検索フィルターとして頻繁に使用する
service、source、env、または status のような低カーディナリティ属性を追加します。 - 利点: 同じパーティション属性値を共有するログは、ストレージ内で同じ場所に配置されます。検索時に、Datadog はクエリに一致しないすべてのパーティションをスキップでき、スキャンするデータ量を大幅に削減します。
アーカイブルックアップ属性
アーカイブ内の検索や調査を高速化するために (アーカイブ検索 を使用)、Datadog アーカイブでルックアップ属性を構成します。
- ルックアップ属性:
trace_id、container_id、またはcustomer_id のような高カーディナリティ属性を追加します。 - 利点: これにより、長期ストレージ内の特定のログをより迅速に特定でき、アドホック調査時のスキャン時間とデータ量を削減できます。
パーティション属性とルックアップ属性の違い
| パーティション | ルックアップ |
|---|
| カーディナリティ | 低 (数十から数百の値) | 高 (数百万の値) |
| 典型的な属性 | service、source、env、status | trace_id、container_id、user_id、transaction_id |
| どのように役立つか | スキャン対象からパーティション全体を除外できる | アーカイブ内の個々のログエントリを特定できる |
| 最適な用途 | 環境やサービスによる広範なフィルタリング | 特定の識別子に対するアドホック調査 |
最大の検索パフォーマンスを得るために、両方を組み合わせて使用します。パーティション属性は検索スコープを関連するデータセグメントに絞り込み、ルックアップ属性はそれらのセグメント内の特定のログを瞬時に見つけることができます。
圧縮
デフォルトでは、Datadog は zstd (Zstandard) 圧縮を使用してログをアーカイブします (.json.zst)、これは gzip と比較して、より高い圧縮率と高速な解凍速度を提供します。また、gzip 圧縮 (.json.gz) を設定することもできます。
圧縮を構成するには、Log Archiving & Forwarding ページ でアーカイブを作成または編集する際に、Compression Type を選択します。
- zstd (デフォルト): より高い圧縮率と高速な解凍速度。新しいアーカイブに推奨されます。特に、アーカイブ検索 を使用する予定がある場合に適しています。
- gzip: 幅広くサポートされており、ほとんどのツールと互換性があります。
注: 既存のアーカイブの圧縮形式を変更しても、影響を受けるのは新しいアーカイブファイルのみです。すでにバケットに保存されているファイルは、元の形式のまま保持されます。
ストレージクラス
アーカイブのストレージクラスを選択するか、S3 バケットにライフサイクル設定を構成 して、ログアーカイブを最適なストレージクラスへ自動的に移行できます。
リハイドレート は、以下のストレージクラスのみをサポートします。
- S3 Standard
- S3 Standard-IA
- S3 One Zone-IA
- S3 Glacier Instant Retrieval
- S3 Intelligent-Tiering、オプションの非同期アーカイブアクセス階層 が両方とも無効化されている場合のみ。
他のストレージクラスにあるアーカイブからリハイドレートする場合は、まず上記のサポートされているストレージクラスのいずれかに移動させる必要があります。
アーカイブと リハイドレート は、以下のアクセス層にのみ対応しています。
他のアクセス層にあるアーカイブからリハイドレートする場合は、まず上記のサポートされている層のいずれかに移動させる必要があります。
アーカイブと リハイドレート では、以下のアクセス層がサポートされています。
- Standard
- Nearline
- Coldline
- Archive
S3 アーカイブのサーバー側暗号化 (SSE)
Datadog で S3 アーカイブを作成または更新する際に、オプションで Advanced Encryption を設定できます。Encryption Type のドロップダウンには、3 つのオプションがあります。
- Default S3 Bucket-Level Encryption (デフォルト): Datadog は S3 バケットのデフォルト暗号化設定を上書きしません。
- Amazon S3 managed keys: S3 バケットのデフォルト暗号化に関係なく、SSE-S3 を使用したサーバー側暗号化を強制します。
- AWS Key Management Service: S3 バケットのデフォルト暗号化に関係なく、AWS KMS の顧客管理キー (CMK) を使用したサーバー側暗号化を強制します。CMK ARN を指定する必要があります。
このオプションを選択すると、Datadog はアップロードリクエストに暗号化ヘッダーを指定しません。S3 バケットのデフォルトの暗号化が適用されます。
S3 バケットの暗号化設定を設定または確認するには:
- S3 バケットに移動します。
- Properties タブをクリックします。
- Default Encryption セクションで、暗号化タイプを設定または確認します。暗号化に AWS KMS を使用している場合は、有効な CMK と CMK ポリシーが CMK にアタッチされていることを確認してください。
このオプションにより、すべてのアーカイブオブジェクトが SSE_S3 を使用して、Amazon S3 managed keys でアップロードされます。これは S3 バケットのデフォルトの暗号化設定を上書きします。
このオプションにより、すべてのアーカイブオブジェクトが AWS KMS の顧客管理キー (CMK) を使用してアップロードされます。これは S3 バケットのデフォルトの暗号化設定を上書きします。
有効な CMK と CMK ポリシーを作成するために、以下の手順を完了していることを確認してください。次に、この暗号化タイプを正常に設定するために CMK ARN を指定します。
- CMK を作成します。
- 以下の内容で 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"
}
}
}
]
}
- Datadog で Encryption Type として AWS Key Management Service を選択した後、AWS KMS キー ARN を入力してください。
検証
Datadog アカウントでアーカイブ設定が正常に構成された時点から、処理パイプラインは Datadog に取り込まれたすべてのログを加工し始めます。その後アーカイブに転送されます。
ただし、アーカイブ設定を作成または更新した後、次のアーカイブアップロードが試行されるまでに数分かかることがあります。アーカイブのアップロード頻度は異なる場合があります。15 分後にストレージバケットを確認し、Datadog アカウントからアーカイブが正常にアップロードされていることを確認してください。
その後、アーカイブがまだ保留状態の場合は、インクルージョンフィルターを確認し、クエリが有効であり、Live Tail のログイベントに一致していることを確認してください。設定や権限の意図しない変更により、Datadog が外部アーカイブへのログのアップロードに失敗すると、該当するログアーカイブが構成ページでハイライト表示されます。
アーカイブにカーソルを合わせると、エラーの詳細と問題を解決するための対処方法が表示されます。Events Explorer にもイベントが生成されます。これらのイベントに対してモニターを作成し、障害を迅速に検出して修正することができます。
複数のアーカイブ
複数のアーカイブが定義されている場合、フィルターに基づき、最初のアーカイブにログが入力されます。
アーカイブの順序を慎重に設定することが重要です。たとえば、最初に env:prod タグで絞り込まれるアーカイブを作成し、次にフィルターなし (* と同等) でアーカイブを作成した場合、すべてのプロダクションログは一方のストレージバケットまたはパスに転送され、その他のログはもう一方のアーカイブに転送されます。
Datadog がストレージバケットに転送するログアーカイブは、圧縮された JSON 形式になっています。圧縮設定に応じて、アーカイブファイルは zstd (.json.zst、デフォルト) または gzip (.json.gz) 圧縮を使用します。指定したプレフィックス (ない場合は /) を使用して、以下のようなアーカイブファイルが生成された日時を示すディレクトリ構造でアーカイブファイルが保存されます。
/my/bucket/prefix/dt=20180515/hour=14/archive_143201.1234.02aafad5-f525-4592-905e-e962d1a5b2f7.json.gz
/my/bucket/prefix/dt=<YYYYMMDD>/hour=<HH>/archive_<HHmmss.SSSS>.<UUID>.json.gz
このディレクトリ構造により、過去のログアーカイブを日付に基づいてクエリする処理が簡略化されます。
参考資料
*Logging without Limits は Datadog, Inc. の商標です。