- name
- dd-apm
- description
- APM - traces, services, dependencies, performance analysis.
- metadata
- {"version":"1.0.0","author":"datadog-labs","repository":"https://github.com/datadog-labs/agent-skills","tags":"datadog,apm,tracing,performance,distributed-tracing,dd-apm","globs":"**/ddtrace*,**/datadog*.yaml,**/*trace*","alwaysApply":"false"}
# Datadog APM
Distributed tracing, service maps, and performance analysis.
## Requirements
Datadog Labs Pup should be installed via:
```bash
brew tap datadog-labs/pack
brew install pup
```
## Quick Start
```bash
pup auth login
pup apm services list --env production
pup traces search --query="service:api-gateway" --from="1h"
```
## Services
### List Services
`--env` is **required** for all `apm services` commands.
```bash
pup apm services list --env production
pup apm services list --env staging
```
### Service Statistics
```bash
pup apm services stats --env production
pup apm services stats --env production --from 4h
```
### Service Operations and Resources
```bash
# List operations for a service
pup apm services operations --env production --service api-gateway
# List resources (endpoints) for an operation
pup apm services resources --env production --service api-gateway --name http.request
```
### Service Dependencies
```bash
pup apm dependencies list --env production
```
### Flow Map
```bash
# View service flow map (--query and --env required)
pup apm flow-map --query "service:api-gateway" --env production
```
## Traces
Traces are searched via the top-level `traces` command (not under `apm`).
**Important:** APM durations are in **nanoseconds**: 1 second = 1,000,000,000 ns.
### Search Traces
```bash
# By service
pup traces search --query="service:api-gateway" --from="1h"
# Errors only
pup traces search --query="service:api-gateway status:error" --from="1h"
# Slow traces (>1 second = 1000000000 ns)
pup traces search --query="service:api-gateway @duration:>1000000000" --from="1h"
# With specific tag
pup traces search --query="service:api @http.url:/api/users" --from="1h"
```
### Aggregate Traces
```bash
# Average duration by resource
pup traces aggregate \
--query="service:api-gateway" \
--compute="avg(@duration)" \
--group-by="resource_name" \
--from="1h"
# Error count by service
pup traces aggregate \
--query="status:error" \
--compute="count" \
--group-by="service" \
--from="1h"
# p99 latency
pup traces aggregate \
--query="service:api-gateway" \
--compute="percentile(@duration, 99)" \
--from="1h"
```
## Key Metrics
| Metric | What It Measures |
|--------|------------------|
| `trace.http.request.hits` | Request count |
| `trace.http.request.duration` | Latency |
| `trace.http.request.errors` | Error count |
| `trace.http.request.apdex` | User satisfaction |
## ⚠️ Trace Sampling
**Not all traces are kept.** Understand sampling:
| Mode | What's Kept |
|------|-------------|
| **Head-based** | Random % at start |
| **Error/Slow** | All errors, slow traces |
| **Retention** | What's indexed (billed) |
### Trace Retention Costs
| Retention | Cost |
|-----------|------|
| Indexed spans | $$$ per million |
| Ingested spans | $ per million |
**Best practice:** Only index what you need for search.
## Service Level Objectives
Link APM to SLOs:
```bash
pup slos create --file slo.json
```
## Common Queries
| Goal | Query |
|------|-------|
| Slowest endpoints | `pup traces aggregate --query="service:api" --compute="avg(@duration)" --group-by="resource_name" --from="1h"` |
| Error rate by service | `pup traces aggregate --query="status:error" --compute="count" --group-by="service" --from="1h"` |
| Throughput | `pup traces aggregate --query="service:api" --compute="count" --group-by="resource_name" --from="1h"` |
## Service Config
Query service instance metadata — instance IDs, hostnames, and config IDs for all
running instances of a service. Returns up to 100 instances.
```bash
# Get instance metadata for a service
pup apm service-config get --service-name my-service
# Filter by environment
pup apm service-config get --service-name my-service --env prod
# Filter by specific instance IDs
pup apm service-config get --service-name my-service --service-instance-ids "id-1,id-2"
```
> **Note on service identity:** `service_name` and `env` come from the SDK telemetry
> pipeline and may differ from values in the Service Catalog.
## Service Library Config
Query the APM tracer configuration deployed across all running instances of a service.
Useful for auditing config drift — finding instances where tracing, profiling, or AppSec
is misconfigured relative to the rest of the fleet.
```bash
# Get tracer config for a service
pup apm service-library-config get --service-name my-service
# Filter by environment
pup apm service-library-config get --service-name my-service --env prod
# Filter by language
pup apm service-library-config get --service-name my-service --env prod --language python
# Only show configs where instances disagree (config drift)
pup apm service-library-config get --service-name my-service --mixed
```
> **Note on service identity:** `service_name`, `env`, and `language_name` come from the
> SDK telemetry pipeline and reflect what the tracer reports at runtime. These may differ
> from values in the Service Catalog, which aggregates data from multiple sources (APM
> spans, USM, infrastructure tags, manual definitions).
## Troubleshooting
| Problem | Fix |
|---------|-----|
| No traces | Check ddtrace installed, DD_TRACE_ENABLED=true |
| Missing service | Verify DD_SERVICE env var |
| Traces not linked | Check trace headers propagated |
| High cardinality | Don't tag with user_id/request_id |
| `--env` required error | Always pass `--env` to `apm services` commands |
## References/Docs
- [APM Setup](https://docs.datadoghq.com/tracing/)
- [Trace Search](https://docs.datadoghq.com/tracing/trace_explorer/)
- [Retention Filters](https://docs.datadoghq.com/tracing/trace_pipeline/trace_retention/)
Auf GitHub ansehen