Install any skill in seconds. Free to start, no credit card required.
Get Started Free →APM - traces, services, dependencies, performance analysis.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | -1% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 9% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 22% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 53% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 41% | 0% |
Distributed tracing, service maps, and performance analysis.
Datadog Labs Pup should be installed via:
bashbrew tap datadog-labs/pack brew install pup
bashpup auth login pup apm services list --env production pup traces search --query="service:api-gateway" --from="1h"
--env is required for all apm services commands.
bashpup apm services list --env production pup apm services list --env staging
bashpup apm services stats --env production pup apm services stats --env production --from 4h
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
bashpup apm dependencies list --env production
bash# View service flow map (--query and --env required) pup apm flow-map --query "service:api-gateway" --env production
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.
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"
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"
| 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 |
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) |
| Retention | Cost | |-----------|------| | Indexed spans | $$$ per million | | Ingested spans | $ per million |
Best practice: Only index what you need for search.
Link APM to SLOs:
bashpup slos create --file slo.json
| 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" |
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.
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).
| 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 |
Other measured skills in the registry, with their headline benchmark lift.