dt-obs-services
Service performance monitoring with RED metrics (Rate, Errors, Duration) and runtime-specific telemetry for Java, .NET, Node.js, Python, PHP, and Go. Use when analyzing service health, SLA compliance, or runtime issues. Trigger: "service response time", "error rate", "throughput", "SLA compliance",
By dynatrace · 2,016 installs
npx skills add dynatrace/dynatrace-for-ai --skill dt-obs-services
Source repository · Upstream listing
Application Services Skill
Monitor application service performance, health, and runtime specific metrics using DQL.
Core Capabilities
1. Service Performance (RED Metrics)
Monitor service Rate, Errors, Duration using metrics based timeseries queries.
Key Metrics:
dt.service.request.response time Response time (microseconds)
dt.service.request.count Request count
dt.service.request.failure count Failed request count
Common Use Cases:
Response time monitoring (avg, p50, p95, p99)
Error rate tracking and spike detection
Traffic analysis (throughput, peaks, growth)
Performance degradation detection
Multi cluster comparison
Quick Example:
→ For detailed queries: See [references/service metrics.md](references/service metrics.md)
2. Advanced Service Analysis
Span based queries for complex scenarios requiring flexible filtering and custom aggregations.
Use Cases:
SLA compliance tracking with custom thresholds
Service health scoring (multi dimensional)
Operation/endpoint level performance analysis
Custom error classification
Failure pattern detection with error details
Quick Example:
→ For detailed queries: See [references/service metrics.md](references/service metrics.md)
3. Service Messaging Metrics
Monitor message based service communication (queues, topics).
Key Metrics:
dt.service.messaging.publish.count Messages sent to queues or topics
dt.service.messaging.receive.count Messages received from queues or topics
dt.service.messaging.process.count Messages successfully processed
dt.service.messaging.process.failure count Messages that failed processing
Use Cases:
Message throughput monitoring (publish/receive rates)
Message processing failure tracking
Queue/topic health analysis
Consumer lag detection (publish vs receive rate comparison)
Quick Example:
→ For detailed queries: See [references/service metrics.md](references/service metrics.md)
4. Service Mesh Monitoring
Monitor service mesh ingress performance and overhead.
Key Metrics:
dt.service.request.service mesh.response time Mesh response time (microseconds)
dt.service.request.service mesh.count Mesh request count
dt.service.request.service mesh.failure count Mesh failure count
Use Cases:
Mesh vs direct performance comparison
Mesh overhead calculation
Mesh failure analysis
gRPC traffic monitoring
Multi cluster mesh performance
Quick Example:
→ For detailed queries: See [references/service metrics.md](references/service metrics.md)
5. Runtime Specific Monitoring
Technology specific runtime performance and resource usage metrics.
Java/JVM [references/java.md](references/java.md)
Memory: heap, pools, metaspace
GC: impact, suspension, frequency, pause time
Threads: count monitoring, leak detection
Classes: loading, unloading, growth
Node.js [references/nodejs.md](references/nodejs.md)
Event loop: utilization, active handles
V8 heap: memory used, total
GC: collection time, suspension
Process: RSS memory
.NET CLR [references/dotnet.md](references/dotnet.md)
Memory: consumption by generation
GC: collection count, suspension time
Thread pool: threads, queued work
JIT: compilation time
Python [references/python.md](references/python.md)
Threads: active thread count
Heap: allocated blocks
GC: collection by generation, pause time
Objects: collected, uncollectable
PHP [references/php.md](references/php.md)
OPcache: hit ratio, memory, restarts
GC: effectiveness, duration
JIT: buffer usage
Interned strings: usage, buffer
Go [references/go.md](references/go.md)
Goroutines: count, leak detection
GC: suspension, collection time
Memory: heap by state, committed
Scheduler: worker threads, queue size
CGo: call frequency
When to Use This Skill
✅ Use for:
Monitoring service performance (response time, errors, traffic)
Calculating SLA compliance
Analyzing service mesh performance
Monitoring messaging throughput and processing failures
Troubleshooting runtime specific issues (GC, memory, threads)
Multi cluster service comparison
Operation/endpoint level analysis
❌ Don't use for:
Infrastructure metrics (use infrastructure skills)
Log analysis (use logs skills)
Distributed tracing workflows (use traces/spans skills)
Database performance (use database skills)
Product documentation or how to configuration questions → use ask dynatrace docs
Agent Instructions
Act First, Refine Later
When a user asks for analysis — threshold checks, anomaly detection, performance
comparisons — proceed immediately with sensible defaults. Do not ask the user
for parameter values you can reasonably assume.
Why this matters: analysis tools (e.g., static threshold analyzer ) require specific
inputs like threshold values and service scope. The user expects results, not a
parameter interview. Pick reasonable defaults, state them clearly in the response,
and let the user refine.
Default values when not specified:
Parameter Default Rationale
Response time threshold 1000 ms (= 1,000,000 µs in the metric's base unit) Common SLA boundary
Service scope All services Show the most relevant violations
Timeframe From the request, or last 30 min for threshold checks, 2h for general analysis Matches typical operational windows
Example: threshold violation request
1. Use create dql to build a timeseries query for avg(dt.service.request.response time) grouped by dt.smartscape.service
2. Pass the query to static threshold analyzer with threshold = 1000000 (µs), alertCondition = ABOVE
3. Resolve entity IDs to names using get entity name
4. Present violations with service names, timestamps, values, and duration
Reading user phrasing: Phrases like "the fixed threshold", "a threshold", or "the limit"
name the type of analysis — static threshold check — not a specific number the user expects
you to already know. "Fixed" distinguishes a static cutoff from a dynamic or seasonal baseline.
When you see these phrases, apply the 1000 ms default from the table above and present
results — the user can then refine if the default doesn't match their intent.
Scope Boundary
This skill covers service performance metrics and runtime monitoring only . If the
user asks a product documentation or configuration question (e.g., "How do I add custom
sensors?", "How do I configure service detection?"), use ask dynatrace docs instead —
this skill does not contain configuration how tos.
Understanding User Intent
Map user questions to capabilities:
User Request Use Capability Key Files
"service performance", "response time", "error rate" Service Performance (RED) service metrics.md
"SLA tracking", "health scoring" Advanced Service Analysis service metrics.md
"service mesh", "Istio", "Linkerd", "mesh overhead" Service Mesh Monitoring service metrics.md
"messaging", "queue", "topic", "publish", "consumer" Service Messaging Metrics service metrics.md
"JVM GC", "Java memory", "heap" Runtime Specific (Java) java.md
"Node.js event loop", "V8 heap" Runtime Specific (Node.js) nodejs.md
".NET CLR", "GC generation" Runtime Specific (.NET) dotnet.md
"Python GC", "thread count" Runtime Specific (Python) python.md
"OPcache", "PHP GC" Runtime Specific (PHP) php.md
"goroutines", "Go GC", "scheduler" Runtime Specific (Go) go.md
Query Construction Patterns
1. Metrics based (timeseries)
Use for: Standard monitoring, dashboards, alerting
Pattern: timeseries <metric = <aggregation (<metric name ), by: {dimensions}
Files: service metrics.md, all runtime specific files
2. Span based (fetch spans)
Use for: Complex filtering, custom logic, detailed analysis
Pattern: fetch spans filter request.is root span == true fieldsAdd ... summarize ...
Files: service metrics.md (Advanced Service Analysis section)
3. Comparison queries
Use append for baseline comparison
Use shift: 15m for time shifted baselines
Example: Performance degradation detection
Response Construction Guidelines
Always include:
1. Metric name(s) Clear metric identifiers
2. Aggregation How data is aggregated (avg, sum, percentile)
3. Grouping Dimensions used ( dt.service.name , k8s.workload.name , etc.)
4. Unit conversion Convert microseconds to milliseconds where appropriate
5. Filtering Relevant thresholds or conditions
When referencing runtime specific content:
Check user's technology stack first
Provide only relevant runtime queries (don't overwhelm with all 6 runtimes)
Explain runtime specific metrics (e.g., "OPcache hit ratio" measures PHP opcode cache efficiency)
Common Workflows
Workflow: Service Health Check
Workflow: SLA Monitoring
Workflow: Service Mesh Analysis
Workflow: Runtime Troubleshooting
1. Identify technology stack → Load runtime specific reference
2. Check memory/GC metrics → threads/goroutines → runtime features
Troubleshooting
Problem Cause Solution
Response time values look too large Metric is in microseconds Divide by 1000 to convert to milliseconds
No data for service mesh metrics Service mesh not configured Verify mesh sidecar injection is enabled
Runtime metrics missing Wrong technology or no OneAgent Confirm the runtime is supported and OneAgent is active
dt.smartscape.service returns SmartscapeId, not name Need entity name resolution Use getNodeName(dt.smartscape.service)
Error rate always zero Using wrong failure metric Use dt.service.request.failure count , not custom fields
References
Core Service Monitoring:
[references/service metrics.md](references/service metrics.md) Complete RED metrics, SLA tracking, service mesh queries
Runtime Specific Monitoring:
[references/java.md](references/java.md) Java/JVM monitoring
[references/nodejs.md](references/nodejs.md) Node.js monitoring
[references/dotnet.md](references/dotnet.md) .NET CLR monitoring
[references/python.md](references/python.md) Python monitoring
[references/php.md](references/php.md) PHP monitoring
[references/go.md](references/go.md) Go runtime monitoring