Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ To instrument your Google Cloud Run containers with Datadog, choose one of two o

| Aspect | In-Container | Sidecar |
|-------------------------------|----------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Deployment | One container (your app, wrapped with the Datadog Agent) | Two containers ( your app, Datadog Agent) |
| Deployment | One container (your app, wrapped with the Datadog Agent) | Two containers (your app, Datadog Agent) |
| Image changes | Increases app image size. | No change to app image. |
| Cost overhead | Less than sidecar (no extra container). | Extra vCPU/memory. Overallocating the sidecar wastes cost; underallocating leads to premature scaling. |
| Logging | Direct stdout/stderr access. | Shared volume + log library routing to a log file. Uncaught errors require extra handling, since they are not automatically handled by your logging library. |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,14 @@ further_reading:
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" %}}
{{% tab "Standard Linux (glibc)" %}}
{{< 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" %}}
{{% tab "Alpine (musl)" %}}
{{< 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
Expand Down Expand Up @@ -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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why use the distribution metric example instead of count?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Only distribution metrics are supported in Serverless

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The reason has to do with the lack of hostname, resulting in the backend thinking that unique metrics are actually duplicate retries of the same metric, resulting in lost & inaccurate metrics

Original file line number Diff line number Diff line change
Expand Up @@ -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

Original file line number Diff line number Diff line change
Expand Up @@ -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

Original file line number Diff line number Diff line change
Expand Up @@ -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].
Expand All @@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -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

Original file line number Diff line number Diff line change
Expand Up @@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,15 @@ further_reading:
1. **Install the Datadog .NET tracer** in your Dockerfile.

{{< tabs >}}
{{% tab "Linux/AMD64" %}}
{{% tab "Standard Linux (glibc)" %}}
{{< code-block lang="dockerfile" filename="Dockerfile" disable_copy="false" collapsible="true" >}}
ARG TRACER_VERSION
RUN curl -L -s "https://github.com/DataDog/dd-trace-dotnet/releases/download/v${TRACER_VERSION}/datadog-dotnet-apm_${TRACER_VERSION}_amd64.deb" --output datadog-dotnet-apm.deb && \
dpkg -i datadog-dotnet-apm.deb
{{< /code-block >}}
{{% /tab %}}

{{% tab "Alpine" %}}
{{% tab "Alpine (musl)" %}}
{{< 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
Expand Down Expand Up @@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -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
2 changes: 1 addition & 1 deletion content/en/serverless/google_cloud_run/functions/go.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
2 changes: 1 addition & 1 deletion content/en/serverless/google_cloud_run/functions/java.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
4 changes: 2 additions & 2 deletions content/en/serverless/google_cloud_run/functions/nodejs.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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

Original file line number Diff line number Diff line change
Expand Up @@ -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
2 changes: 1 addition & 1 deletion content/en/serverless/google_cloud_run/functions/ruby.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
18 changes: 18 additions & 0 deletions content/en/serverless/google_cloud_run/jobs/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
title: Instrumenting Cloud Run Jobs
type: multi-code-lang

---

{{< callout url="https://forms.gle/DNbZDFb3mDTt2vxb7"
btn_hidden="false" header="Join the Preview!">}}
Serverless Monitoring for Google Cloud Run Jobs is in Preview. Use this form to submit your request today.
{{< /callout >}}

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/
101 changes: 101 additions & 0 deletions content/en/serverless/google_cloud_run/jobs/dotnet.md
Original file line number Diff line number Diff line change
@@ -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

<div class="alert alert-info">A sample application is <a href="https://github.com/DataDog/serverless-gcp-sample-apps/tree/main/cloud-run/in-container/dotnet">available on GitHub</a>.</div>
<div class="alert alert-info">
For full visibility and access to all Datadog features in Cloud Run Jobs,
ensure you’ve <a href="http://localhost:1313/integrations/google_cloud_platform/">installed the Google Cloud integration</a>
and are using <a href="https://hub.docker.com/r/datadog/serverless-init#180">serverless-init version 1.8.0 or later</a>.
</div>

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 "Standard Linux (glibc)" %}}
{{< 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 (musl)" %}}
{{< 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
Loading
Loading