Cloudflare Logpush は、Cloudflare ダッシュボードまたは API から、ログを Datadog に直接送信できます。
-
Cloudflare ダッシュボードで、アカウントまたはドメイン(ゾーンとも呼ばれます)の Logpush ページを開きます。
アカウントの場合: Logpush を開く ↗
ドメイン(ゾーン)の場合: Logpush を開く ↗
-
選んだ範囲に応じて、それぞれ アカウントスコープのデータセット と ゾーンスコープのデータセット を利用できます。
-
Create a Logpush job を選択します。
-
Select a destination で、Datadog を選びます。
-
次の送信先情報を入力または選択します。
- Datadog URL Endpoint。次のいずれかです。違いについては Datadog API reference ↗ を参照してください。
http-intake.logs.datadoghq.com/v1/input
http-intake.logs.datadoghq.com/api/v2/logs
-
Datadog API Key は、こちらの手順 ↗ に従って取得できます。
-
Service、Hostname、Datadog ddsource field、ddtags は URL パラメーターとして設定できます。詳細は、Datadog ドキュメントの Logs セクション ↗ を参照してください。これらのパラメーターは任意ですが、ログのインデックス作成や処理に役立ちます。値に特殊文字が含まれる場合は URL エンコードしてください。
送信先の詳細を入力したら、Continue を選択します。
-
ストレージサービスに送信するデータセットを選択します。
-
次の手順で、Logpush ジョブを設定します。
- Job name を入力します。
- If logs match では、ログに含めるイベントや除外するイベントを選べます。詳細は Filters を参照してください。このオプションがないデータセットもあります。
- Send the following fields では、すべてのログを送信先に送るか、送信するログを選ぶかを選べます。
-
Advanced Options では、次の設定ができます。
- ログ内のタイムスタンプフィールドの形式を選びます(
RFC3339(デフォルト)、Unix、またはUnixNano)。 - ログの サンプリングレート を選ぶか、ランダムにサンプリングした割合のログを送信します。
CVE-2021-44228のリダクションを有効にします。このオプションは、${の出現をすべてx{に置き換えます。
- ログ内のタイムスタンプフィールドの形式を選びます(
-
Logpush ジョブの設定が終わったら、Submit を選択します。
Datadog の Logpush ジョブを設定するには、次の手順を実行します。
- 適切なエンドポイント URL と認証パラメーターでジョブを作成します。
- ジョブを有効にして、ログの送信を開始します。
Logpush ジョブの読み取りや設定の前に、Log Share の権限が有効になっていることを確認してください。詳細は Roles のセクション を参照してください。
ジョブを作成するには、Logpush ジョブのエンドポイントに、次のフィールドを付けて POST リクエストを送ります。
-
name(任意)— ジョブ名にはドメイン名を使います。
-
destination_conf — エンドポイント URL、認可ヘッダー、および Datadog がサポートする 0 個以上の任意パラメーターからなるログ送信先です。次の文字列形式を使います。
- <DATADOG_ENDPOINT_URL>: Datadog の HTTP ログ取り込みエンドポイントです。次のいずれかです。違いについては Datadog API reference ↗ を参照してください。
https://http-intake.logs.datadoghq.com/api/v2/logs -
<DATADOG_API_KEY>: Datadog の API トークンです。こちらの手順 ↗ に従って取得できます。例:20e6d94e8c57924ad1be3c29bcaee0197d。 -
ddsource:cloudflareに設定します。 -
service、host、ddtags: Datadog が許可する任意パラメーターです。
"datadog://<DATADOG_ENDPOINT_URL>?header_DD-API-KEY=<DATADOG_API_KEY>&ddsource=cloudflare&service=<SERVICE>&host=<HOST>&ddtags=<TAGS>"- dataset — 受け取りたいログのカテゴリです。対応データセットの一覧は Datasets を参照してください。
- output_options(任意)— フィールド、サンプルレート、タイムスタンプ形式の設定は、Log Output Options を参照してください。
cURL を使ったリクエスト例:
Required API token permissions
At least one of the following token permissions is required:Logs Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/logpush/jobs" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"name": "<DOMAIN_NAME>",
"destination_conf": "datadog://<DATADOG_ENDPOINT_URL>?header_DD-API-KEY=<DATADOG_API_KEY>&ddsource=cloudflare&service=<SERVICE>&host=<HOST>&ddtags=<TAGS>",
"output_options": {
"field_names": [
"ClientIP",
"ClientRequestHost",
"ClientRequestMethod",
"ClientRequestURI",
"EdgeEndTimestamp",
"EdgeResponseBytes",
"EdgeResponseStatus",
"EdgeStartTimestamp",
"RayID"
],
"timestamp_format": "rfc3339"
},
"dataset": "http_requests",
"enabled": true
}'レスポンス:
{
"errors": [],
"messages": [],
"result": {
"id": <JOB_ID>,
"dataset": "http_requests",
"kind": "",
"enabled": true,
"name": "<DOMAIN_NAME>",
"output_options": {
"field_names": ["ClientIP", "ClientRequestHost", "ClientRequestMethod", "ClientRequestURI", "EdgeEndTimestamp", "EdgeResponseBytes", "EdgeResponseStatus" ,"EdgeStartTimestamp", "RayID"],
"timestamp_format": "rfc3339"
},
"destination_conf": "datadog://<DATADOG_ENDPOINT_URL>?header_DD-API-KEY=<DATADOG_API_KEY>",
"last_complete": null,
"last_error": null,
"error_message": null
},
"success": true
}ジョブの更新(有効化と無効化を含む)は、cURL で Logpush を管理する を参照してください。
Datadog ドキュメント ↗ に記載のとおり、Logpush の送信には次の制限があります。
HTTP 経由で Datadog プラットフォームへログを送ります。HTTP リクエストあたりの制限は次のとおりです。
- ペイロードあたりの最大コンテンツサイズ(非圧縮): 5 MB
- 1 件のログの最大サイズ: 1 MB
- 配列で複数ログを送る場合の最大配列サイズ: 1,000 件