Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

APM SDKs #24255

Open
wants to merge 34 commits into
base: master
Choose a base branch
from
Open

APM SDKs #24255

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
8fe9739
Draft Datadog SDK naming guide.
brett0000FF Jul 22, 2024
ed6e523
Quick edit.
brett0000FF Jul 22, 2024
d584b45
Add SDK vs. API section.
brett0000FF Jul 23, 2024
208fe9f
Remove Datadog from API vs. SDK section.
brett0000FF Jul 23, 2024
4bf017c
Update terminology for instrumentation landing pages.
brett0000FF Jul 23, 2024
b6744e8
Update Single Step Instrumentation.
brett0000FF Jul 23, 2024
ade7b2b
Update .NET Core.
brett0000FF Jul 23, 2024
fbe7352
Update C++.
brett0000FF Jul 23, 2024
ff5f1b1
Update .NET Framework.
brett0000FF Jul 23, 2024
e5429c0
Update Go.
brett0000FF Jul 23, 2024
de1ec40
Update Java.
brett0000FF Jul 23, 2024
cb83a4f
Update Node.js.
brett0000FF Jul 23, 2024
f7d45b6
Update PHP.
brett0000FF Jul 23, 2024
a112f38
Update Python.
brett0000FF Jul 23, 2024
ece6c74
Use APM SDK for .NET compatibility.
brett0000FF Jul 23, 2024
59c6800
Use APM SDK for Go compatibility.
brett0000FF Jul 23, 2024
dc3e25d
Use APM SDK for Node.js compatibility.
brett0000FF Jul 23, 2024
3bfb966
Use APM SDK for Java compatibility.
brett0000FF Jul 23, 2024
b25a545
Use APM SDK for PHP compatibility.
brett0000FF Jul 23, 2024
4f0a801
Use APM SDK for trace collection docs.
brett0000FF Jul 23, 2024
ffd3afb
Use APM SDK instead of tracing library (guides and troubleshooting).
brett0000FF Jul 23, 2024
00dc0c4
Use APM SDK instead of tracer (guides and troubleshooting).
brett0000FF Jul 24, 2024
fb0448f
Use APM SDK instead of tracing library.
brett0000FF Jul 24, 2024
7281f58
Make title consistent with rest of content.
brett0000FF Jul 24, 2024
8e31b86
Apply suggestions from code review
brett0000FF Jul 24, 2024
726aace
Merge branch 'master' into brett0000FF/dd-sdks
brett0000FF Jul 31, 2024
e1909c9
Apply suggestions from code review
brett0000FF Jul 31, 2024
b2b7f0e
Apply suggestions from code review
brett0000FF Jul 31, 2024
f1ecca3
Restructure guide based on review.
brett0000FF Jul 31, 2024
9ec57d3
Fix missed terms in menu file.
brett0000FF Aug 1, 2024
563dbcb
Apply suggestions from code review
brett0000FF Aug 7, 2024
8bb7d9a
Remove OTel based integration sections.
brett0000FF Aug 7, 2024
9b32374
Merge branch 'master' of github.com:DataDog/documentation into brett0…
brett0000FF Aug 7, 2024
7fb64c8
Menu fixes.
brett0000FF Aug 7, 2024
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
8 changes: 4 additions & 4 deletions config/_default/menus/main.en.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2947,7 +2947,7 @@ menu:
parent: automatic_instrumentation
identifier: single_step_apm
weight: 2011
- name: Using Datadog Tracing Libraries
- name: Using Datadog APM SDKs
url: tracing/trace_collection/automatic_instrumentation/dd_libraries/
parent: automatic_instrumentation
identifier: auto_dd_libraries
Expand Down Expand Up @@ -3022,12 +3022,12 @@ menu:
parent: custom_instrumentation
identifier: custom_instrumentation_elixir
weight: 2033
- name: Library Compatibility
- name: APM SDK Compatibility
url: tracing/trace_collection/compatibility/
parent: tracing_trace_collection
identifier: tracing_compatibility
weight: 203
- name: Library Configuration
- name: APM SDK Configuration
url: tracing/trace_collection/library_config/
parent: tracing_trace_collection
identifier: tracing_library_config
Expand Down Expand Up @@ -5225,7 +5225,7 @@ menu:
parent: appsec_threats_management_setup
identifier: appsec_threats_setup_using_single_step
weight: 702
- name: Using Datadog Tracing Libraries
- name: Using APM SDKs
url: security/application_security/threats/setup/threat_detection/
parent: appsec_threats_management_setup
identifier: appsec_threats_setup_threat_detection_setup
Expand Down
2 changes: 1 addition & 1 deletion content/en/tracing/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ For an introduction to terminology used in Datadog APM, see [APM Terms and Conce

The simplest way to start with Datadog APM is with Single Step Instrumentation. This approach installs the Datadog Agent and instruments your application in one step, with no additional configuration steps required. To learn more, read [Single Step Instrumentation][27].

For setups that require more customization, Datadog supports custom instrumentation with Datadog tracing libraries. To learn more, read [Application Instrumentation][2].
For setups that require more customization, Datadog supports custom instrumentation with Datadog APM SDKs. To learn more, read [Application Instrumentation][2].

<div class="alert alert-info">If you're new to Datadog APM, read <a href="https://docs.datadoghq.com/getting_started/tracing/">Getting Started with APM</a> to learn how to send your first trace to Datadog.</div>

Expand Down
22 changes: 11 additions & 11 deletions content/en/tracing/configure_data_security/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,15 @@ further_reading:
---
## Overview

Datadog tracing libraries collect data from an instrumented application. That data is sent to Datadog as traces and it may contain sensitive data such as personally identifiable information (PII). If you are ingesting sensitive data as traces into Datadog, remediations can be added at ingestion with [Sensitive Data Scanner][12]. You can also configure the Datadog Agent or the tracing library to remediate sensitive data at collection before traces are sent to Datadog.
Datadog APM SDKs collect data from an instrumented application. That data is sent to Datadog as traces and it may contain sensitive data such as personally identifiable information (PII). If you are ingesting sensitive data as traces into Datadog, remediations can be added at ingestion with [Sensitive Data Scanner][12]. You can also configure the Datadog Agent or the APM SDK to remediate sensitive data at collection before traces are sent to Datadog.

If the configurations described here do not cover your compliance requirements, reach out to [the Datadog support team][1].

### Personal information in trace data

Datadog's APM tracing libraries collect relevant observability data about your applications. Because these libraries collect hundreds of unique attributes in trace data, this page describes categories of data, with a focus on attributes that may contain personal information about your employees and end-users.
Datadog's APM SDKs collect relevant observability data about your applications. Because these libraries collect hundreds of unique attributes in trace data, this page describes categories of data, with a focus on attributes that may contain personal information about your employees and end-users.

The table below describes the personal data categories collected by the automatic instrumentation provided by the tracing libraries, with some common examples listed.
The table below describes the personal data categories collected by the automatic instrumentation provided by the APM SDKs, with some common examples listed.

| Category | Description |
|:--------------------|:-----------------------------------------------------------------------------------------------------------------------|
Expand All @@ -36,7 +36,7 @@ The table below describes the personal data categories collected by the automati
| URI parameters | The parameter values in the variable part of the URI path or the URI query. |
| URI userinfo | The userinfo subcomponent of the URI that may contain the user name. |

The table below describes the default behavior of each language tracing library with regard to whether a data category is collected and whether it is obfuscated by default.
The table below describes the default behavior of each language APM SDK with regard to whether a data category is collected and whether it is obfuscated by default.

{{% tabs %}}

Expand Down Expand Up @@ -215,7 +215,7 @@ The table below describes the default behavior of each language tracing library

{{% /tabs %}}

If you use Datadog Application Security Management (ASM), the tracing libraries collect HTTP request data to help you understand the nature of a security trace. Datadog ASM automatically redacts certain data, and you can configure your own detection rules. Learn more about these defaults and configuration options in the Datadog ASM [data privacy][13] documentation.
If you use Datadog Application Security Management (ASM), the APM SDKs collect HTTP request data to help you understand the nature of a security trace. Datadog ASM automatically redacts certain data, and you can configure your own detection rules. Learn more about these defaults and configuration options in the Datadog ASM [data privacy][13] documentation.

## Agent

Expand Down Expand Up @@ -570,8 +570,8 @@ If you are running in a containerized environment, set `DD_APM_IGNORE_RESOURCES`

### HTTP

Datadog is standardizing [span tag semantics][3] across tracing libraries. Information from HTTP requests are added as span tags prefixed with `http.`. The libraries have the following configuration options to control sensitive data collected in HTTP spans.
Datadog is standardizing [span tag semantics][3] across APM SDKs. Information from HTTP requests are added as span tags prefixed with `http.`. The libraries have the following configuration options to control sensitive data collected in HTTP spans.

#### Redact query strings

The `http.url` tag is assigned the full URL value, including the query string. The query string could contain sensitive data, so by default Datadog parses it and redacts suspicious-looking values. This redaction process is configurable. To modify the regular expression used for redaction, set the `DD_TRACE_OBFUSCATION_QUERY_STRING_REGEXP` environment variable to a valid regex of your choice. Valid regex is platform-specific. When the regex finds a suspicious key-value pair, it replaces it with `<redacted>`.
Expand All @@ -586,17 +586,17 @@ To collect trace header tags, set the `DD_TRACE_HEADER_TAGS` environment variabl
DD_TRACE_HEADER_TAGS=CASE-insensitive-Header:my-tag-name,User-ID:userId,My-Header-And-Tag-Name
```

### Processing
### Processing

Some tracing libraries provide an interface for processing spans to manually modify or remove sensitive data collected in traces:
Some APM SDKs provide an interface for processing spans to manually modify or remove sensitive data collected in traces:

* Java: [TraceInterceptor interface][9]
* Ruby: [Processing Pipeline][10]
* Python: [Trace Filtering][11]

## Telemetry collection

Datadog may gather environmental and diagnostic information about your tracing libraries for processing; this may include information about the host running an application, operating system, programming language and runtime, APM integrations used, and application dependencies. Additionally, Datadog may collect information such as diagnostic logs, crash dumps with obfuscated stack traces, and various system performance metrics.
Datadog may gather environmental and diagnostic information about your APM SDKs for processing; this may include information about the host running an application, operating system, programming language and runtime, APM integrations used, and application dependencies. Additionally, Datadog may collect information such as diagnostic logs, crash dumps with obfuscated stack traces, and various system performance metrics.

You can disable this telemetry collection using either of these settings:

Expand Down Expand Up @@ -654,7 +654,7 @@ PCI compliance for APM is not available for the {{< region-param key="dd_site_na
[6]: /tracing/guide/ignoring_apm_resources/
[7]: /agent/docker/apm/?tab=standard#docker-apm-agent-environment-variables
[8]: /tracing/guide/send_traces_to_agent_by_api/
[9]: /tracing/trace_collection/custom_instrumentation/java/#extending-tracers
[9]: /tracing/trace_collection/custom_instrumentation/java/#extending-apm-sdks
[10]: /tracing/trace_collection/custom_instrumentation/ruby/?tab=activespan#post-processing-traces
[11]: https://ddtrace.readthedocs.io/en/stable/advanced_usage.html#trace-filtering
[12]: /sensitive_data_scanner/
Expand Down
4 changes: 2 additions & 2 deletions content/en/tracing/error_tracking/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ To get started with configuring your repository, see the [Source Code Integratio

## Use span tags to track error spans

The Datadog tracers collect errors through integrations and the manual instrumentation of your backend services' source code. Error spans within a trace are processed by Error Tracking **if the error is located in a service entry span** (the uppermost service span). This span must also contain the `error.stack`, `error.message`, and `error.type` [span tags][1] to be tracked.
The Datadog APM SDKs collect errors through integrations and the manual instrumentation of your backend services' source code. Error spans within a trace are processed by Error Tracking **if the error is located in a service entry span** (the uppermost service span). This span must also contain the `error.stack`, `error.message`, and `error.type` [span tags][1] to be tracked.

{{< img src="tracing/error_tracking/flamegraph_with_errors.png" alt="Flame graph with errors" style="width:100%;" >}}

Expand All @@ -57,4 +57,4 @@ Issues created from APM include the distribution of impacted spans, the latest m
[3]: /tracing/error_tracking/explorer
[4]: /tracing
[5]: https://app.datadoghq.com/apm/error-tracking
[6]: /integrations/guide/source-code-integration
[6]: /integrations/guide/source-code-integration
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Migrate to <a href="/tracing/trace_pipeline"> Trace Retention and Ingestion </a>

[App Analytics][1] is used to filter APM data by user-defined tags such as `customer_id`, `error_type`, or `app_name` to help troubleshoot and filter your requests. To enable it, either:

* Configure your APM tracer to emit the relevant analytics from your services—either [automatically][2] or [manually][3].
* Configure your APM SDK to emit the relevant analytics from your services—either [automatically][2] or [manually][3].
* Configure the Datadog Agent to emit the relevant analytics from your services (instructions below).

**Note**: To enable App Analytics with the Agent, [services][1] must be already flowing into Datadog.
Expand Down
8 changes: 4 additions & 4 deletions content/en/tracing/glossary/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ further_reading:

The APM UI provides many tools to troubleshoot application performance and correlate it throughout the product, enabling you to find and resolve issues in distributed systems.

For additional definitions and descriptions of important APM terms such as _spans_ and _indexed_, see the [main Glossary][22].
For additional definitions and descriptions of important APM terms such as _spans_ and _indexed_, see the [main Glossary][22].

| Concept | Description |
|---------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
Expand Down Expand Up @@ -70,7 +70,7 @@ Don't see the HTTP endpoints you were expecting on the Service page? In APM, end

## Resources

Resources represent a particular domain of a customer application. They could typically be an instrumented web endpoint, database query, or background job. For a web service, these resources can be dynamic web endpoints that are grouped by a static span name - `web.request`. In a database service, these would be database queries with the span name `db.query`. For example the `web-store` service has automatically instrumented resources - web endpoints - which handle checkouts, updating carts, adding items, and so on. A Resource name can be the HTTP method and the HTTP route, for example `GET /productpage` or `ShoppingCartController#checkout`.
Resources represent a particular domain of a customer application. They could typically be an instrumented web endpoint, database query, or background job. For a web service, these resources can be dynamic web endpoints that are grouped by a static span name - `web.request`. In a database service, these would be database queries with the span name `db.query`. For example the `web-store` service has automatically instrumented resources - web endpoints - which handle checkouts, updating carts, adding items, and so on. A Resource name can be the HTTP method and the HTTP route, for example `GET /productpage` or `ShoppingCartController#checkout`.

Each resource has its own [Resource page][7] with [trace metrics][15] scoped to the specific endpoint. Trace metrics can be used like any other Datadog metric - they are exportable to a dashboard or can be used to create monitors. The Resource page also shows the span summary widget with an aggregate view of [spans][21] for all [traces](#trace), latency distribution of requests, and traces which show requests made to this endpoint.

Expand Down Expand Up @@ -100,7 +100,7 @@ For more information, see the [propagating the trace context][27] for your appli

Instrumentation is the process of adding code to your application to capture and report observability data to Datadog, such as traces, metrics, and logs. Datadog provides instrumentation libraries for various programming languages and frameworks.

You can automatically instrument your application when you install the Datadog Agent with [Single Step Instrumentation][24] or when you [manually add Datadog tracing libraries][25] to your code.
You can automatically instrument your application when you install the Datadog Agent with [Single Step Instrumentation][24] or when you [manually add Datadog APM SDKs][25] to your code.

You can use custom instrumentation by embedding tracing code directly into your application code. This allows you to programmatically create, modify, or delete traces to send to Datadog.

Expand Down Expand Up @@ -135,4 +135,4 @@ To learn more, read [Application Instrumentation][26].
[24]: /tracing/trace_collection/automatic_instrumentation/single-step-apm
[25]: /tracing/trace_collection/automatic_instrumentation/dd_libraries/
[26]: /tracing/trace_collection/
[27]: /tracing/trace_collection/trace_context_propagation
[27]: /tracing/trace_collection/trace_context_propagation
2 changes: 1 addition & 1 deletion content/en/tracing/guide/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,6 @@ These tutorials walk you through setting up a sample multi-service application w
{{< nextlink href="tracing/guide/serverless_enable_aws_xray/" >}}Decide When to Use Datadog APM and AWS X-Ray {{< /nextlink >}}
{{< nextlink href="/tracing/guide/setting_up_apm_with_cpp/" >}}Setting Up APM with C++{{< /nextlink >}}
{{< nextlink href="/tracing/guide/leveraging_diversity_sampling/" >}}Understand Datadog Trace Retention Policy{{< /nextlink >}}
{{< nextlink href="/tracing/guide/agent_tracer_hostnames" >}}Understand the Difference Between the Agent Host and the Tracer Host{{< /nextlink >}}
{{< nextlink href="/tracing/guide/agent_tracer_hostnames" >}}Understand the Difference Between the Agent Host and the APM SDK Host{{< /nextlink >}}
{{< nextlink href="/tracing/guide/setting_up_apm_with_kubernetes_service/" >}}Setting up APM with Kubernetes Service{{< /nextlink >}}
{{< /whatsnext >}}
20 changes: 10 additions & 10 deletions content/en/tracing/guide/agent_tracer_hostnames.md
Original file line number Diff line number Diff line change
@@ -1,31 +1,31 @@
---
title: Understand the Difference Between the Agent Host and the Tracer Host
title: Understand the Difference Between the Agent Host and the APM SDK Host

---

## Overview

In Datadog APM, the `host` tag correlates spans and traces to infrastructure monitoring data, so host metrics are associated with hosts from spans and traces.

## Datadog Agent vs. Tracer hostname
## Datadog Agent vs. APM SDK hostname

The **Agent host** is the host on which the Datadog Agent is running. The **Tracer host** is the host on which the application instrumented with the tracing library is running.
The **Agent host** is the host on which the Datadog Agent is running. The **APM SDK host** is the host on which the application instrumented with the APM SDK is running.

The Agent host and the Tracer host may differ based on how you deploy the Datadog Agent on your infrastructure:
The Agent host and the APM SDK host may differ based on how you deploy the Datadog Agent on your infrastructure:


When the Agent is deployed on the same host as the application (for example, using a [DaemonSet][1]), the Agent host and the Tracer host are the same.
When the Agent is deployed on the same host as the application (for example, using a [DaemonSet][1]), the Agent host and the APM SDK host are the same.

{{< img src="/tracing/guide/agent_tracer_hostnames/agent_host.png" alt="Agent deployed on the same host as the application" style="width:80%;" >}}

When the Agent is deployed on a remote host, the Agent host is different from the Tracer host.
When the Agent is deployed on a remote host, the Agent host is different from the APM SDK host.

{{< img src="/tracing/guide/agent_tracer_hostnames/remote_host.png" alt="Agent deployed on a remote host, different from the application" style="width:80%;" >}}

### When are the Tracer and Agent hosts set on spans?
### When are the APM SDK and Agent hosts set on spans?

- The Datadog Agent hostname is always set on spans.
- The Tracer hostname is set on spans if `DD_TRACE_REPORT_HOSTNAME` is `true` (default is `false`).
- The APM SDK hostname is set on spans if `DD_TRACE_REPORT_HOSTNAME` is `true` (default is `false`).

Language | Config | Environment Variable
----------|--------|---------------------
Expand All @@ -37,7 +37,7 @@ Python | - | `DD_TRACE_REPORT_HOSTNAME`
PHP | `datadog.trace.report_hostname` | `DD_TRACE_REPORT_HOSTNAME`
Java | `dd.trace.report-hostname` | `DD_TRACE_REPORT_HOSTNAME`

### When does APM use host information?
### When does APM use host information?

APM uses host information when you create [retention filters][2], generate [metrics from spans][3], or create [sensitive data scanner rules][4] using host tag filters in queries. For example, host tag filters like `availability-zone` and `cluster-name` are enriched from the Datadog Agent host information.

Expand All @@ -49,4 +49,4 @@ APM uses host information when you create [retention filters][2], generate [metr
[1]: /containers/kubernetes/apm/?tab=daemonset
[2]: /tracing/trace_pipeline/trace_retention
[3]: /tracing/trace_pipeline/generate_metrics
[4]: /sensitive_data_scanner/
[4]: /sensitive_data_scanner/
Loading
Loading