diff --git a/content/en/serverless/google_cloud_run/containers/in_container/dotnet.md b/content/en/serverless/google_cloud_run/containers/in_container/dotnet.md index 0fc400b512003..143a2c8e3d39e 100644 --- a/content/en/serverless/google_cloud_run/containers/in_container/dotnet.md +++ b/content/en/serverless/google_cloud_run/containers/in_container/dotnet.md @@ -92,4 +92,4 @@ logger.LogInformation("Hello World!"); [2]: /tracing/trace_collection/automatic_instrumentation/dd_libraries/dotnet-core/?tab=linux [3]: /tracing/other_telemetry/connect_logs_and_traces/dotnet/ [4]: /developers/dogstatsd/?tab=dotnet#install-the-dogstatsd-client -[5]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=dotnet#code-examples +[5]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=dotnet#code-examples-5 diff --git a/content/en/serverless/google_cloud_run/containers/in_container/go.md b/content/en/serverless/google_cloud_run/containers/in_container/go.md index 4d1da8230ca3f..d99627f93ea29 100644 --- a/content/en/serverless/google_cloud_run/containers/in_container/go.md +++ b/content/en/serverless/google_cloud_run/containers/in_container/go.md @@ -87,5 +87,5 @@ go get github.com/DataDog/dd-trace-go/contrib/net/http/v2 [2]: https://github.com/DataDog/dd-trace-go?tab=readme-ov-file#installing [3]: /tracing/other_telemetry/connect_logs_and_traces/go/ [4]: /developers/dogstatsd/?tab=go#install-the-dogstatsd-client -[5]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=go#code-examples +[5]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=go#code-examples-5 diff --git a/content/en/serverless/google_cloud_run/containers/in_container/java.md b/content/en/serverless/google_cloud_run/containers/in_container/java.md index 6fd3e749a8602..188c2f159c72c 100644 --- a/content/en/serverless/google_cloud_run/containers/in_container/java.md +++ b/content/en/serverless/google_cloud_run/containers/in_container/java.md @@ -104,5 +104,5 @@ logger.info("Hello World!"); [2]: /tracing/trace_collection/automatic_instrumentation/dd_libraries/java/ [3]: /tracing/other_telemetry/connect_logs_and_traces/java/ [4]: /developers/dogstatsd/?tab=java#install-the-dogstatsd-client -[5]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=java#code-examples +[5]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=java#code-examples-5 diff --git a/content/en/serverless/google_cloud_run/containers/in_container/nodejs.md b/content/en/serverless/google_cloud_run/containers/in_container/nodejs.md index 88667a4188191..0ac88e3d6c64e 100644 --- a/content/en/serverless/google_cloud_run/containers/in_container/nodejs.md +++ b/content/en/serverless/google_cloud_run/containers/in_container/nodejs.md @@ -66,7 +66,7 @@ const logger = createLogger({ ], }); -logger.info(`Hello world!`); +logger.info('Hello world!'); {{< /code-block >}} For more information, see [Correlating Node.js Logs and Traces][2]. @@ -93,4 +93,4 @@ logger.info(`Hello world!`); [1]: /tracing/trace_collection/automatic_instrumentation/dd_libraries/nodejs/ [2]: /tracing/other_telemetry/connect_logs_and_traces/nodejs/ -[3]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=nodejs#code-examples +[3]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=nodejs#code-examples-5 diff --git a/content/en/serverless/google_cloud_run/containers/in_container/php.md b/content/en/serverless/google_cloud_run/containers/in_container/php.md index 4bdb815dfd4be..9b88229fb42cc 100644 --- a/content/en/serverless/google_cloud_run/containers/in_container/php.md +++ b/content/en/serverless/google_cloud_run/containers/in_container/php.md @@ -70,5 +70,5 @@ apk add libgcc [1]: /tracing/trace_collection/automatic_instrumentation/dd_libraries/php/ [2]: /tracing/other_telemetry/connect_logs_and_traces/php/ [3]: /developers/dogstatsd/?tab=php#install-the-dogstatsd-client -[4]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=php#code-examples +[4]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=php#code-examples-5 diff --git a/content/en/serverless/google_cloud_run/containers/in_container/python.md b/content/en/serverless/google_cloud_run/containers/in_container/python.md index 26adb5044cb53..9b0b7b130829a 100644 --- a/content/en/serverless/google_cloud_run/containers/in_container/python.md +++ b/content/en/serverless/google_cloud_run/containers/in_container/python.md @@ -98,4 +98,4 @@ logger.info("Hello world!") [2]: /tracing/trace_collection/automatic_instrumentation/dd_libraries/python [3]: /tracing/other_telemetry/connect_logs_and_traces/python/ [4]: /developers/dogstatsd/?tab=python#install-the-dogstatsd-client -[5]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=python#code-examples +[5]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=python#code-examples-5 diff --git a/content/en/serverless/google_cloud_run/containers/in_container/ruby.md b/content/en/serverless/google_cloud_run/containers/in_container/ruby.md index 2bf6570474c17..91c6aa5e10394 100644 --- a/content/en/serverless/google_cloud_run/containers/in_container/ruby.md +++ b/content/en/serverless/google_cloud_run/containers/in_container/ruby.md @@ -73,4 +73,4 @@ logger.info "Hello world!" [1]: /tracing/trace_collection/automatic_instrumentation/dd_libraries/ruby/#instrument-your-application [2]: /tracing/other_telemetry/connect_logs_and_traces/ruby/ [3]: /developers/dogstatsd/?tab=ruby#install-the-dogstatsd-client -[4]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=ruby#code-examples +[4]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=ruby#code-examples-5 diff --git a/content/en/serverless/google_cloud_run/containers/sidecar/dotnet.md b/content/en/serverless/google_cloud_run/containers/sidecar/dotnet.md index fca377cad729f..84543cc1cc8af 100644 --- a/content/en/serverless/google_cloud_run/containers/sidecar/dotnet.md +++ b/content/en/serverless/google_cloud_run/containers/sidecar/dotnet.md @@ -110,4 +110,4 @@ logger.LogInformation("Hello World!"); [2]: /tracing/trace_collection/automatic_instrumentation/dd_libraries/dotnet-core/?tab=linux [3]: /tracing/other_telemetry/connect_logs_and_traces/dotnet/ [4]: /developers/dogstatsd/?tab=dotnet#install-the-dogstatsd-client -[5]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=dotnet#code-examples +[5]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=dotnet#code-examples-5 diff --git a/content/en/serverless/google_cloud_run/containers/sidecar/go.md b/content/en/serverless/google_cloud_run/containers/sidecar/go.md index 14c86fcc35957..93f8261cf0a31 100644 --- a/content/en/serverless/google_cloud_run/containers/sidecar/go.md +++ b/content/en/serverless/google_cloud_run/containers/sidecar/go.md @@ -106,4 +106,4 @@ logrus.WithContext(ctx).Info("Hello World!") [2]: https://github.com/DataDog/dd-trace-go?tab=readme-ov-file#installing [3]: /tracing/other_telemetry/connect_logs_and_traces/go/ [4]: /developers/dogstatsd/?tab=go#install-the-dogstatsd-client -[5]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=go#code-examples +[5]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=go#code-examples-5 diff --git a/content/en/serverless/google_cloud_run/containers/sidecar/java.md b/content/en/serverless/google_cloud_run/containers/sidecar/java.md index d61bf4c39bc82..43a27e6f76937 100644 --- a/content/en/serverless/google_cloud_run/containers/sidecar/java.md +++ b/content/en/serverless/google_cloud_run/containers/sidecar/java.md @@ -119,4 +119,4 @@ logger.info("Hello World!"); [2]: /tracing/trace_collection/automatic_instrumentation/dd_libraries/java/ [3]: /tracing/other_telemetry/connect_logs_and_traces/java/ [4]: /developers/dogstatsd/?tab=java#install-the-dogstatsd-client -[5]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=java#code-examples +[5]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=java#code-examples-5 diff --git a/content/en/serverless/google_cloud_run/containers/sidecar/nodejs.md b/content/en/serverless/google_cloud_run/containers/sidecar/nodejs.md index 77ac52b5bf036..12c190bb7721e 100644 --- a/content/en/serverless/google_cloud_run/containers/sidecar/nodejs.md +++ b/content/en/serverless/google_cloud_run/containers/sidecar/nodejs.md @@ -83,7 +83,7 @@ const logger = createLogger({ ], }); -logger.info(`Hello world!`); +logger.info('Hello world!'); {{< /code-block >}} Datadog recommends setting the environment variables `DD_LOGS_INJECTION=true` (in your main container) and `DD_SOURCE=nodejs` (in your sidecar container) to enable advanced Datadog log parsing. @@ -108,4 +108,4 @@ logger.info(`Hello world!`); [1]: /tracing/trace_collection/automatic_instrumentation/dd_libraries/nodejs/ [2]: /tracing/other_telemetry/connect_logs_and_traces/nodejs/ -[3]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=nodejs#code-examples +[3]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=nodejs#code-examples-5 diff --git a/content/en/serverless/google_cloud_run/containers/sidecar/php.md b/content/en/serverless/google_cloud_run/containers/sidecar/php.md index 7cbb4c917a775..1bec4c9257ee4 100644 --- a/content/en/serverless/google_cloud_run/containers/sidecar/php.md +++ b/content/en/serverless/google_cloud_run/containers/sidecar/php.md @@ -97,4 +97,4 @@ logInfo('Hello World!'); [1]: /tracing/trace_collection/automatic_instrumentation/dd_libraries/php/ [2]: /tracing/other_telemetry/connect_logs_and_traces/php/ [3]: /developers/dogstatsd/?tab=php#install-the-dogstatsd-client -[4]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=php#code-examples +[4]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=php#code-examples-5 diff --git a/content/en/serverless/google_cloud_run/containers/sidecar/python.md b/content/en/serverless/google_cloud_run/containers/sidecar/python.md index 0bf650dd5cf04..ee03a7f14dd20 100644 --- a/content/en/serverless/google_cloud_run/containers/sidecar/python.md +++ b/content/en/serverless/google_cloud_run/containers/sidecar/python.md @@ -111,4 +111,4 @@ logger.info('Hello world!') [2]: /tracing/trace_collection/automatic_instrumentation/dd_libraries/python [3]: /tracing/other_telemetry/connect_logs_and_traces/python/ [4]: /developers/dogstatsd/?tab=python#install-the-dogstatsd-client -[5]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=python#code-examples +[5]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=python#code-examples-5 diff --git a/content/en/serverless/google_cloud_run/containers/sidecar/ruby.md b/content/en/serverless/google_cloud_run/containers/sidecar/ruby.md index 95a1736da8ac7..81b107a78fa89 100644 --- a/content/en/serverless/google_cloud_run/containers/sidecar/ruby.md +++ b/content/en/serverless/google_cloud_run/containers/sidecar/ruby.md @@ -88,4 +88,4 @@ logger.info "Hello World!" [1]: /tracing/trace_collection/automatic_instrumentation/dd_libraries/ruby/#instrument-your-application [2]: /tracing/other_telemetry/connect_logs_and_traces/ruby/ [3]: /developers/dogstatsd/?tab=ruby#install-the-dogstatsd-client -[4]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=ruby#code-examples +[4]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=ruby#code-examples-5 diff --git a/content/en/serverless/google_cloud_run/functions/dotnet.md b/content/en/serverless/google_cloud_run/functions/dotnet.md index a0f4fd2d76844..987bf017c4618 100644 --- a/content/en/serverless/google_cloud_run/functions/dotnet.md +++ b/content/en/serverless/google_cloud_run/functions/dotnet.md @@ -94,4 +94,4 @@ logger.LogInformation("Hello World!"); [2]: /tracing/trace_collection/automatic_instrumentation/dd_libraries/dotnet-core/?tab=linux [3]: /tracing/other_telemetry/connect_logs_and_traces/dotnet/ [4]: /developers/dogstatsd/?tab=dotnet#install-the-dogstatsd-client -[5]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=dotnet#code-examples +[5]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=dotnet#code-examples-5 diff --git a/content/en/serverless/google_cloud_run/functions/go.md b/content/en/serverless/google_cloud_run/functions/go.md index 3e3d4bfddcf61..95136dbe06e97 100644 --- a/content/en/serverless/google_cloud_run/functions/go.md +++ b/content/en/serverless/google_cloud_run/functions/go.md @@ -102,4 +102,4 @@ logrus.WithContext(ctx).Info("Hello World!") [2]: https://github.com/DataDog/dd-trace-go?tab=readme-ov-file#installing [3]: /tracing/other_telemetry/connect_logs_and_traces/go/ [4]: /developers/dogstatsd/?tab=go#install-the-dogstatsd-client -[5]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=go#code-examples +[5]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=go#code-examples-5 diff --git a/content/en/serverless/google_cloud_run/functions/java.md b/content/en/serverless/google_cloud_run/functions/java.md index 1b824c69f7a30..63e59391f6118 100644 --- a/content/en/serverless/google_cloud_run/functions/java.md +++ b/content/en/serverless/google_cloud_run/functions/java.md @@ -116,4 +116,4 @@ logger.info("Hello World!"); [2]: /tracing/trace_collection/automatic_instrumentation/dd_libraries/java/ [3]: /tracing/other_telemetry/connect_logs_and_traces/java/ [4]: /developers/dogstatsd/?tab=java#install-the-dogstatsd-client -[5]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=java#code-examples +[5]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=java#code-examples-5 diff --git a/content/en/serverless/google_cloud_run/functions/nodejs.md b/content/en/serverless/google_cloud_run/functions/nodejs.md index 2e53c8f06e62a..cc50633cd6960 100644 --- a/content/en/serverless/google_cloud_run/functions/nodejs.md +++ b/content/en/serverless/google_cloud_run/functions/nodejs.md @@ -74,7 +74,7 @@ const logger = createLogger({ ], }); -logger.info(`Hello world!`); +logger.info('Hello world!'); {{< /code-block >}} Datadog recommends setting the environment variables `DD_LOGS_INJECTION=true` (in your main container) and `DD_SOURCE=nodejs` (in your sidecar container) to enable advanced Datadog log parsing. @@ -99,5 +99,5 @@ logger.info(`Hello world!`); [1]: /tracing/trace_collection/automatic_instrumentation/dd_libraries/nodejs/ [2]: /tracing/other_telemetry/connect_logs_and_traces/nodejs/ -[3]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=nodejs#code-examples +[3]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=nodejs#code-examples-5 diff --git a/content/en/serverless/google_cloud_run/functions/python.md b/content/en/serverless/google_cloud_run/functions/python.md index ba895fcffaf9c..2631c32011f7f 100644 --- a/content/en/serverless/google_cloud_run/functions/python.md +++ b/content/en/serverless/google_cloud_run/functions/python.md @@ -97,4 +97,4 @@ logger.info('Hello world!') [2]: /tracing/trace_collection/automatic_instrumentation/dd_libraries/python [3]: /tracing/other_telemetry/connect_logs_and_traces/python/ [4]: /developers/dogstatsd/?tab=python#install-the-dogstatsd-client -[5]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=python#code-examples +[5]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=python#code-examples-5 diff --git a/content/en/serverless/google_cloud_run/functions/ruby.md b/content/en/serverless/google_cloud_run/functions/ruby.md index e2eb5910997fc..9f5751a64615e 100644 --- a/content/en/serverless/google_cloud_run/functions/ruby.md +++ b/content/en/serverless/google_cloud_run/functions/ruby.md @@ -84,4 +84,4 @@ logger.info "Hello World!" [1]: /tracing/trace_collection/automatic_instrumentation/dd_libraries/ruby/#instrument-your-application [2]: /tracing/other_telemetry/connect_logs_and_traces/ruby/ [3]: /developers/dogstatsd/?tab=ruby#install-the-dogstatsd-client -[4]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=ruby#code-examples +[4]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=ruby#code-examples-5 diff --git a/content/en/serverless/google_cloud_run/jobs/_index.md b/content/en/serverless/google_cloud_run/jobs/_index.md new file mode 100644 index 0000000000000..ac22923487e03 --- /dev/null +++ b/content/en/serverless/google_cloud_run/jobs/_index.md @@ -0,0 +1,16 @@ +--- +title: Instrumenting Cloud Run Jobs +type: multi-code-lang + +--- +
+Cloud Run Jobs is currently in preview mode. +
+ +First, set up the [Datadog-Google Cloud Platform integration][1] to collect metrics and logs from Google Cloud services. Remember to add the `cloud asset viewer` role to your service account and enable the Cloud Asset Inventory API in Google Cloud. + +Then, select your runtime below for instructions on how to instrument your application: + +{{% container-languages path="google_cloud_run/jobs" jobs="true" %}} + +[1]: /integrations/google-cloud-platform/ diff --git a/content/en/serverless/google_cloud_run/jobs/dotnet.md b/content/en/serverless/google_cloud_run/jobs/dotnet.md new file mode 100644 index 0000000000000..e40da9f263ed2 --- /dev/null +++ b/content/en/serverless/google_cloud_run/jobs/dotnet.md @@ -0,0 +1,101 @@ +--- +title: Instrumenting a .NET Cloud Run Job +code_lang: dotnet +type: multi-code-lang +code_lang_weight: 50 +further_reading: + - link: '/tracing/trace_collection/automatic_instrumentation/dd_libraries/dotnet-core/?tab=linux' + tag: 'Documentation' + text: 'Tracing .NET Core Applications' + - link: '/tracing/other_telemetry/connect_logs_and_traces/dotnet/' + tag: 'Documentation' + text: 'Correlating .NET Logs and Traces' +--- + +## Setup + +
A sample application is available on GitHub.
+
+For full visibility and access to all Datadog features in Cloud Run Jobs, +ensure you’ve installed the Google Cloud integration +and are using serverless-init version 1.8.0 or later. +
+ +1. **Install the Datadog .NET tracer** in your Dockerfile. + + Because GitHub requests are rate limited, you must pass a GitHub token saved in the environment variable `GITHUB_TOKEN` as a [Docker build secret][1] `--secret id=github-token,env=GITHUB_TOKEN`. + + {{< tabs >}} + {{% tab "Linux/AMD64" %}} +{{< code-block lang="dockerfile" filename="Dockerfile" disable_copy="false" collapsible="true" >}} +RUN --mount=type=secret,id=github-token,env=GITHUB_TOKEN \ + chmod +x /app/dotnet.sh && /app/dotnet.sh +{{< /code-block >}} + {{% /tab %}} + + {{% tab "Alpine" %}} +{{< code-block lang="dockerfile" filename="Dockerfile" disable_copy="false" collapsible="true" >}} +# For alpine use datadog-dotnet-apm-2.57.0-musl.tar.gz +ARG TRACER_VERSION +ADD https://github.com/DataDog/dd-trace-dotnet/releases/download/v${TRACER_VERSION}/datadog-dotnet-apm-${TRACER_VERSION}.tar.gz /tmp/datadog-dotnet-apm.tar.gz + +RUN mkdir -p /dd_tracer/dotnet/ && tar -xzvf /tmp/datadog-dotnet-apm.tar.gz -C /dd_tracer/dotnet/ && rm /tmp/datadog-dotnet-apm.tar.gz +{{< /code-block >}} + {{% /tab %}} + {{< /tabs >}} + + **Note**: Cloud Run Jobs run to completion rather than serving requests, so auto instrumentation won't create a top-level "job" span. For end-to-end visibility, create your own root span. See the [.NET Custom Instrumentation][2] instructions. + + For more information, see [Tracing .NET applications][3]. + +2. **Install serverless-init**. + + {{% gcr-install-serverless-init cmd="\"dotnet\", \"dotnet.dll\"" %}} + +3. **Set up logs**. + + To enable logging, set the environment variable `DD_LOGS_ENABLED=true`. This allows `serverless-init` to read logs from stdout and stderr. + + Datadog also recommends setting the environment variables `DD_LOGS_INJECTION=true` and `DD_SOURCE=csharp` to enable advanced Datadog log parsing. + + If you want multiline logs to be preserved in a single log message, Datadog recommends writing your logs in JSON format. For example, you can use a third-party logging library such as `Serilog`: + + {{< code-block lang="csharp" disable_copy="false" >}} +using Serilog; + +builder.Host.UseSerilog((context, config) => +{ + config.WriteTo.Console(new Serilog.Formatting.Json.JsonFormatter(renderMessage: true)); +}); + +logger.LogInformation("Hello World!"); +{{< /code-block >}} + + For more information, see [Correlating .NET Logs and Traces][4]. + +4. **Configure your application**. + +{{% gcr-configure %}} + +5. {{% gcr-service-label %}} + +6. **Send custom metrics**. + + To send custom metrics, [install the DogStatsD client][5] and [view code examples][6]. In serverless, only the *distribution* metric type is supported. + +{{% gcr-env-vars-in-container language="csharp" %}} + +## Troubleshooting + +{{% gcr-troubleshooting %}} + +## Further reading + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: https://docs.docker.com/build/building/secrets/ +[2]: /tracing/trace_collection/custom_instrumentation/dotnet/dd-api#instrument-methods-through-attributes +[3]: /tracing/trace_collection/automatic_instrumentation/dd_libraries/dotnet-core/?tab=linux +[4]: /tracing/other_telemetry/connect_logs_and_traces/dotnet/ +[5]: /developers/dogstatsd/?tab=dotnet#install-the-dogstatsd-client +[6]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=dotnet#code-examples-5 diff --git a/content/en/serverless/google_cloud_run/jobs/go.md b/content/en/serverless/google_cloud_run/jobs/go.md new file mode 100644 index 0000000000000..03f4696ecf14c --- /dev/null +++ b/content/en/serverless/google_cloud_run/jobs/go.md @@ -0,0 +1,96 @@ +--- +title: Instrumenting a Go Cloud Run Job +code_lang: go +type: multi-code-lang +code_lang_weight: 30 +further_reading: + - link: '/tracing/trace_collection/automatic_instrumentation/dd_libraries/go/' + tag: 'Documentation' + text: 'Tracing Go Applications' + - link: '/tracing/other_telemetry/connect_logs_and_traces/go/' + tag: 'Documentation' + text: 'Correlating Go Logs and Traces' +--- + +## Setup + +
A sample application is available on GitHub.
+
+For full visibility and access to all Datadog features in Cloud Run Jobs, +ensure you’ve installed the Google Cloud integration +and are using serverless-init version 1.8.0 or later. +
+ +1. **Install the Datadog Go tracer**. + + 1. In your main application, add the tracing library from `dd-trace-go`. + + {{< code-block lang="shell" disable_copy="false" >}} +go get github.com/DataDog/dd-trace-go/v2/ddtrace/tracer +{{< /code-block >}} + + 2. Add the following to your application code to initialize the tracer: + {{< code-block lang="go" disable_copy="false" >}} +tracer.Start() +defer tracer.Stop() +{{< /code-block >}} + + You can also add additional packages: + {{< code-block lang="shell" disable_copy="false" >}} +# Enable Profiling +go get github.com/DataDog/dd-trace-go/v2/profiler + +# Patch /net/http +go get github.com/DataDog/dd-trace-go/contrib/net/http/v2 +{{< /code-block >}} + + **Note**: Cloud Run Jobs run to completion rather than serving requests, so auto instrumentation won't create a top-level "job" span. For end-to-end visibility, create your own root span. See the [Go Custom Instrumentation][1] instructions. + + For more information, see [Tracing Go Applications][2] and the [Tracer README][3]. + +2. **Install serverless-init**. + + {{% gcr-install-serverless-init cmd="./your-binary" %}} + +3. **Set up logs**. + + To enable logging, set the environment variable `DD_LOGS_ENABLED=true`. This allows `serverless-init` to read logs from stdout and stderr. + + Datadog also recommends setting the environment variable `DD_SOURCE=go` to enable advanced Datadog log parsing. + + If you want multiline logs to be preserved in a single log message, Datadog recommends writing your logs in JSON format. For example, you can use a third-party logging library such as `logrus`: + ```go + logrus.SetFormatter(&logrus.JSONFormatter{}) + logrus.AddHook(&dd_logrus.DDContextLogHook{}) + + logrus.WithContext(ctx).Info("Hello World!") + ``` + + For more information, see [Correlating Go Logs and Traces][4]. + +4. **Configure your application**. + +{{% gcr-configure%}} + +5. {{% gcr-service-label %}} + +6. **Send custom metrics**. + + To send custom metrics, [install the DogStatsD client][5] and [view code examples][6]. In serverless, only the *distribution* metric type is supported. + +{{% gcr-env-vars-in-container language="go" %}} + +## Troubleshooting + +{{% gcr-troubleshooting %}} + +## Further reading + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /tracing/trace_collection/custom_instrumentation/go/dd-api#manually-creating-a-span +[2]: /tracing/trace_collection/automatic_instrumentation/dd_libraries/go/ +[3]: https://github.com/DataDog/dd-trace-go?tab=readme-ov-file#installing +[4]: /tracing/other_telemetry/connect_logs_and_traces/go/ +[5]: /developers/dogstatsd/?tab=go#install-the-dogstatsd-client +[6]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=go#code-examples-5 diff --git a/content/en/serverless/google_cloud_run/jobs/java.md b/content/en/serverless/google_cloud_run/jobs/java.md new file mode 100644 index 0000000000000..966cd08facd0d --- /dev/null +++ b/content/en/serverless/google_cloud_run/jobs/java.md @@ -0,0 +1,111 @@ +--- +title: Instrumenting a Java Cloud Run Job +code_lang: java +type: multi-code-lang +code_lang_weight: 40 +further_reading: + - link: '/tracing/trace_collection/automatic_instrumentation/dd_libraries/java/' + tag: 'Documentation' + text: 'Tracing Java Applications' + - link: '/tracing/other_telemetry/connect_logs_and_traces/java/' + tag: 'Documentation' + text: 'Correlating Java Logs and Traces' +--- + +## Setup + +
A sample application is available on GitHub.
+
+For full visibility and access to all Datadog features in Cloud Run Jobs, +ensure you’ve installed the Google Cloud integration +and are using serverless-init version 1.8.0 or later. +
+ +1. **Install the Datadog Java tracer**. + + 1. Add the Datadog Java tracer to your Dockerfile: + + {{< code-block lang="dockerfile" filename="Dockerfile" disable_copy="false" collapsible="true" >}} +ADD 'https://dtdg.co/latest-java-tracer' agent.jar +ENV JAVA_TOOL_OPTIONS="-javaagent:agent.jar" +{{< /code-block >}} + + 2. Add the tracer artifacts. + {{< tabs >}} + {{% tab "Maven" %}} +{{< code-block lang="xml" disable_copy="false" >}} + + com.datadoghq + dd-trace-api + DD_TRACE_JAVA_VERSION_HERE + +{{< /code-block >}} + {{% /tab %}} + + {{% tab "Gradle" %}} +{{< code-block lang="groovy" disable_copy="false" >}} +implementation 'com.datadoghq:dd-trace-api:DD_TRACE_JAVA_VERSION_HERE' +{{< /code-block >}} + {{% /tab %}} + {{< /tabs >}} + + See [dd-trace-java releases][1] for the latest tracer version. + + **Note**: Cloud Run Jobs run to completion rather than serving requests, so auto instrumentation won't create a top-level "job" span. For end-to-end visibility, create your own root span. See the [Java Custom Instrumentation][2] instructions. + + For more information, see [Tracing Java Applications][3]. + +2. **Install serverless-init**. + + {{% gcr-install-serverless-init cmd="\"./mvnw\", \"spring-boot:run\"" %}} + +3. **Set up logs**. + + To enable logging, set the environment variable `DD_LOGS_ENABLED=true`. This allows `serverless-init` to read logs from stdout and stderr. + + Datadog also recommends setting the environment variable `DD_LOGS_INJECTION=true` and `DD_SOURCE=java` to enable advanced Datadog log parsing. + + If you want multiline logs to be preserved in a single log message, Datadog recommends writing your logs in *compact* JSON format. For example, you can use a third-party logging library such as `Log4j 2`: + + {{< code-block lang="java" disable_copy="false" >}} +private static final Logger logger = LogManager.getLogger(App.class); +logger.info("Hello World!"); +{{< /code-block >}} + + {{< code-block lang="xml" filename="resources/log4j2.xml" disable_copy="false" >}} + + + + + + +{{< /code-block >}} + + For more information, see [Correlating Java Logs and Traces][4]. + +4. **Configure your application**. + +{{% gcr-configure%}} + +5. {{% gcr-service-label %}} + +6. **Send custom metrics**. + + To send custom metrics, [install the DogStatsD client][5] and [view code examples][6]. In serverless, only the *distribution* metric type is supported. + +{{% gcr-env-vars-in-container language="java" %}} + +## Troubleshooting + +{{% gcr-troubleshooting %}} + +## Further reading + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: https://github.com/DataDog/dd-trace-java/releases +[2]: /tracing/trace_collection/custom_instrumentation/java/dd-api#adding-spans +[3]: /tracing/trace_collection/automatic_instrumentation/dd_libraries/java/ +[4]: /tracing/other_telemetry/connect_logs_and_traces/java/ +[5]: /developers/dogstatsd/?tab=java#install-the-dogstatsd-client +[6]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=java#code-examples-5 diff --git a/content/en/serverless/google_cloud_run/jobs/nodejs.md b/content/en/serverless/google_cloud_run/jobs/nodejs.md new file mode 100644 index 0000000000000..37d92a9881b2d --- /dev/null +++ b/content/en/serverless/google_cloud_run/jobs/nodejs.md @@ -0,0 +1,102 @@ +--- +title: Instrumenting a Node.js Cloud Run Job +code_lang: nodejs +type: multi-code-lang +code_lang_weight: 20 +further_reading: +- link: '/tracing/trace_collection/automatic_instrumentation/dd_libraries/nodejs/' + tag: 'Documentation' + text: 'Tracing Node.js Applications' +- link: '/tracing/other_telemetry/connect_logs_and_traces/nodejs/' + tag: 'Documentation' + text: 'Correlating Node.js Logs and Traces' +--- + +## Setup + +
A sample application is available on GitHub.
+
+For full visibility and access to all Datadog features in Cloud Run Jobs, +ensure you’ve installed the Google Cloud integration +and are using serverless-init version 1.8.0 or later. +
+ +1. **Install the Datadog Node.js tracer**. + + 1. In your main application, add `dd-trace-js`. + + {{< code-block lang="shell" disable_copy="false" >}} +npm install dd-trace --save +{{< /code-block >}} + + 2. Add the following to your application code to initialize the tracer: + {{< code-block lang="javascript" disable_copy="false" >}} +const tracer = require('dd-trace').init({ + logInjection: true, +}); +{{< /code-block >}} + + 3. Set the following environment variable to specify that the `dd-trace/init` module is required when the Node.js process starts: + {{< code-block lang="dockerfile" disable_copy="false" >}} +ENV NODE_OPTIONS="--require dd-trace/init" +{{< /code-block >}} + + **Note**: Cloud Run Jobs run to completion rather than serving requests, so auto instrumentation won't create a top-level "job" span. For end-to-end visibility, create your own root span. See the [Node.js Custom Instrumentation][1] instructions. + + For more information, see [Tracing Node.js applications][2]. + +2. **Install serverless-init**. + + {{% gcr-install-serverless-init cmd="\"/nodejs/bin/node\", \"/path/to/your/app.js\"" %}} + +3. **Set up logs**. + + To enable logging, set the environment variable `DD_LOGS_ENABLED=true`. This allows `serverless-init` to read logs from stdout and stderr. + + Datadog also recommends setting the environment variable `DD_LOGS_INJECTION=true` and `DD_SOURCE=nodejs` to enable advanced Datadog log parsing. + + If you want multiline logs to be preserved in a single log message, Datadog recommends writing your logs in JSON format. For example, you can use a third-party logging library such as `winston`: + {{< code-block lang="javascript" disable_copy="false" >}} +const tracer = require('dd-trace').init({ + logInjection: true, +}); +const { createLogger, format, transports } = require('winston'); + +const logger = createLogger({ + level: 'info', + exitOnError: false, + format: format.json(), + transports: [ + new transports.Console() + ], +}); + +logger.info('Hello world!'); +{{< /code-block >}} + + For more information, see [Correlating Node.js Logs and Traces][3]. + +4. **Configure your application**. + +{{% gcr-configure %}} + +5. {{% gcr-service-label %}} + +6. **Send custom metrics**. + + To send custom metrics, [view code examples][4]. In serverless, only the *distribution* metric type is supported. + +{{% gcr-env-vars-in-container language="nodejs" %}} + +## Troubleshooting + +{{% gcr-troubleshooting %}} + +## Further reading + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /tracing/trace_collection/custom_instrumentation/nodejs/dd-api?tab=locally#creating-spans +[2]: /tracing/trace_collection/automatic_instrumentation/dd_libraries/nodejs/ +[3]: /tracing/other_telemetry/connect_logs_and_traces/nodejs/ +[4]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=nodejs#code-examples-5 diff --git a/content/en/serverless/google_cloud_run/jobs/python.md b/content/en/serverless/google_cloud_run/jobs/python.md new file mode 100644 index 0000000000000..d5f8612378424 --- /dev/null +++ b/content/en/serverless/google_cloud_run/jobs/python.md @@ -0,0 +1,108 @@ +--- +title: Instrumenting a Python Cloud Run Job +code_lang: python +type: multi-code-lang +code_lang_weight: 10 +further_reading: + - link: '/tracing/trace_collection/automatic_instrumentation/dd_libraries/python/' + tag: 'Documentation' + text: 'Tracing Python Applications' + - link: '/tracing/other_telemetry/connect_logs_and_traces/python/' + tag: 'Documentation' + text: 'Correlating Python Logs and Traces' +--- + +## Setup + +
A sample application is available on GitHub.
+
+For full visibility and access to all Datadog features in Cloud Run Jobs, +ensure you’ve installed the Google Cloud integration +and are using serverless-init version 1.8.0 or later. +
+ +1. **Install the Datadog Python tracer**. + + Add `ddtrace` to your `requirements.txt` or `pyproject.toml`. You can find the latest version on [PyPI][1]: + {{< code-block lang="text" filename="requirements.txt" disable_copy="false" collapsible="true" >}} +ddtrace== +{{< /code-block >}} + + Alternatively, you can install the tracer in your Dockerfile: + {{< code-block lang="dockerfile" filename="Dockerfile" disable_copy="false" collapsible="true" >}} +RUN pip install ddtrace +{{< /code-block >}} + + Then, wrap your start command with `ddtrace-run`: + {{< code-block lang="dockerfile" filename="Dockerfile" disable_copy="false" collapsible="true" >}} +CMD ["ddtrace-run", "python", "app.py"] +{{< /code-block >}} + + **Note**: Cloud Run Jobs run to completion rather than serving requests, so auto instrumentation won't create a top-level "job" span. For end-to-end visibility, create your own root span. See the [Python Custom Instrumentation][2] instructions. + + For more information, see [Tracing Python applications][3]. + +2. **Install serverless-init**. + + {{% gcr-install-serverless-init cmd="\"ddtrace-run\", \"python\", \"path/to/your/python/app.py\"" %}} + +3. **Set up logs**. + + To enable logging, set the environment variable `DD_LOGS_ENABLED=true`. This allows `serverless-init` to read logs from stdout and stderr. + + Datadog also recommends the following environment variables: + - `ENV PYTHONUNBUFFERED=1`: Ensure Python outputs appear immediately in container logs instead of being buffered. + - `ENV DD_LOGS_INJECTION=true`: Enable log/trace correlation for supported loggers. + - `ENV DD_SOURCE=python`: Enable advanced Datadog log parsing. + + If you want multiline logs to be preserved in a single log message, Datadog recommends writing your logs in JSON format. For example, you can use a third-party logging library such as `structlog`: + {{< code-block lang="python" disable_copy="false" >}} +import structlog + +def tracer_injection(logger, log_method, event_dict): + event_dict.update(tracer.get_log_correlation_context()) + return event_dict + +structlog.configure( + processors=[ + tracer_injection, + structlog.processors.EventRenamer("msg"), + structlog.processors.JSONRenderer() + ], + logger_factory=structlog.WriteLoggerFactory(file=sys.stdout), +) + +logger = structlog.get_logger() + +logger.info("Hello world!") +{{< /code-block >}} + + For more information, see [Correlating Python Logs and Traces][4]. + +4. **Configure your application**. + +{{% gcr-configure %}} + +5. {{% gcr-service-label %}} + +6. **Send custom metrics**. + + To send custom metrics, [install the DogStatsD client][5] and [view code examples][6]. In serverless, only the *distribution* metric type is supported. + +{{% gcr-env-vars-in-container language="python" %}} + +## Troubleshooting + +{{% gcr-troubleshooting %}} + +## Further reading + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: https://pypi.org/project/ddtrace/ +[2]: /tracing/trace_collection/custom_instrumentation/python/dd-api?tab=decorator +[3]: /tracing/trace_collection/automatic_instrumentation/dd_libraries/python +[4]: /tracing/other_telemetry/connect_logs_and_traces/python/ +[5]: /developers/dogstatsd/?tab=python#install-the-dogstatsd-client +[6]: /metrics/custom_metrics/dogstatsd_metrics_submission/?tab=python#code-examples-5 + diff --git a/layouts/shortcodes/container-languages.html b/layouts/shortcodes/container-languages.html index 8e4e1eee45d8b..6c266db1144ee 100644 --- a/layouts/shortcodes/container-languages.html +++ b/layouts/shortcodes/container-languages.html @@ -1,8 +1,9 @@ {{ $path := .Get "path" }} {{ $functions := .Get "functions" }} +{{ $jobs := .Get "jobs" }}