- English
- 日本語
ログストリーミング: New Relic OTLP
最終更新日 2024-12-18
Fastly のリアルタイムログストリーミング機能によって、New Relic OTLP にログファイルを送信することができます。
注意
Fastly ではサードパーティのサービスに関する直接のサポートは行っておりません。詳細については、Fastly のご利用規約をご覧ください。
前提条件
Fastly サービスのログエンドポイントとして New Relic OTLP を追加する前に、以下が必要です。
- New Relic アカウント を登録します。
- レポートデータのライセンスキーを取得します。
- New Relic Infinite のトレーシングを使用している場合、New Relic Infinite Tracing Settings で New Relic Trace Observer の URL を確認します。For OTLP HTTP の下にあるエンドポイント値をコピーする必要があります。
ログエンドポイントとして New Relic OTLP を追加する
以下の手順で New Relic OTLP をログエンドポイントとして追加します。
- Deliver サービス
- Compute サービス
- リモートログストリーミングの設定に関するガイドをご確認ください。
- New Relic OTLP エリアで、Create endpoint をクリックします。
- 以下の要領で Create a New Relic OTLP endpoint ページの各フィールドに入力します。
- Name フィールドに分かりやすいエンドポイントの名前を入力します。
- License key / Insert key フィールドに、New Relic のライセンスキーまたは Insert API キーを入力します。
- Region コントロールから、ログを配信するリージョンを選択します。
- (オプション) New Relic Infinite Tracing を使用している場合は、Advanced options をクリックし、Trace Observer URL フィールドに New Relic Trace Observer URL を入力します。
- Create をクリックして新規のログエンドポイントを作成します。
- Activate をクリックして設定への変更をデプロイします。
- 以下の手順に従って、VCL サービスを測定してください。
VCL サービスの測定
エンドポイントを設定した後で、カスタム VCL を追加してデータを収集し、エッジで Open Telemetry トレースを生成する必要があります。
カスタム VCL ファイルの最上部に、以下の機能を配置します。
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859sub time_now_ns STRING {declare local var.time_now INTEGER;set var.time_now = std.atoi(time.start.usec);set var.time_now += std.atoi(time.elapsed.usec);set var.time_now *= 1000;return var.time_now;}sub random_8bit_identifier STRING {declare local var.id STRING;set var.id = randomstr(16, "0123456789abcdef");return var.id;}sub random_16bit_identifier STRING {declare local var.id STRING;set var.id = randomstr(32, "0123456789abcdef");return var.id;}sub otel_resource STRING {declare local var.str STRING;set var.str = {"{ "attributes": [ "}{"{ "key": "service.name", "value": { "stringValue": "Fastly www" } }, "}{"{ "key": "telemetry.sdk.language", "value": { "stringValue": "vcl" } }, "}{"{ "key": "telemetry.sdk.name", "value": { "stringValue": "opentelemetry" } }, "}{"{ "key": "telemetry.sdk.version", "value": { "stringValue": "1.0.1" } }, "}{"{ "key": "host.name", "value": { "stringValue": ""} server.identity {"" } }"}{"], "droppedAttributesCount": 0 }"};return var.str;}sub otel_attributes_general STRING {declare local var.data STRING;set var.data = ""{"{ "key": "http.method", "value": { "stringValue": ""} req.method {"" } },"}{"{ "key": "http.target", "value": { "stringValue": ""} req.url {"" } },"}{"{ "key": "http.host", "value": { "stringValue": ""} req.http.host {"" } },"}{"{ "key": "http.protocol", "value": { "stringValue": ""} req.protocol {"" } },"}{"{ "key": "http.client_ip", "value": { "stringValue": ""} client.ip {"" } },"}{"{ "key": "fastly.restarts", "value": { "stringValue": ""} req.restarts {"" } },"}{"{ "key": "fastly.visits_this_service", "value": { "stringValue": ""} fastly.ff.visits_this_service {"" } },"}{"{ "key": "fastly.server_role", "value": { "stringValue": ""} req.http.x-trace-server-role {"" } },"}{"{ "key": "fastly.server_ip", "value": { "stringValue": ""} server.ip {"" } },"}{"{ "key": "fastly.server_id", "value": { "stringValue": ""} server.identity {"" } },"}{"{ "key": "fastly.server_role", "value": { "stringValue": ""} req.http.x-trace-server-role {"" } },"}{"{ "key": "fastly.vcl_version", "value": { "stringValue": ""} req.vcl.version {"" } },"}{"{ "key": "fastly.pop", "value": { "stringValue": ""} server.datacenter {"" } },"}{"{ "key": "fastly.workspace.overflowed", "value": { "stringValue": ""} workspace.overflowed {"" } },"}{"{ "key": "fastly.workspace.bytes_total", "value": { "stringValue": ""} workspace.bytes_total {"" } },"}{"{ "key": "fastly.workspace.bytes_free", "value": { "stringValue": ""} workspace.bytes_free {"" } },"};return var.data;}sub telem_start_backend_fetch {set bereq.http.traceparent = "00-" req.http.x-trace-id + "-" + req.http.x-trace-vcl-span-id "-01";# Avoid leaking internal headers to backendsunset bereq.http.x-trace-id;unset bereq.http.x-trace-parent-span-id;unset bereq.http.x-trace-server-role;# Leapfrog cloud service infra that creates 'ghost spans'set bereq.http.x-traceparent = bereq.http.traceparent;}次の VCL を
vcl_recv
サブルーチンの先頭に追加すると、Fastly POP 内のリクエストの有効期間全体のスパンが記録されます。12345678910if (req.restarts == 0) {set req.http.x-trace-vcl-span-id = random_8bit_identifier();if (req.http.traceparent ~ "^\d+-(\w+)-(\w+)-\d+$") {set req.http.x-trace-id = re.group.1;set req.http.x-trace-parent-span-id = re.group.2;} else {set req.http.x-trace-id = random_16bit_identifier();}set req.http.x-trace-server-role = if (fastly.ff.visits_this_service == 0, "edge", "shield");}次の VCL を
vcl_log
サブルーチンの末尾に追加し、otel_collector_http
をエンドポイントの名前で置き換えます。1234567891011121314151617181920212223242526272829303132declare local var.otel_resource STRING;declare local var.otel_attribs STRING;declare local var.time_start_ns STRING;declare local var.time_now_ns STRING;set var.time_start_ns = time.start.usec "000";set var.time_now_ns = time_now_ns();set var.otel_resource = otel_resource();set var.otel_attribs = otel_attributes_general();log "syslog " req.service_id " otel_collector_http :: "{"{ "resourceSpans": [ { "}{""resource": "} var.otel_resource {", "}{""scopeSpans": [ { "spans": [ { "}{""traceId": ""} req.http.x-trace-id {"", "}{""spanId": ""} req.http.x-trace-vcl-span-id {"", "}if(req.http.x-trace-parent-span-id,{""parentSpanId": ""} req.http.x-trace-parent-span-id {"", "},""){""name": "Fastly request processing", "}{""kind": 1, "}{""startTimeUnixNano": "} var.time_start_ns {", "}{""endTimeUnixNano": "} var.time_now_ns {", "}{""attributes": [ "}var.otel_attribs{"{ "key": "http.user_agent", "value": { "stringValue": ""} req.http.User-Agent {"" } }, "}{"{ "key": "http.status_code", "value": { "stringValue": ""} resp.status {"" } }"}{"], "}{""status": { "code":"} if (fastly_info.state ~ "ERROR", "2", "0") {" }, "}{""links": [], "}{""droppedLinksCount": 0"}{"} ] } ]"}{"} ] }"};telem_start_backend_fetch
にコールを追加し、vcl_miss
とvcl_pass
サブルーチンに配置すると、Fastly スパンの子としてバックエンドシステムで発生するスパンが表示されます。サービスを有効にします。
翻訳についての注意事項
このフォームを使用して機密性の高い情報を送信しないでください。サポートが必要な場合は、サポートチームまでご連絡ください。このフォームは reCAPTCHA によって保護されており、Google のプライバシーポリシーと利用規約が適用されます。