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
+
+
+
+
+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
+
+
+
+
+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
+
+
+
+
+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
+
+
+
+
+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
+
+
+
+
+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" }}
-
+
{{ if ne $jobs "true" }}
{{ if ne $functions "true" }}
+
{{ end }}{{ if and (ne $functions "true") (ne $jobs "true") }}