From 089e3f148dc816ab587d5c73ec00b465ec5f1c10 Mon Sep 17 00:00:00 2001 From: cecilia saixue watt Date: Wed, 12 Feb 2025 14:57:42 -0800 Subject: [PATCH 1/3] initial commit --- .../azure_app_services_container.md | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) diff --git a/content/en/serverless/azure_app_services/azure_app_services_container.md b/content/en/serverless/azure_app_services/azure_app_services_container.md index a970b7268daef..caf1d84174716 100644 --- a/content/en/serverless/azure_app_services/azure_app_services_container.md +++ b/content/en/serverless/azure_app_services/azure_app_services_container.md @@ -76,6 +76,74 @@ To set up logging in your application, see [Node.js Log Collection][3]. To set u [2]: /metrics/custom_metrics/dogstatsd_metrics_submission/?code-lang=java#code-examples [3]: /logs/log_collection/java/?tab=winston30 [4]: /tracing/other_telemetry/connect_logs_and_traces/java +{{% /tab %}} +{{% tab ".NET" %}} +#### Tracing +Instrument your main application with the `dd-trace-dotnet` library. + +1. Add the following lines to the Dockerfile for your main application. This installs and configures the Datadog tracer within your application container. + {{< code-block lang="dockerfile" >}} + RUN mkdir -p /datadog/tracer + RUN mkdir -p /home/LogFiles/dotnet + + ADD https://github.com/DataDog/dd-trace-dotnet/releases/download/v2.51.0/datadog-dotnet-apm-2.49.0.tar.gz /datadog/tracer + RUN cd /datadog/tracer && tar -zxf datadog-dotnet-apm-2.49.0.tar.gz + {{< /code-block >}} + +2. Build the image and push it to your preferred container registry. + +**Full example Dockerfile** + +{{< highlight dockerfile "hl_lines=22-27" >}} +# Stage 1: Build the application +FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build +WORKDIR /app + +# Copy the project file and restore dependencies +COPY *.csproj ./ +RUN dotnet restore + +# Copy the remaining source code +COPY . . + +# Build the application +RUN dotnet publish -c Release -o out + +# Stage 2: Create a runtime image +FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime +WORKDIR /app + +# Copy the build output from stage 1 +COPY --from=build /app/out ./ + +# Datadog specific +RUN mkdir -p /datadog/tracer +RUN mkdir -p /home/LogFiles/dotnet + +ADD https://github.com/DataDog/dd-trace-dotnet/releases/download/v2.49.0/datadog-dotnet-apm-2.49.0.tar.gz /datadog/tracer +RUN cd /datadog/tracer && tar -zxf datadog-dotnet-apm-2.49.0.tar.gz + +# Set the entry point for the application +ENTRYPOINT ["dotnet", ".dll"] +{{< /highlight >}} + +For more information, see [Tracing .NET Applications][1]. + +#### Metrics +Custom metrics are also collected through the tracer. See the [code examples][2]. + +#### Logs +The Datadog sidecar uses file tailing to collect logs. Datadog recommends writing application logs to `/home/LogFiles/` because this directory is persisted across restarts. + +You can also create a subdirectory, such as `/home/LogFiles/myapp`, if you want more control over what is sent to Datadog. However, if you do not tail all log files in `/home/LogFiles`, then Azure App Service application logs related to startups and errors are not collected. + +To set up logging in your application, see [C# Log Collection][3]. To set up trace log correlation, see [Correlating .NET Logs and Traces][4]. + +[1]: /tracing/trace_collection/automatic_instrumentation/dd_libraries/dotnet-core +[2]: /metrics/custom_metrics/dogstatsd_metrics_submission/?code-lang=dotnet#code-examples +[3]: /logs/log_collection/csharp +[4]: /tracing/other_telemetry/connect_logs_and_traces/dotnet + {{% /tab %}} {{% tab "Go" %}} #### Tracing @@ -137,6 +205,22 @@ In your **App settings** in Azure, set the following environment variables: - `DD_ENV`: How you want to tag your env. For example, `prod` - `DD_SERVERLESS_LOG_PATH`: Where you write your logs. For example, `/home/LogFiles/*.log` or `/home/LogFiles/myapp/*.log` +
+ +

For .NET applications: Additional required environment variables

+
+ +If you are setting up monitoring for a .NET application, configure the following **required** environment variables. + +| Variable name | Value | +| ------------- | ----- | +| `DD_DOTNET_TRACER_HOME` | `/datadog/tracer` | +| `DD_TRACE_LOG_DIRECTORY` | `/home/Logfiles/dotnet` | +| `CORECLR_ENABLE_PROFILING` | `1` | +| `CORECLR_PROFILER` | `{846F5F1C-F9AE-4B07-969E-05C26BC060D8}` | +| `CORECLR_PROFILER_PATH` | `/datadog/tracer/Datadog.Trace.ClrProfiler.Native.so` | +
+ ## Example application The following example contains a single app with tracing, metrics, and logs set up. From 445a1ac92df733c7af0377c559f485a3530a8e13 Mon Sep 17 00:00:00 2001 From: cecilia saixue watt Date: Thu, 13 Feb 2025 11:54:40 -0800 Subject: [PATCH 2/3] Update azure_app_services_container.md --- .../azure_app_services/azure_app_services_container.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/serverless/azure_app_services/azure_app_services_container.md b/content/en/serverless/azure_app_services/azure_app_services_container.md index caf1d84174716..b6a0e99dad4d1 100644 --- a/content/en/serverless/azure_app_services/azure_app_services_container.md +++ b/content/en/serverless/azure_app_services/azure_app_services_container.md @@ -86,7 +86,7 @@ Instrument your main application with the `dd-trace-dotnet` library. RUN mkdir -p /datadog/tracer RUN mkdir -p /home/LogFiles/dotnet - ADD https://github.com/DataDog/dd-trace-dotnet/releases/download/v2.51.0/datadog-dotnet-apm-2.49.0.tar.gz /datadog/tracer + ADD https://github.com/DataDog/dd-trace-dotnet/releases/download/v2.51.0/datadog-dotnet-apm-2.51.0.tar.gz /datadog/tracer RUN cd /datadog/tracer && tar -zxf datadog-dotnet-apm-2.49.0.tar.gz {{< /code-block >}} From 4bed07c4c7f27b29c80eb408cf58e7c08d563069 Mon Sep 17 00:00:00 2001 From: cecilia saixue watt Date: Thu, 13 Feb 2025 11:56:03 -0800 Subject: [PATCH 3/3] Update azure_app_services_container.md --- .../azure_app_services/azure_app_services_container.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/en/serverless/azure_app_services/azure_app_services_container.md b/content/en/serverless/azure_app_services/azure_app_services_container.md index b6a0e99dad4d1..60f546768e1ba 100644 --- a/content/en/serverless/azure_app_services/azure_app_services_container.md +++ b/content/en/serverless/azure_app_services/azure_app_services_container.md @@ -87,7 +87,7 @@ Instrument your main application with the `dd-trace-dotnet` library. RUN mkdir -p /home/LogFiles/dotnet ADD https://github.com/DataDog/dd-trace-dotnet/releases/download/v2.51.0/datadog-dotnet-apm-2.51.0.tar.gz /datadog/tracer - RUN cd /datadog/tracer && tar -zxf datadog-dotnet-apm-2.49.0.tar.gz + RUN cd /datadog/tracer && tar -zxf datadog-dotnet-apm-2.51.0.tar.gz {{< /code-block >}} 2. Build the image and push it to your preferred container registry. @@ -120,8 +120,8 @@ COPY --from=build /app/out ./ RUN mkdir -p /datadog/tracer RUN mkdir -p /home/LogFiles/dotnet -ADD https://github.com/DataDog/dd-trace-dotnet/releases/download/v2.49.0/datadog-dotnet-apm-2.49.0.tar.gz /datadog/tracer -RUN cd /datadog/tracer && tar -zxf datadog-dotnet-apm-2.49.0.tar.gz +ADD https://github.com/DataDog/dd-trace-dotnet/releases/download/v2.51.0/datadog-dotnet-apm-2.51.0.tar.gz /datadog/tracer +RUN cd /datadog/tracer && tar -zxf datadog-dotnet-apm-2.51.0.tar.gz # Set the entry point for the application ENTRYPOINT ["dotnet", ".dll"]