|
1 | 1 | import { HttpClient } from '@dynatrace-sdk/http-client';
|
2 |
| -import { ProblemsClient } from '@dynatrace-sdk/client-classic-environment-v2'; |
| 2 | +import { executeDql } from './execute-dql'; |
3 | 3 |
|
4 |
| -export const listProblems = async (dtClient: HttpClient) => { |
5 |
| - const problemsClient = new ProblemsClient(dtClient); |
| 4 | +export const listProblems = async (dtClient: HttpClient, additionalFilter?: string) => { |
| 5 | + // DQL Statement from Problems App to fetch all Davis Problems for the last 12 hours to now |
| 6 | + const dql = `fetch dt.davis.problems, from: now()-12h, to: now() |
| 7 | +| filter isNull(dt.davis.is_duplicate) OR not(dt.davis.is_duplicate) |
| 8 | +${additionalFilter ? `| filter ${additionalFilter}` : ''} |
| 9 | +| fieldsAdd |
| 10 | + duration = coalesce(event.end, now()) - event.start, |
| 11 | + affected_entities_count = arraySize(affected_entity_ids), |
| 12 | + event_count = arraySize(dt.davis.event_ids), |
| 13 | + affected_users_count = dt.davis.affected_users_count, |
| 14 | + problem_id = event.id |
| 15 | +| fields display_id, event.name, event.description, event.status, event.category, event.start, event.end, |
| 16 | + root_cause_entity_id, root_cause_entity_name, duration, affected_entities_count, |
| 17 | + event_count, affected_users_count, problem_id, dt.davis.mute.status, dt.davis.mute.user, |
| 18 | + entity_tags, labels.alerting_profile, maintenance.is_under_maintenance, |
| 19 | + aws.account.id, azure.resource.group, azure.subscription, cloud.provider, cloud.region, |
| 20 | + dt.cost.costcenter, dt.cost.product, dt.host_group.id, dt.security_context, gcp.project.id, |
| 21 | + host.name, |
| 22 | + 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 |
| 23 | +| sort event.status asc, event.start desc |
| 24 | +`; |
6 | 25 |
|
7 |
| - const securityProblems = await problemsClient.getProblems({ |
8 |
| - pageSize: 100, |
9 |
| - }); |
10 |
| - |
11 |
| - const problems = securityProblems.problems?.map((problem) => { |
12 |
| - return `${problem.displayId} (please refer to this problem with \`problemId\` ${problem.problemId}): ${problem.title}`; |
13 |
| - }); |
14 |
| - |
15 |
| - return problems; |
| 26 | + return await executeDql(dtClient, { query: dql, maxResultRecords: 5000, maxResultBytes: /* 5 MB */ 5000000 }); |
16 | 27 | };
|
0 commit comments