dt-obs-logs

Query, filter, and analyze Dynatrace log data using DQL for troubleshooting.

Updated Dec 12, 2025
One-click install
npx skills add https://github.com/ricardojjulia/ESACompanion --skill dt-obs-logs-ricardojjulia
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: dt-obs-logs
Source: https://github.com/ricardojjulia/ESACompanion/tree/main/.github/skills/dt-obs-logs
Command: npx skills add https://github.com/ricardojjulia/ESACompanion --skill dt-obs-logs-ricardojjulia

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Searching and analyzing large volumes of application and infrastructure logs manually is slow and error-prone. This Skill provides ready-to-use DQL query patterns for Dynatrace log data, so you can quickly find errors, calculate error rates, and detect patterns without writing queries from scratch. ## Core Features & Use Cases - Log Searching & Filtering: Fetch logs by time range, severity level, process group, or content keywords using fetch logs, contains(), and matchesPhrase(). - Error Rate & Pattern Analysis: Calculate error rates over time buckets, count exceptions and timeouts, and identify the most frequent error messages with summarize and countIf. - Structured JSON Log Parsing: Extract fields from JSON-formatted log lines using parse content, "JSON:log" and aggregate by parsed values. - Use Case: When a service starts failing, ask for error logs from the last hour grouped by process group to pinpoint which service is emitting the most errors and what the top error messages are. ## Quick Start Show me all ERROR logs from the last hour grouped by process group with the top error messages.

Frequently Asked Questions about dt-obs-logs

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I search Dynatrace logs for errors with DQL?▼

Use fetch logs with a time range and filter by status, for example: fetch logs, from:now() - 1h | filter status == "ERROR". Add contains() for substring search or matchesPhrase() for exact phrase matching, then sort by timestamp and limit results.

How to calculate log error rate over time in DQL?▼

Use summarize with count() and countIf(status == "ERROR") grouped by bin(timestamp, 5m), then compute the rate with fieldsAdd error_rate = (error_logs * 100.0) / total_logs. Sort by time bucket ascending to see the trend.

What is the difference between contains() and matchesPhrase() in DQL?▼

contains() performs a simple substring search on log content, while matchesPhrase() does full-text phrase matching. Use contains() for simple keyword checks and matchesPhrase() for exact phrases, applying severity filters first to reduce search cost.

How do I parse JSON log lines in Dynatrace DQL?▼

Use parse content, "JSON:log" to create a record field named log, then access nested values with log[key], such as log[msg] or log[error]. Filter logs with contains() before parsing to reduce parsing overhead.

Why does my DQL log query return no results?▼

The most common causes are a missing or too-narrow time range and inactive log ingestion. Widen the from: window and verify that OneAgent log ingestion is configured for the target process groups.

When should I not use this log analysis skill?▼

Do not use it for explaining existing queries, product documentation questions, or distributed tracing and span analysis, which belong to dt-obs-tracing. It also cannot combine logs with host attributes without the smartscape topology reference from dt-dql-essentials.