Skip to main content
Glama
dynatrace-oss

Dynatrace MCP Server

Official
list-problems.ts2.27 kB
import { HttpClient } from '@dynatrace-sdk/http-client'; import { executeDql } from './execute-dql'; /** * List all problems via dt.davis.problems * @param dtClient Dynatrace HTTP Client * @param additionalFilter Any additional DQL filter * @param status Status (ACTIVE, CLOSED, or ALL) * @param timeframe Timeframe to query problems (e.g., '24h', '7d', '30d'). Default: '24h' * @returns DQL query result */ export const listProblems = async ( dtClient: HttpClient, additionalFilter?: string, status?: string, timeframe: string = '24h', ) => { // DQL Statement from Problems App to fetch all Davis Problems let statusFilter = ''; if (status === 'ACTIVE') { statusFilter = '| filter isNull(event.end)'; } else if (status === 'CLOSED') { statusFilter = '| filter not(isNull(event.end))'; } // For 'ALL' or undefined, no additional filter const dql = `fetch dt.davis.problems, from: now()-${timeframe}, to: now() | filter isNull(dt.davis.is_duplicate) OR not(dt.davis.is_duplicate) ${statusFilter} ${additionalFilter ? `| filter ${additionalFilter}` : ''} | fieldsAdd duration = (coalesce(event.end, now()) - event.start)/1000000000, affected_entities_count = arraySize(affected_entity_ids), event_count = arraySize(dt.davis.event_ids), affected_users_count = dt.davis.affected_users_count, problem_id = event.id | fields display_id, event.name, event.description, event.status, event.category, event.start, event.end, root_cause_entity_id, root_cause_entity_name, duration, affected_entities_count, event_count, affected_users_count, problem_id, dt.davis.mute.status, dt.davis.mute.user, entity_tags, labels.alerting_profile, maintenance.is_under_maintenance, aws.account.id, azure.resource.group, azure.subscription, cloud.provider, cloud.region, dt.cost.costcenter, dt.cost.product, dt.host_group.id, dt.security_context, gcp.project.id, host.name, k8s.cluster.name, k8s.cluster.uid, k8s.container.name, k8s.namespace.name, k8s.node.name, k8s.pod.name, k8s.service.name, k8s.workload.kind, k8s.workload.name | sort event.start desc `; return await executeDql(dtClient, { query: dql, maxResultRecords: 5000, maxResultBytes: /* 5 MB */ 5000000 }); };

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dynatrace-oss/dynatrace-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server