dt-obs-logs
Log querying, filtering, pattern analysis, and error rate calculation. Use when searching application or infrastructure logs, analyzing error patterns, or correlating log data. Trigger: "show error logs", "search logs for keyword", "log error rate", "recent errors", "logs from last hour", "find log
By dynatrace · 2,053 installs
npx skills add dynatrace/dynatrace-for-ai --skill dt-obs-logs
Source repository · Upstream listing
Log Analysis Skill
Query, filter, and analyze Dynatrace log data using DQL for troubleshooting and monitoring.
What This Skill Covers
Fetching and filtering logs by severity, content, and entity
Searching log messages using pattern matching
Calculating error rates and statistics
Analyzing log patterns and trends
Grouping and aggregating log data by dimensions
Cross source join required: If the query must combine logs with host attributes
(OS type, hostname, IP address, cloud provider) → also read
dt dql essentials/references/smartscape topology navigation.md before writing the query.
Use Cases
Use this skill when users want to:
Find specific log entries (e.g., "show me error logs from the last hour")
Filter logs by severity, process group, or content
Search logs for specific keywords or phrases
Calculate error rates or log statistics
Identify common error messages or patterns
Analyze log trends over time
Troubleshoot issues using log data
Key Concepts
Log Data Model
timestamp : When the log entry was created
content : The log message text
status : Log level (ERROR, FATAL, WARN, INFO, etc.)
dt.process group.id : Associated process group entity
dt.process group.detected name : Resolves process group IDs to human readable names
Query Patterns
fetch logs : Primary command for log data access
Time ranges : Use from:now() <duration for time windows
Filtering : Apply severity, content, and entity filters
Aggregation : Group and summarize log data
Pattern Detection : Use matchesPhrase() and contains() for content search
Common Operations
Severity filtering (single or multiple levels)
Content search (simple and full text)
Entity based filtering (process groups)
Time series analysis (bucketing, sorting)
Error rate calculation
Pattern analysis (exceptions, timeouts, etc.)
Core Workflows
1. Log Searching
Find specific log entries by time, severity, and content.
Typical steps :
1. Define time range
2. Filter by severity (optional)
3. Search content for keywords
4. Select relevant fields
5. Sort and limit results
Example :
2. Log Filtering
Narrow down logs using multiple criteria (severity, entity, content).
Typical steps :
1. Fetch logs with time range
2. Apply severity filters
3. Filter by entity (process group)
4. Apply content filters
5. Format and sort output
Example :
3. Pattern Analysis
Identify patterns, trends, and anomalies in log data.
Typical steps :
1. Fetch logs with time range
2. Add pattern detection fields
3. Aggregate by entity or time
4. Calculate statistics and ratios
5. Sort by frequency or rate
Example :
Key Functions
Filtering
filter status == "ERROR" Filter by status level
in(status, {"ERROR", "FATAL", "WARN"}) Multi status filter (use curly braces for literal sets)
contains(content, "keyword") Simple substring search
matchesPhrase(content, "exact phrase") Full text phrase search
Entity Operations
dt.process group.detected name Get human readable process group name
filter process group == "service name" Filter by specific entity
Aggregation
count() Count all log entries
countIf(condition) Conditional count
by: {dimension} Group by entity or time bucket
bin(timestamp, 5m) Time bucketing for trends
Field Operations
fields timestamp, content, status Select specific fields
fieldsAdd name = expression Add computed fields
if(condition, true value, else: false value) Conditional logic
Common Patterns
Content Search
Simple substring search:
Full text phrase search:
Error Rate Calculation
Calculate error rates over time:
Top Error Messages
Find most common errors:
Process Group Specific Logs
Filter logs by process group:
Structured / JSON Log Parsing
Many applications emit JSON formatted log lines. Use parse to extract fields instead of dumping raw content:
Aggregate by a parsed field:
Notes:
parse content, "JSON:log" creates a record field log — access nested values with log[key]
Filter logs with contains() before parse to reduce parsing overhead
Works with any JSON structured field, not just content
Best Practices
1. Always specify time ranges Use from:now() <duration to limit data
2. Apply filters early Filter by severity and entity before aggregation
3. Use appropriate search methods contains() for simple, matchesPhrase() for exact
4. Limit results Add limit 100 to prevent overwhelming output
5. Sort meaningfully Sort by timestamp for recent logs, by count for top errors
6. Name entities Use dt.process group.detected name or getNodeName() for human readable output
7. Use time buckets for trends bin(timestamp, 5m) for time series analysis
Integration Points
Entity model : Uses dt.process group.id for service correlation
Time series : Supports temporal analysis with bin() and time ranges
Content search : Full text search capabilities via matchesPhrase()
Aggregation : Statistical analysis using summarize and conditional functions
Limitations & Notes
Log availability depends on OneAgent configuration and log ingestion
Full text search ( matchesPhrase ) may have performance implications on large datasets
Entity names require proper OneAgent monitoring for resolution
Time ranges should be reasonable (avoid unbounded queries)
Troubleshooting
Problem Cause Solution
No logs returned Missing time range or too narrow Widen from: window; verify log ingestion is active
getNodeName() returns null OneAgent not monitoring the entity or entity not yet resolved Verify OneAgent is deployed and entity is discovered; use dt.process group.detected name as a reliable alternative
matchesPhrase() slow on large data Full text search without pre filtering Add filter status == "ERROR" before matchesPhrase()
Wrong field name log.level Common mistake Use loglevel (no dot) for severity; see dt dql essentials
Empty content field Log line was empty or not ingested Check log source configuration in OneAgent
Related Skills
dt dql essentials Core DQL syntax and query structure for log queries
dt obs tracing Correlate logs with distributed traces using trace IDs
dt obs problems Correlate logs with DAVIS detected problems