@oneuptime/common 8.0.5414 → 8.0.5438
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/Models/AnalyticsModels/AnalyticsBaseModel/AnalyticsBaseModel.ts +22 -0
- package/Models/AnalyticsModels/ExceptionInstance.ts +341 -323
- package/Models/AnalyticsModels/Log.ts +278 -231
- package/Models/AnalyticsModels/Metric.ts +504 -446
- package/Models/AnalyticsModels/MonitorLog.ts +99 -93
- package/Models/AnalyticsModels/Span.ts +473 -417
- package/Server/Services/AlertService.ts +12 -0
- package/Server/Services/IncidentService.ts +12 -0
- package/Server/Services/OpenTelemetryIngestService.ts +4 -0
- package/Server/Services/TelemetryAttributeService.ts +21 -4
- package/Server/Utils/Monitor/MonitorResource.ts +24 -0
- package/Server/Utils/Telemetry/Telemetry.ts +13 -0
- package/Types/AnalyticsDatabase/MaterializedView.ts +4 -0
- package/Types/AnalyticsDatabase/Projection.ts +4 -0
- package/Types/Date.ts +108 -0
- package/UI/Components/AutocompleteTextInput/AutocompleteTextInput.tsx +250 -0
- package/UI/Components/Dictionary/Dictionary.tsx +53 -66
- package/UI/Components/Filters/JSONFilter.tsx +2 -2
- package/UI/Components/Forms/Fields/FormField.tsx +2 -2
- package/UI/Components/GanttChart/Bar/Index.tsx +13 -0
- package/UI/Components/GanttChart/Index.tsx +7 -1
- package/UI/Components/GanttChart/Row/Index.tsx +1 -0
- package/UI/Components/GanttChart/Row/Row.tsx +101 -10
- package/UI/Components/GanttChart/Row/RowLabel.tsx +7 -2
- package/UI/Components/GanttChart/Rows.tsx +7 -1
- package/UI/Components/LogsViewer/LogItem.tsx +149 -10
- package/UI/Components/LogsViewer/LogsViewer.tsx +25 -1
- package/build/dist/Models/AnalyticsModels/AnalyticsBaseModel/AnalyticsBaseModel.js +16 -0
- package/build/dist/Models/AnalyticsModels/AnalyticsBaseModel/AnalyticsBaseModel.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/ExceptionInstance.js +325 -310
- package/build/dist/Models/AnalyticsModels/ExceptionInstance.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/Log.js +263 -222
- package/build/dist/Models/AnalyticsModels/Log.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/Metric.js +477 -427
- package/build/dist/Models/AnalyticsModels/Metric.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/MonitorLog.js +95 -90
- package/build/dist/Models/AnalyticsModels/MonitorLog.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/Span.js +449 -400
- package/build/dist/Models/AnalyticsModels/Span.js.map +1 -1
- package/build/dist/Server/Services/AlertService.js +4 -0
- package/build/dist/Server/Services/AlertService.js.map +1 -1
- package/build/dist/Server/Services/IncidentService.js +4 -0
- package/build/dist/Server/Services/IncidentService.js.map +1 -1
- package/build/dist/Server/Services/OpenTelemetryIngestService.js +1 -0
- package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryAttributeService.js +19 -4
- package/build/dist/Server/Services/TelemetryAttributeService.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorResource.js +12 -0
- package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/Telemetry.js +6 -0
- package/build/dist/Server/Utils/Telemetry/Telemetry.js.map +1 -1
- package/build/dist/Types/AnalyticsDatabase/MaterializedView.js +2 -0
- package/build/dist/Types/AnalyticsDatabase/MaterializedView.js.map +1 -0
- package/build/dist/Types/AnalyticsDatabase/Projection.js +2 -0
- package/build/dist/Types/AnalyticsDatabase/Projection.js.map +1 -0
- package/build/dist/Types/Date.js +82 -0
- package/build/dist/Types/Date.js.map +1 -1
- package/build/dist/UI/Components/AutocompleteTextInput/AutocompleteTextInput.js +143 -0
- package/build/dist/UI/Components/AutocompleteTextInput/AutocompleteTextInput.js.map +1 -0
- package/build/dist/UI/Components/Dictionary/Dictionary.js +25 -36
- package/build/dist/UI/Components/Dictionary/Dictionary.js.map +1 -1
- package/build/dist/UI/Components/Filters/JSONFilter.js +2 -2
- package/build/dist/UI/Components/Filters/JSONFilter.js.map +1 -1
- package/build/dist/UI/Components/Forms/Fields/FormField.js +2 -2
- package/build/dist/UI/Components/Forms/Fields/FormField.js.map +1 -1
- package/build/dist/UI/Components/GanttChart/Bar/Index.js +10 -0
- package/build/dist/UI/Components/GanttChart/Bar/Index.js.map +1 -1
- package/build/dist/UI/Components/GanttChart/Index.js +6 -2
- package/build/dist/UI/Components/GanttChart/Index.js.map +1 -1
- package/build/dist/UI/Components/GanttChart/Row/Index.js.map +1 -1
- package/build/dist/UI/Components/GanttChart/Row/Row.js +62 -9
- package/build/dist/UI/Components/GanttChart/Row/Row.js.map +1 -1
- package/build/dist/UI/Components/GanttChart/Row/RowLabel.js +2 -2
- package/build/dist/UI/Components/GanttChart/Row/RowLabel.js.map +1 -1
- package/build/dist/UI/Components/GanttChart/Rows.js +5 -1
- package/build/dist/UI/Components/GanttChart/Rows.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/LogItem.js +73 -5
- package/build/dist/UI/Components/LogsViewer/LogItem.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/LogsViewer.js +7 -1
- package/build/dist/UI/Components/LogsViewer/LogsViewer.js.map +1 -1
- package/package.json +1 -1
|
@@ -17,10 +17,15 @@ import React, { FunctionComponent, ReactElement, useEffect } from "react";
|
|
|
17
17
|
import { Logger } from "../../Utils/Logger";
|
|
18
18
|
import Icon from "../Icon/Icon";
|
|
19
19
|
import IconProp from "../../../Types/Icon/IconProp";
|
|
20
|
+
import Link from "../Link/Link";
|
|
21
|
+
import Route from "../../../Types/API/Route";
|
|
22
|
+
import URL from "../../../Types/API/URL";
|
|
20
23
|
|
|
21
24
|
export interface ComponentProps {
|
|
22
25
|
log: Log;
|
|
23
26
|
serviceMap: Dictionary<TelemetryService>;
|
|
27
|
+
getTraceRoute?: (traceId: string, log: Log) => Route | URL | undefined;
|
|
28
|
+
getSpanRoute?: (spanId: string, log: Log) => Route | URL | undefined;
|
|
24
29
|
}
|
|
25
30
|
|
|
26
31
|
const LogItem: FunctionComponent<ComponentProps> = (
|
|
@@ -56,6 +61,148 @@ const LogItem: FunctionComponent<ComponentProps> = (
|
|
|
56
61
|
);
|
|
57
62
|
};
|
|
58
63
|
|
|
64
|
+
type RenderTraceIdFunction = () => ReactElement;
|
|
65
|
+
|
|
66
|
+
const renderTraceId: RenderTraceIdFunction = (): ReactElement => {
|
|
67
|
+
const traceId: string = props.log.traceId?.toString() || "";
|
|
68
|
+
|
|
69
|
+
const traceRoute: Route | URL | undefined =
|
|
70
|
+
traceId && props.getTraceRoute
|
|
71
|
+
? props.getTraceRoute(traceId, props.log)
|
|
72
|
+
: undefined;
|
|
73
|
+
|
|
74
|
+
const baseContainerClassName: string = `${bodyColor} font-mono text-sm bg-slate-950 px-2.5 py-1.5 rounded border border-slate-800 flex-1 transition-colors`;
|
|
75
|
+
|
|
76
|
+
if (traceRoute) {
|
|
77
|
+
const linkContainerClassName: string = `${baseContainerClassName} flex items-center gap-1 min-w-0 hover:border-blue-500/60 hover:text-blue-200`;
|
|
78
|
+
|
|
79
|
+
return (
|
|
80
|
+
<div
|
|
81
|
+
className="flex-1"
|
|
82
|
+
onClick={(event: React.MouseEvent<HTMLDivElement>) => {
|
|
83
|
+
event.stopPropagation();
|
|
84
|
+
}}
|
|
85
|
+
onAuxClick={(event: React.MouseEvent<HTMLDivElement>) => {
|
|
86
|
+
event.stopPropagation();
|
|
87
|
+
}}
|
|
88
|
+
>
|
|
89
|
+
<Link
|
|
90
|
+
to={traceRoute}
|
|
91
|
+
className="group flex-1 min-w-0 block hover:no-underline"
|
|
92
|
+
>
|
|
93
|
+
<div
|
|
94
|
+
className={linkContainerClassName}
|
|
95
|
+
title={`View trace ${traceId}`}
|
|
96
|
+
>
|
|
97
|
+
<span className="truncate underline underline-offset-2 decoration-slate-500 group-hover:decoration-blue-300">
|
|
98
|
+
{traceId}
|
|
99
|
+
</span>
|
|
100
|
+
<Icon
|
|
101
|
+
icon={IconProp.ExternalLink}
|
|
102
|
+
className="w-3.5 h-3.5 flex-none text-slate-500 group-hover:text-blue-300"
|
|
103
|
+
/>
|
|
104
|
+
</div>
|
|
105
|
+
</Link>
|
|
106
|
+
</div>
|
|
107
|
+
);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
return (
|
|
111
|
+
<div className={`${baseContainerClassName} truncate`} title={traceId}>
|
|
112
|
+
{traceId}
|
|
113
|
+
</div>
|
|
114
|
+
);
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
type RenderSpanIdFunction = () => ReactElement;
|
|
118
|
+
|
|
119
|
+
const renderSpanId: RenderSpanIdFunction = (): ReactElement => {
|
|
120
|
+
const spanId: string = props.log.spanId?.toString() || "";
|
|
121
|
+
|
|
122
|
+
if (!spanId) {
|
|
123
|
+
return (
|
|
124
|
+
<div className="text-slate-500 italic text-sm" title="No span id">
|
|
125
|
+
No span
|
|
126
|
+
</div>
|
|
127
|
+
);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
const resolveSpanRoute: () => Route | URL | undefined = () => {
|
|
131
|
+
if (props.getSpanRoute) {
|
|
132
|
+
return props.getSpanRoute(spanId, props.log);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
if (props.getTraceRoute && props.log.traceId) {
|
|
136
|
+
const baseRoute: Route | URL | undefined = props.getTraceRoute(
|
|
137
|
+
props.log.traceId.toString(),
|
|
138
|
+
props.log,
|
|
139
|
+
);
|
|
140
|
+
|
|
141
|
+
if (!baseRoute) {
|
|
142
|
+
return undefined;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
if (baseRoute instanceof Route) {
|
|
146
|
+
const clonedRoute: Route = new Route(baseRoute.toString());
|
|
147
|
+
clonedRoute.addQueryParams({ spanId });
|
|
148
|
+
return clonedRoute;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
if (baseRoute instanceof URL) {
|
|
152
|
+
const clonedURL: URL = URL.fromURL(baseRoute);
|
|
153
|
+
clonedURL.addQueryParam("spanId", spanId);
|
|
154
|
+
return clonedURL;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
return undefined;
|
|
159
|
+
};
|
|
160
|
+
|
|
161
|
+
const spanRoute: Route | URL | undefined = resolveSpanRoute();
|
|
162
|
+
|
|
163
|
+
const baseContainerClassName: string = `${bodyColor} font-mono text-sm bg-slate-950 px-2.5 py-1.5 rounded border border-slate-800 flex-1 transition-colors`;
|
|
164
|
+
|
|
165
|
+
if (spanRoute) {
|
|
166
|
+
const linkContainerClassName: string = `${baseContainerClassName} flex items-center gap-1 min-w-0 hover:border-blue-500/60 hover:text-blue-200`;
|
|
167
|
+
|
|
168
|
+
return (
|
|
169
|
+
<div
|
|
170
|
+
className="flex-1"
|
|
171
|
+
onClick={(event: React.MouseEvent<HTMLDivElement>) => {
|
|
172
|
+
event.stopPropagation();
|
|
173
|
+
}}
|
|
174
|
+
onAuxClick={(event: React.MouseEvent<HTMLDivElement>) => {
|
|
175
|
+
event.stopPropagation();
|
|
176
|
+
}}
|
|
177
|
+
>
|
|
178
|
+
<Link
|
|
179
|
+
to={spanRoute}
|
|
180
|
+
className="group flex-1 min-w-0 block hover:no-underline"
|
|
181
|
+
>
|
|
182
|
+
<div
|
|
183
|
+
className={linkContainerClassName}
|
|
184
|
+
title={`View span ${spanId}`}
|
|
185
|
+
>
|
|
186
|
+
<span className={`truncate underline underline-offset-2`}>
|
|
187
|
+
{spanId}
|
|
188
|
+
</span>
|
|
189
|
+
<Icon
|
|
190
|
+
icon={IconProp.ExternalLink}
|
|
191
|
+
className={`w-3.5 h-3.5 flex-none`}
|
|
192
|
+
/>
|
|
193
|
+
</div>
|
|
194
|
+
</Link>
|
|
195
|
+
</div>
|
|
196
|
+
);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
return (
|
|
200
|
+
<div className={`${baseContainerClassName} truncate`} title={spanId}>
|
|
201
|
+
{spanId}
|
|
202
|
+
</div>
|
|
203
|
+
);
|
|
204
|
+
};
|
|
205
|
+
|
|
59
206
|
if (props.log.severityText === LogSeverity.Warning) {
|
|
60
207
|
bodyColor = "text-amber-400";
|
|
61
208
|
leftBorderColor = "border-l-amber-500/60";
|
|
@@ -295,11 +442,7 @@ const LogItem: FunctionComponent<ComponentProps> = (
|
|
|
295
442
|
Trace ID
|
|
296
443
|
</div>
|
|
297
444
|
<div className="flex items-center space-x-2">
|
|
298
|
-
|
|
299
|
-
className={`${bodyColor} font-mono text-sm bg-slate-950 px-2.5 py-1.5 rounded border border-slate-800 flex-1 truncate`}
|
|
300
|
-
>
|
|
301
|
-
{props.log.traceId?.toString()}
|
|
302
|
-
</div>
|
|
445
|
+
{renderTraceId()}
|
|
303
446
|
{getCopyButton(props.log.traceId?.toString() || "")}
|
|
304
447
|
</div>
|
|
305
448
|
</div>
|
|
@@ -311,11 +454,7 @@ const LogItem: FunctionComponent<ComponentProps> = (
|
|
|
311
454
|
Span ID
|
|
312
455
|
</div>
|
|
313
456
|
<div className="flex items-center space-x-2">
|
|
314
|
-
|
|
315
|
-
className={`${bodyColor} font-mono text-sm bg-slate-950 px-2.5 py-1.5 rounded border border-slate-800 flex-1 truncate`}
|
|
316
|
-
>
|
|
317
|
-
{props.log.spanId?.toString()}
|
|
318
|
-
</div>
|
|
457
|
+
{renderSpanId()}
|
|
319
458
|
{getCopyButton(props.log.spanId?.toString() || "")}
|
|
320
459
|
</div>
|
|
321
460
|
</div>
|
|
@@ -21,6 +21,7 @@ import Card from "../Card/Card";
|
|
|
21
21
|
import Button, { ButtonSize, ButtonStyleType } from "../Button/Button";
|
|
22
22
|
import IconProp from "../../../Types/Icon/IconProp";
|
|
23
23
|
import ModelAPI from "../../Utils/ModelAPI/ModelAPI";
|
|
24
|
+
import Route from "../../../Types/API/Route";
|
|
24
25
|
import URL from "../../../Types/API/URL";
|
|
25
26
|
import HTTPResponse from "../../../Types/API/HTTPResponse";
|
|
26
27
|
import { JSONObject } from "../../../Types/JSON";
|
|
@@ -42,8 +43,18 @@ export interface ComponentProps {
|
|
|
42
43
|
isLoading: boolean;
|
|
43
44
|
showFilters?: boolean | undefined;
|
|
44
45
|
noLogsMessage?: string | undefined;
|
|
46
|
+
getTraceRoute?: (traceId: string, log: Log) => Route | URL | undefined;
|
|
47
|
+
getSpanRoute?: (spanId: string, log: Log) => Route | URL | undefined;
|
|
45
48
|
}
|
|
46
49
|
|
|
50
|
+
type OptionalTraceRouteProps = {
|
|
51
|
+
getTraceRoute?: (traceId: string, log: Log) => Route | URL | undefined;
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
type OptionalSpanRouteProps = {
|
|
55
|
+
getSpanRoute?: (spanId: string, log: Log) => Route | URL | undefined;
|
|
56
|
+
};
|
|
57
|
+
|
|
47
58
|
const LogsViewer: FunctionComponent<ComponentProps> = (
|
|
48
59
|
props: ComponentProps,
|
|
49
60
|
): ReactElement => {
|
|
@@ -332,9 +343,22 @@ const LogsViewer: FunctionComponent<ComponentProps> = (
|
|
|
332
343
|
>
|
|
333
344
|
<ul role="list" className="divide-y divide-slate-800">
|
|
334
345
|
{props.logs.map((log: Log, i: number) => {
|
|
346
|
+
const traceRouteProps: OptionalTraceRouteProps =
|
|
347
|
+
props.getTraceRoute
|
|
348
|
+
? { getTraceRoute: props.getTraceRoute }
|
|
349
|
+
: {};
|
|
350
|
+
const spanRouteProps: OptionalSpanRouteProps =
|
|
351
|
+
props.getSpanRoute
|
|
352
|
+
? { getSpanRoute: props.getSpanRoute }
|
|
353
|
+
: {};
|
|
335
354
|
return (
|
|
336
355
|
<li key={i} className="py-1 first:pt-0 last:pb-0">
|
|
337
|
-
<LogItem
|
|
356
|
+
<LogItem
|
|
357
|
+
serviceMap={serviceMap}
|
|
358
|
+
log={log}
|
|
359
|
+
{...traceRouteProps}
|
|
360
|
+
{...spanRouteProps}
|
|
361
|
+
/>
|
|
338
362
|
</li>
|
|
339
363
|
);
|
|
340
364
|
})}
|
|
@@ -18,6 +18,8 @@ export default class AnalyticsBaseModel extends CommonModel {
|
|
|
18
18
|
this._pluralName = "";
|
|
19
19
|
this._allowAccessIfSubscriptionIsUnpaid = false;
|
|
20
20
|
this._tableName = "";
|
|
21
|
+
this._projections = [];
|
|
22
|
+
this._materializedViews = [];
|
|
21
23
|
this.tableName = data.tableName;
|
|
22
24
|
const columns = [...data.tableColumns];
|
|
23
25
|
if (data.tableEngine) {
|
|
@@ -83,6 +85,8 @@ export default class AnalyticsBaseModel extends CommonModel {
|
|
|
83
85
|
this.crudApiPath = data.crudApiPath;
|
|
84
86
|
this.enableRealtimeEventsOn = data.enableRealtimeEventsOn;
|
|
85
87
|
this.partitionKey = data.partitionKey;
|
|
88
|
+
this.projections = data.projections || [];
|
|
89
|
+
this.materializedViews = data.materializedViews || [];
|
|
86
90
|
}
|
|
87
91
|
get enableWorkflowOn() {
|
|
88
92
|
return this._enableWorkflowOn;
|
|
@@ -162,6 +166,18 @@ export default class AnalyticsBaseModel extends CommonModel {
|
|
|
162
166
|
set crudApiPath(v) {
|
|
163
167
|
this._crudApiPath = v;
|
|
164
168
|
}
|
|
169
|
+
get projections() {
|
|
170
|
+
return this._projections;
|
|
171
|
+
}
|
|
172
|
+
set projections(v) {
|
|
173
|
+
this._projections = v;
|
|
174
|
+
}
|
|
175
|
+
get materializedViews() {
|
|
176
|
+
return this._materializedViews;
|
|
177
|
+
}
|
|
178
|
+
set materializedViews(v) {
|
|
179
|
+
this._materializedViews = v;
|
|
180
|
+
}
|
|
165
181
|
getTenantColumn() {
|
|
166
182
|
const column = this.tableColumns.find((column) => {
|
|
167
183
|
return column.isTenantId;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnalyticsBaseModel.js","sourceRoot":"","sources":["../../../../../Models/AnalyticsModels/AnalyticsBaseModel/AnalyticsBaseModel.ts"],"names":[],"mappings":"AAEA,OAAO,oBAAoB,MAAM,uDAAuD,CAAC;AACzF,OAAO,oBAAoB,MAAM,8CAA8C,CAAC;AAChF,OAAO,eAAe,MAAM,kDAAkD,CAAC;
|
|
1
|
+
{"version":3,"file":"AnalyticsBaseModel.js","sourceRoot":"","sources":["../../../../../Models/AnalyticsModels/AnalyticsBaseModel/AnalyticsBaseModel.ts"],"names":[],"mappings":"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"}
|