@miragon/pulse-analytics-client 0.0.0-stage → 0.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +84 -2
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/metric-names.d.ts +43 -0
- package/dist/metric-names.d.ts.map +1 -0
- package/dist/metric-names.js +53 -0
- package/dist/metric-names.js.map +1 -0
- package/dist/metrics-contract-labels.test.d.ts +2 -0
- package/dist/metrics-contract-labels.test.d.ts.map +1 -0
- package/dist/metrics-contract-labels.test.js +169 -0
- package/dist/metrics-contract-labels.test.js.map +1 -0
- package/dist/metrics-contract.test.d.ts +2 -0
- package/dist/metrics-contract.test.d.ts.map +1 -0
- package/dist/metrics-contract.test.js +247 -0
- package/dist/metrics-contract.test.js.map +1 -0
- package/dist/prometheus-client.test.d.ts +2 -0
- package/dist/prometheus-client.test.d.ts.map +1 -0
- package/dist/prometheus-client.test.js +265 -0
- package/dist/prometheus-client.test.js.map +1 -0
- package/dist/prometheus.d.ts +100 -0
- package/dist/prometheus.d.ts.map +1 -0
- package/dist/prometheus.js +295 -0
- package/dist/prometheus.js.map +1 -0
- package/dist/prometheus.test.d.ts +2 -0
- package/dist/prometheus.test.d.ts.map +1 -0
- package/dist/prometheus.test.js +54 -0
- package/dist/prometheus.test.js.map +1 -0
- package/dist/promql-labels.test-support.d.ts +53 -0
- package/dist/promql-labels.test-support.d.ts.map +1 -0
- package/dist/promql-labels.test-support.js +237 -0
- package/dist/promql-labels.test-support.js.map +1 -0
- package/dist/promql-labels.test.d.ts +2 -0
- package/dist/promql-labels.test.d.ts.map +1 -0
- package/dist/promql-labels.test.js +190 -0
- package/dist/promql-labels.test.js.map +1 -0
- package/dist/promql-parse.test-support.d.ts +57 -0
- package/dist/promql-parse.test-support.d.ts.map +1 -0
- package/dist/promql-parse.test-support.js +284 -0
- package/dist/promql-parse.test-support.js.map +1 -0
- package/dist/promql-reading-rules.test-support.d.ts +29 -0
- package/dist/promql-reading-rules.test-support.d.ts.map +1 -0
- package/dist/promql-reading-rules.test-support.js +79 -0
- package/dist/promql-reading-rules.test-support.js.map +1 -0
- package/dist/promql-reading-rules.test.d.ts +2 -0
- package/dist/promql-reading-rules.test.d.ts.map +1 -0
- package/dist/promql-reading-rules.test.js +61 -0
- package/dist/promql-reading-rules.test.js.map +1 -0
- package/dist/promql-sources.test-support.d.ts +29 -0
- package/dist/promql-sources.test-support.d.ts.map +1 -0
- package/dist/promql-sources.test-support.js +112 -0
- package/dist/promql-sources.test-support.js.map +1 -0
- package/dist/promql-sources.test.d.ts +2 -0
- package/dist/promql-sources.test.d.ts.map +1 -0
- package/dist/promql-sources.test.js +93 -0
- package/dist/promql-sources.test.js.map +1 -0
- package/dist/queries/as-of.test.d.ts +2 -0
- package/dist/queries/as-of.test.d.ts.map +1 -0
- package/dist/queries/as-of.test.js +80 -0
- package/dist/queries/as-of.test.js.map +1 -0
- package/dist/queries/cluster-compare.d.ts +62 -0
- package/dist/queries/cluster-compare.d.ts.map +1 -0
- package/dist/queries/cluster-compare.js +70 -0
- package/dist/queries/cluster-compare.js.map +1 -0
- package/dist/queries/cluster-compare.test.d.ts +2 -0
- package/dist/queries/cluster-compare.test.d.ts.map +1 -0
- package/dist/queries/cluster-compare.test.js +81 -0
- package/dist/queries/cluster-compare.test.js.map +1 -0
- package/dist/queries/dashboard.d.ts +60 -0
- package/dist/queries/dashboard.d.ts.map +1 -0
- package/dist/queries/dashboard.js +292 -0
- package/dist/queries/dashboard.js.map +1 -0
- package/dist/queries/dashboard.test.d.ts +2 -0
- package/dist/queries/dashboard.test.d.ts.map +1 -0
- package/dist/queries/dashboard.test.js +423 -0
- package/dist/queries/dashboard.test.js.map +1 -0
- package/dist/queries/element.d.ts +68 -0
- package/dist/queries/element.d.ts.map +1 -0
- package/dist/queries/element.js +98 -0
- package/dist/queries/element.js.map +1 -0
- package/dist/queries/element.test.d.ts +2 -0
- package/dist/queries/element.test.d.ts.map +1 -0
- package/dist/queries/element.test.js +105 -0
- package/dist/queries/element.test.js.map +1 -0
- package/dist/queries/engine-compare.d.ts +52 -0
- package/dist/queries/engine-compare.d.ts.map +1 -0
- package/dist/queries/engine-compare.js +57 -0
- package/dist/queries/engine-compare.js.map +1 -0
- package/dist/queries/engine-compare.test.d.ts +2 -0
- package/dist/queries/engine-compare.test.d.ts.map +1 -0
- package/dist/queries/engine-compare.test.js +159 -0
- package/dist/queries/engine-compare.test.js.map +1 -0
- package/dist/queries/engine-landscape.d.ts +92 -0
- package/dist/queries/engine-landscape.d.ts.map +1 -0
- package/dist/queries/engine-landscape.js +183 -0
- package/dist/queries/engine-landscape.js.map +1 -0
- package/dist/queries/engine-landscape.test.d.ts +2 -0
- package/dist/queries/engine-landscape.test.d.ts.map +1 -0
- package/dist/queries/engine-landscape.test.js +171 -0
- package/dist/queries/engine-landscape.test.js.map +1 -0
- package/dist/queries/failures.d.ts +33 -0
- package/dist/queries/failures.d.ts.map +1 -0
- package/dist/queries/failures.js +31 -0
- package/dist/queries/failures.js.map +1 -0
- package/dist/queries/health.d.ts +77 -0
- package/dist/queries/health.d.ts.map +1 -0
- package/dist/queries/health.js +126 -0
- package/dist/queries/health.js.map +1 -0
- package/dist/queries/health.test.d.ts +2 -0
- package/dist/queries/health.test.d.ts.map +1 -0
- package/dist/queries/health.test.js +187 -0
- package/dist/queries/health.test.js.map +1 -0
- package/dist/queries/helpers.d.ts +184 -0
- package/dist/queries/helpers.d.ts.map +1 -0
- package/dist/queries/helpers.js +219 -0
- package/dist/queries/helpers.js.map +1 -0
- package/dist/queries/helpers.test.d.ts +2 -0
- package/dist/queries/helpers.test.d.ts.map +1 -0
- package/dist/queries/helpers.test.js +53 -0
- package/dist/queries/helpers.test.js.map +1 -0
- package/dist/queries/index.d.ts +19 -0
- package/dist/queries/index.d.ts.map +1 -0
- package/dist/queries/index.js +10 -0
- package/dist/queries/index.js.map +1 -0
- package/dist/queries/performance.d.ts +103 -0
- package/dist/queries/performance.d.ts.map +1 -0
- package/dist/queries/performance.js +173 -0
- package/dist/queries/performance.js.map +1 -0
- package/dist/queries/performance.test.d.ts +2 -0
- package/dist/queries/performance.test.d.ts.map +1 -0
- package/dist/queries/performance.test.js +265 -0
- package/dist/queries/performance.test.js.map +1 -0
- package/dist/queries/version-compare.d.ts +41 -0
- package/dist/queries/version-compare.d.ts.map +1 -0
- package/dist/queries/version-compare.js +44 -0
- package/dist/queries/version-compare.js.map +1 -0
- package/dist/queries/version-compare.test.d.ts +2 -0
- package/dist/queries/version-compare.test.d.ts.map +1 -0
- package/dist/queries/version-compare.test.js +162 -0
- package/dist/queries/version-compare.test.js.map +1 -0
- package/dist/queries/windows.d.ts +40 -0
- package/dist/queries/windows.d.ts.map +1 -0
- package/dist/queries/windows.js +56 -0
- package/dist/queries/windows.js.map +1 -0
- package/dist/query-honesty.test.d.ts +2 -0
- package/dist/query-honesty.test.d.ts.map +1 -0
- package/dist/query-honesty.test.js +294 -0
- package/dist/query-honesty.test.js.map +1 -0
- package/dist/query-scenarios.test-support.d.ts +49 -0
- package/dist/query-scenarios.test-support.d.ts.map +1 -0
- package/dist/query-scenarios.test-support.js +146 -0
- package/dist/query-scenarios.test-support.js.map +1 -0
- package/dist/schemas/cluster-compare.d.ts +11 -0
- package/dist/schemas/cluster-compare.d.ts.map +1 -0
- package/dist/schemas/cluster-compare.js +35 -0
- package/dist/schemas/cluster-compare.js.map +1 -0
- package/dist/schemas/engine-compare.d.ts +10 -0
- package/dist/schemas/engine-compare.d.ts.map +1 -0
- package/dist/schemas/engine-compare.js +27 -0
- package/dist/schemas/engine-compare.js.map +1 -0
- package/dist/schemas/engine-landscape.d.ts +5 -0
- package/dist/schemas/engine-landscape.d.ts.map +1 -0
- package/dist/schemas/engine-landscape.js +8 -0
- package/dist/schemas/engine-landscape.js.map +1 -0
- package/dist/schemas/failures.d.ts +8 -0
- package/dist/schemas/failures.d.ts.map +1 -0
- package/dist/schemas/failures.js +9 -0
- package/dist/schemas/failures.js.map +1 -0
- package/dist/schemas/health.d.ts +5 -0
- package/dist/schemas/health.d.ts.map +1 -0
- package/dist/schemas/health.js +6 -0
- package/dist/schemas/health.js.map +1 -0
- package/dist/schemas/index.d.ts +10 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +10 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/path.d.ts +15 -0
- package/dist/schemas/path.d.ts.map +1 -0
- package/dist/schemas/path.js +21 -0
- package/dist/schemas/path.js.map +1 -0
- package/dist/schemas/performance.d.ts +23 -0
- package/dist/schemas/performance.d.ts.map +1 -0
- package/dist/schemas/performance.js +21 -0
- package/dist/schemas/performance.js.map +1 -0
- package/dist/schemas/shared.d.ts +34 -0
- package/dist/schemas/shared.d.ts.map +1 -0
- package/dist/schemas/shared.js +34 -0
- package/dist/schemas/shared.js.map +1 -0
- package/dist/schemas/version-compare.d.ts +10 -0
- package/dist/schemas/version-compare.d.ts.map +1 -0
- package/dist/schemas/version-compare.js +25 -0
- package/dist/schemas/version-compare.js.map +1 -0
- package/dist/widgets.d.ts +138 -0
- package/dist/widgets.d.ts.map +1 -0
- package/dist/widgets.js +2 -0
- package/dist/widgets.js.map +1 -0
- package/metrics-contract.json +174 -0
- package/package.json +72 -3
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
import { engineIdsOf, engineMatcher, escapeLabelValue, selector, } from "../prometheus.js";
|
|
2
|
+
import { METRIC_NAMES as M } from "../metric-names.js";
|
|
3
|
+
import { asOfNow, byLabel, engineState, first, firstOrNull, increaseIn, kpiQueries, ratePct, reportingEngineIds, reportingEnginesQuery, } from "./helpers.js";
|
|
4
|
+
import { clampWindow, DAY_SECONDS, nowSeconds, windowAt } from "./windows.js";
|
|
5
|
+
/**
|
|
6
|
+
* How many (process, activity) rows the activity breakdown carries: the top
|
|
7
|
+
* ones by total time. The result says how many there were in all
|
|
8
|
+
* (`activityCount`), so a view calls the list what it is ("Top 20 by total
|
|
9
|
+
* time") instead of showing an unexplained count.
|
|
10
|
+
*/
|
|
11
|
+
export const ACTIVITY_BREAKDOWN_LIMIT = 20;
|
|
12
|
+
/**
|
|
13
|
+
* The comparison floor when the caller names none: the analytics settings'
|
|
14
|
+
* default `minBucketSize` (10 instances per window).
|
|
15
|
+
*/
|
|
16
|
+
const DEFAULT_MIN_BUCKET_SIZE = 10;
|
|
17
|
+
/** Whole milliseconds, the histograms' unit and the dashboard's. */
|
|
18
|
+
const ms = (value) => Math.round(value);
|
|
19
|
+
const msOrNull = (value) => (value === null ? null : ms(value));
|
|
20
|
+
/**
|
|
21
|
+
* Aggregated dashboard KPIs + activity / definition breakdowns, from the
|
|
22
|
+
* engine's process metrics. Shared by the dashboard pipeline step and the
|
|
23
|
+
* `analytics_show_dashboard` widget tool. Two kinds of figures, never mixed:
|
|
24
|
+
*
|
|
25
|
+
* - FLOWS within the window (`period`): starts, completions, incidents created
|
|
26
|
+
* and resolved, and the durations of the instances that ended — counted over
|
|
27
|
+
* the range with {@link increaseIn}. Durations are null when nothing ended; `incidentRatePct` is null
|
|
28
|
+
* when nothing started.
|
|
29
|
+
* - LIVE STATE right now: `runningNow` / `openIncidentsNow` from the state
|
|
30
|
+
* gauges (`camunda_process_instances_running`, `camunda_incidents_open`) —
|
|
31
|
+
* the same numbers the failure dashboard, engine health and the landscape
|
|
32
|
+
* read, independent of the window. A counter difference within the window
|
|
33
|
+
* is no substitute: it misses every instance started before the window.
|
|
34
|
+
* The gauges have rows only for what exists, so whether a missing series is
|
|
35
|
+
* 0 or "not reported" (null) is decided by the engine presence probe
|
|
36
|
+
* ({@link reportingEnginesQuery}): null only while no engine in scope reports.
|
|
37
|
+
*
|
|
38
|
+
* The activity breakdown groups by (process, activity): BPMN ids are only
|
|
39
|
+
* unique within one model, so `StartEvent_1` of two processes are two rows.
|
|
40
|
+
* The result echoes its scope (process key, period, engines).
|
|
41
|
+
*
|
|
42
|
+
* `previous` holds the starts and incidents of the window right before the
|
|
43
|
+
* period: the reference an incident rate is judged against (a rate on its
|
|
44
|
+
* own says nothing about whether it is high). It is null when that window
|
|
45
|
+
* lies wholly before the Prometheus retention (a 30-day period), and
|
|
46
|
+
* `suppressed` when either window started fewer than `minBucketSize`
|
|
47
|
+
* instances: a change of a rate over a handful of starts is noise.
|
|
48
|
+
*/
|
|
49
|
+
export async function dashboardData(ch, params) {
|
|
50
|
+
const asOf = asOfNow();
|
|
51
|
+
const range = params.period;
|
|
52
|
+
const engine = engineMatcher(params.engine);
|
|
53
|
+
const keyMatcher = params.processDefinitionKey
|
|
54
|
+
? `process_definition_key="${escapeLabelValue(params.processDefinitionKey)}"`
|
|
55
|
+
: undefined;
|
|
56
|
+
const sel = selector(keyMatcher, engine);
|
|
57
|
+
const completedSel = selector(keyMatcher, `state="COMPLETED"`, engine);
|
|
58
|
+
const w = { range };
|
|
59
|
+
const q = kpiQueries({ sel, completedSel }, w);
|
|
60
|
+
const before = previousWindow(params.period);
|
|
61
|
+
const prev = before ? kpiQueries({ sel, completedSel }, windowAt(before)) : null;
|
|
62
|
+
const inWindow = (series) => increaseIn(series, w);
|
|
63
|
+
const [started, completed, incCreated, incResolved, avg, median, p95, runningNow, openIncidentsNow, actCount, actSum, actP95, defStarted, defCompleted, defIncidents, defDurSum, defDurCount, defRunning, reporting, prevStarted, prevIncidents,] = await Promise.all([
|
|
64
|
+
ch.instant(q.started),
|
|
65
|
+
ch.instant(q.completed),
|
|
66
|
+
ch.instant(q.incidents),
|
|
67
|
+
ch.instant(`sum(${inWindow(`${M.incidentResolved}${sel}`)})`),
|
|
68
|
+
ch.instant(q.avgDuration),
|
|
69
|
+
ch.instant(q.medianDuration),
|
|
70
|
+
ch.instant(q.p95Duration),
|
|
71
|
+
ch.instant(`sum(${engineState(M.processInstancesRunning, sel)})`),
|
|
72
|
+
ch.instant(`sum(${engineState(M.incidentsOpen, sel)})`),
|
|
73
|
+
ch.instant(`sum by (process_definition_key, activity_id, activity_type)(${inWindow(`${M.activityEnded}${sel}`)})`),
|
|
74
|
+
ch.instant(`sum by (process_definition_key, activity_id)(${inWindow(`${M.activityDuration}_sum${sel}`)})`),
|
|
75
|
+
ch.instant(`histogram_quantile(0.95, sum by (process_definition_key, activity_id, le)(${inWindow(`${M.activityDuration}_bucket${sel}`)}))`),
|
|
76
|
+
ch.instant(`sum by (process_definition_key)(${inWindow(`${M.processInstanceStarted}${sel}`)})`),
|
|
77
|
+
ch.instant(`sum by (process_definition_key)(${inWindow(`${M.processInstanceEnded}${completedSel}`)})`),
|
|
78
|
+
ch.instant(`sum by (process_definition_key)(${inWindow(`${M.incidentCreated}${sel}`)})`),
|
|
79
|
+
ch.instant(`sum by (process_definition_key)(${inWindow(`${M.processInstanceDuration}_sum${sel}`)})`),
|
|
80
|
+
ch.instant(`sum by (process_definition_key)(${inWindow(`${M.processInstanceDuration}_count${sel}`)})`),
|
|
81
|
+
ch.instant(`sum by (process_definition_key)(${engineState(M.processInstancesRunning, sel)})`),
|
|
82
|
+
ch.instant(reportingEnginesQuery(selector(engine))),
|
|
83
|
+
prev ? ch.instant(prev.started) : null,
|
|
84
|
+
prev ? ch.instant(prev.incidents) : null,
|
|
85
|
+
]);
|
|
86
|
+
const totalCount = Math.round(first(started));
|
|
87
|
+
const incidentsCreated = Math.round(first(incCreated));
|
|
88
|
+
const engineReports = reporting.length > 0;
|
|
89
|
+
/** A live gauge: its value; else 0 while an engine in scope reports (no row = none); else unknown. */
|
|
90
|
+
const live = (samples) => {
|
|
91
|
+
const value = firstOrNull(samples);
|
|
92
|
+
if (value !== null)
|
|
93
|
+
return Math.round(value);
|
|
94
|
+
return engineReports ? 0 : null;
|
|
95
|
+
};
|
|
96
|
+
const activities = buildActivityBreakdown(actCount, actSum, actP95);
|
|
97
|
+
const minBucket = Math.max(1, Math.floor(params.minBucketSize ?? DEFAULT_MIN_BUCKET_SIZE));
|
|
98
|
+
const previous = previousFlows(prevStarted, prevIncidents, before?.partial ?? false);
|
|
99
|
+
return {
|
|
100
|
+
processDefinitionKey: params.processDefinitionKey ?? null,
|
|
101
|
+
period: params.period,
|
|
102
|
+
engines: engineIdsOf(params.engine),
|
|
103
|
+
reportingEngines: reportingEngineIds(reporting),
|
|
104
|
+
asOf,
|
|
105
|
+
totalCount,
|
|
106
|
+
completedCount: Math.round(first(completed)),
|
|
107
|
+
incidentsCreated,
|
|
108
|
+
incidentsResolved: Math.round(first(incResolved)),
|
|
109
|
+
incidentRatePct: ratePct(incidentsCreated, totalCount),
|
|
110
|
+
avgDurationMs: msOrNull(firstOrNull(avg)),
|
|
111
|
+
medianDurationMs: msOrNull(firstOrNull(median)),
|
|
112
|
+
p95DurationMs: msOrNull(firstOrNull(p95)),
|
|
113
|
+
runningNow: live(runningNow),
|
|
114
|
+
openIncidentsNow: live(openIncidentsNow),
|
|
115
|
+
previous: previous && {
|
|
116
|
+
...previous,
|
|
117
|
+
suppressed: Math.min(totalCount, previous.totalCount) < minBucket,
|
|
118
|
+
},
|
|
119
|
+
activityBreakdown: activities.slice(0, ACTIVITY_BREAKDOWN_LIMIT),
|
|
120
|
+
activityCount: activities.length,
|
|
121
|
+
definitionBreakdown: buildDefinitionBreakdown({
|
|
122
|
+
started: defStarted,
|
|
123
|
+
completed: defCompleted,
|
|
124
|
+
incidents: defIncidents,
|
|
125
|
+
durSum: defDurSum,
|
|
126
|
+
durCount: defDurCount,
|
|
127
|
+
running: defRunning,
|
|
128
|
+
}, engineReports || defRunning.length > 0),
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
/** A period's length in seconds ("7d" → 604 800). */
|
|
132
|
+
const periodSeconds = (period) => Number.parseInt(period, 10) * DAY_SECONDS;
|
|
133
|
+
/**
|
|
134
|
+
* The window right before `period`, held inside the retention; null when it
|
|
135
|
+
* lies wholly before it (no figures can exist for it).
|
|
136
|
+
*/
|
|
137
|
+
function previousWindow(period) {
|
|
138
|
+
const now = nowSeconds();
|
|
139
|
+
const length = periodSeconds(period);
|
|
140
|
+
try {
|
|
141
|
+
return clampWindow("previous period", now - 2 * length, now - length, now);
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
return null;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/** The previous window's starts and incidents, or null when it was not read. */
|
|
148
|
+
function previousFlows(started, incidents, partial) {
|
|
149
|
+
if (!started || !incidents)
|
|
150
|
+
return null;
|
|
151
|
+
const totalCount = Math.round(first(started));
|
|
152
|
+
const incidentsCreated = Math.round(first(incidents));
|
|
153
|
+
return {
|
|
154
|
+
totalCount,
|
|
155
|
+
incidentsCreated,
|
|
156
|
+
incidentRatePct: ratePct(incidentsCreated, totalCount),
|
|
157
|
+
partial,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
/** Composite (process, activity) key — activity ids repeat across models. */
|
|
161
|
+
const activityKey = (s) => `${s.metric.process_definition_key ?? ""}\u0000${s.metric.activity_id ?? ""}`;
|
|
162
|
+
function byActivityKey(samples) {
|
|
163
|
+
const out = new Map();
|
|
164
|
+
for (const s of samples)
|
|
165
|
+
out.set(activityKey(s), s.value);
|
|
166
|
+
return out;
|
|
167
|
+
}
|
|
168
|
+
function buildActivityBreakdown(typedCounts, sums, p95) {
|
|
169
|
+
// One row per (process, activity); the type is fixed within one model.
|
|
170
|
+
const rows = new Map();
|
|
171
|
+
for (const s of typedCounts) {
|
|
172
|
+
const k = activityKey(s);
|
|
173
|
+
const row = rows.get(k) ?? {
|
|
174
|
+
key: s.metric.process_definition_key ?? "",
|
|
175
|
+
id: s.metric.activity_id ?? "",
|
|
176
|
+
type: s.metric.activity_type ?? "",
|
|
177
|
+
count: 0,
|
|
178
|
+
};
|
|
179
|
+
row.count += s.value;
|
|
180
|
+
rows.set(k, row);
|
|
181
|
+
}
|
|
182
|
+
const sumBy = byActivityKey(sums);
|
|
183
|
+
const p95By = byActivityKey(p95);
|
|
184
|
+
return [...rows.entries()]
|
|
185
|
+
.map(([k, row]) => {
|
|
186
|
+
const count = Math.round(row.count);
|
|
187
|
+
const sumMs = sumBy.get(k);
|
|
188
|
+
const p95Ms = p95By.get(k);
|
|
189
|
+
return {
|
|
190
|
+
processDefinitionKey: row.key,
|
|
191
|
+
activityId: row.id,
|
|
192
|
+
activityType: row.type,
|
|
193
|
+
executionCount: count,
|
|
194
|
+
avgDurationMs: sumMs !== undefined && count > 0 ? ms(sumMs / count) : null,
|
|
195
|
+
p95DurationMs: p95Ms === undefined ? null : ms(p95Ms),
|
|
196
|
+
totalTimeMs: ms(sumMs ?? 0),
|
|
197
|
+
};
|
|
198
|
+
})
|
|
199
|
+
.sort((a, b) => b.totalTimeMs - a.totalTimeMs);
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* `runningReported`: an engine in scope reports its state gauges — a key
|
|
203
|
+
* without a running row then runs nothing (0); otherwise its count is
|
|
204
|
+
* unknown (null), not 0.
|
|
205
|
+
*/
|
|
206
|
+
function buildDefinitionBreakdown(s, runningReported) {
|
|
207
|
+
const startedBy = byLabel(s.started, "process_definition_key");
|
|
208
|
+
const completedBy = byLabel(s.completed, "process_definition_key");
|
|
209
|
+
const incidentsBy = byLabel(s.incidents, "process_definition_key");
|
|
210
|
+
const sumBy = byLabel(s.durSum, "process_definition_key");
|
|
211
|
+
const countBy = byLabel(s.durCount, "process_definition_key");
|
|
212
|
+
const runningBy = byLabel(s.running, "process_definition_key");
|
|
213
|
+
// A definition belongs in the breakdown when it started work in the window
|
|
214
|
+
// OR has work running now — a long-running process must not vanish.
|
|
215
|
+
const keys = new Set([...Object.keys(startedBy), ...Object.keys(runningBy)]);
|
|
216
|
+
return [...keys]
|
|
217
|
+
.map((key) => {
|
|
218
|
+
const cnt = countBy[key] ?? 0;
|
|
219
|
+
return {
|
|
220
|
+
processDefinitionKey: key,
|
|
221
|
+
totalInstances: Math.round(startedBy[key] ?? 0),
|
|
222
|
+
completed: Math.round(completedBy[key] ?? 0),
|
|
223
|
+
runningNow: runningReported ? Math.round(runningBy[key] ?? 0) : null,
|
|
224
|
+
incidentsCreated: Math.round(incidentsBy[key] ?? 0),
|
|
225
|
+
avgDurationMs: cnt > 0 ? ms((sumBy[key] ?? 0) / cnt) : null,
|
|
226
|
+
};
|
|
227
|
+
})
|
|
228
|
+
.filter((d) => d.totalInstances > 0 || (d.runningNow ?? 0) > 0)
|
|
229
|
+
.sort((a, b) => b.totalInstances - a.totalInstances ||
|
|
230
|
+
(b.runningNow ?? 0) - (a.runningNow ?? 0) ||
|
|
231
|
+
a.processDefinitionKey.localeCompare(b.processDefinitionKey));
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Current failure / incident state, from the live state gauges
|
|
235
|
+
* (`camunda_incidents_open`, `camunda_jobs_failed`, `camunda_process_instances_running`).
|
|
236
|
+
*
|
|
237
|
+
* Point-in-time ("what is failing now"), so it is robust regardless of how the
|
|
238
|
+
* data arrived — unlike a rate window over `incident_created`, which reads zero
|
|
239
|
+
* on backdated/bulk-imported history. Per process: instances running now, dead
|
|
240
|
+
* jobs, open incidents and open incidents per 100 running instances. Groups
|
|
241
|
+
* are (process, incident type) — the gauge carries no message, activity id,
|
|
242
|
+
* timestamps or instance ids, so the rows carry none either.
|
|
243
|
+
*/
|
|
244
|
+
export async function failureDashboardData(ch, params) {
|
|
245
|
+
const asOf = asOfNow();
|
|
246
|
+
const sel = selector(engineMatcher(params.engine));
|
|
247
|
+
const [patterns, runningByKey, incidentsByKey, deadJobsByKey] = await Promise.all([
|
|
248
|
+
ch.instant(`sum by (process_definition_key, incident_type)(${engineState(M.incidentsOpen, sel)})`),
|
|
249
|
+
ch.instant(`sum by (process_definition_key)(${engineState(M.processInstancesRunning, sel)})`),
|
|
250
|
+
ch.instant(`sum by (process_definition_key)(${engineState(M.incidentsOpen, sel)})`),
|
|
251
|
+
ch.instant(`sum by (process_definition_key)(${engineState(M.jobsFailed, sel)})`),
|
|
252
|
+
]);
|
|
253
|
+
// Totals are computed over ALL patterns; only the list itself is capped at
|
|
254
|
+
// the top 50 for display.
|
|
255
|
+
const allPatterns = patterns
|
|
256
|
+
.map((s) => ({
|
|
257
|
+
incidentType: s.metric.incident_type ?? "",
|
|
258
|
+
processDefinitionKey: s.metric.process_definition_key ?? "",
|
|
259
|
+
incidentCount: Math.round(s.value),
|
|
260
|
+
}))
|
|
261
|
+
.filter((p) => p.incidentCount > 0)
|
|
262
|
+
.sort((a, b) => b.incidentCount - a.incidentCount);
|
|
263
|
+
const errorPatterns = allPatterns.slice(0, 50);
|
|
264
|
+
const runningBy = byLabel(runningByKey, "process_definition_key");
|
|
265
|
+
const incidentBy = byLabel(incidentsByKey, "process_definition_key");
|
|
266
|
+
const deadBy = byLabel(deadJobsByKey, "process_definition_key");
|
|
267
|
+
const processBreakdown = Object.keys(incidentBy)
|
|
268
|
+
.map((key) => {
|
|
269
|
+
const running = Math.round(runningBy[key] ?? 0);
|
|
270
|
+
const openIncidents = Math.round(incidentBy[key] ?? 0);
|
|
271
|
+
return {
|
|
272
|
+
processDefinitionKey: key,
|
|
273
|
+
runningNow: running,
|
|
274
|
+
deadJobs: Math.round(deadBy[key] ?? 0),
|
|
275
|
+
openIncidents,
|
|
276
|
+
incidentRatePct: ratePct(openIncidents, running),
|
|
277
|
+
};
|
|
278
|
+
})
|
|
279
|
+
.filter((p) => p.openIncidents > 0)
|
|
280
|
+
.sort((a, b) => b.openIncidents - a.openIncidents);
|
|
281
|
+
const totalIncidents = allPatterns.reduce((s, p) => s + p.incidentCount, 0);
|
|
282
|
+
return {
|
|
283
|
+
engines: engineIdsOf(params.engine),
|
|
284
|
+
totalIncidents,
|
|
285
|
+
uniqueErrorPatterns: allPatterns.length,
|
|
286
|
+
mostAffectedProcess: processBreakdown.length > 0 ? processBreakdown[0].processDefinitionKey : null,
|
|
287
|
+
errorPatterns,
|
|
288
|
+
processBreakdown,
|
|
289
|
+
asOf,
|
|
290
|
+
};
|
|
291
|
+
}
|
|
292
|
+
//# sourceMappingURL=dashboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/queries/dashboard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard.test.d.ts","sourceRoot":"","sources":["../../src/queries/dashboard.test.ts"],"names":[],"mappings":""}
|