@oneuptime/common 10.0.30 → 10.0.33
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/ExceptionInstance.ts +29 -4
- package/Models/AnalyticsModels/Log.ts +110 -4
- package/Models/AnalyticsModels/Metric.ts +16 -9
- package/Models/AnalyticsModels/MonitorLog.ts +4 -2
- package/Models/AnalyticsModels/Span.ts +79 -6
- package/Models/DatabaseModels/Index.ts +8 -0
- package/Models/DatabaseModels/LogDropFilter.ts +480 -0
- package/Models/DatabaseModels/LogPipeline.ts +412 -0
- package/Models/DatabaseModels/LogPipelineProcessor.ts +430 -0
- package/Models/DatabaseModels/LogScrubRule.ts +516 -0
- package/Server/API/TelemetryAPI.ts +261 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1773402621107-MigrationName.ts +131 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1773414578773-MigrationName.ts +79 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1773500000000-MigrationName.ts +41 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1773676206197-MigrationName.ts +57 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +4 -0
- package/Server/Services/AnalyticsDatabaseService.ts +61 -0
- package/Server/Services/LogAggregationService.ts +238 -1
- package/Server/Services/LogDropFilterService.ts +10 -0
- package/Server/Services/LogPipelineProcessorService.ts +10 -0
- package/Server/Services/LogPipelineService.ts +10 -0
- package/Server/Services/LogScrubRuleService.ts +10 -0
- package/Server/Services/TelemetryAttributeService.ts +4 -6
- package/Server/Utils/AnalyticsDatabase/Statement.ts +15 -1
- package/Server/Utils/AnalyticsDatabase/StatementGenerator.ts +126 -11
- package/Tests/Server/Services/LogAggregationService.test.ts +3 -2
- package/Types/AnalyticsDatabase/AnalyticsTableName.ts +9 -0
- package/Types/AnalyticsDatabase/TableColumnType.ts +4 -0
- package/Types/Date.ts +22 -0
- package/Types/Log/LogDropFilterAction.ts +6 -0
- package/Types/Log/LogPipelineProcessorType.ts +44 -0
- package/Types/Log/LogScrubAction.ts +7 -0
- package/Types/Log/LogScrubPatternType.ts +10 -0
- package/Types/Permission.ts +174 -0
- package/UI/Components/LogsViewer/LogsViewer.tsx +152 -4
- package/UI/Components/LogsViewer/components/KeyboardShortcutsHelp.tsx +92 -0
- package/UI/Components/LogsViewer/components/LogDetailsPanel.tsx +332 -117
- package/UI/Components/LogsViewer/components/LogSearchBar.tsx +294 -274
- package/UI/Components/LogsViewer/components/LogsAnalyticsView.tsx +513 -234
- package/UI/Components/LogsViewer/components/LogsFilterCard.tsx +37 -29
- package/UI/Components/LogsViewer/components/LogsTable.tsx +6 -1
- package/UI/Components/LogsViewer/components/LogsViewerToolbar.tsx +106 -0
- package/UI/Utils/LogExport.ts +160 -0
- package/build/dist/Models/AnalyticsModels/ExceptionInstance.js +28 -4
- package/build/dist/Models/AnalyticsModels/ExceptionInstance.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/Log.js +97 -4
- package/build/dist/Models/AnalyticsModels/Log.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/Metric.js +16 -9
- package/build/dist/Models/AnalyticsModels/Metric.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/MonitorLog.js +4 -2
- package/build/dist/Models/AnalyticsModels/MonitorLog.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/Span.js +73 -6
- package/build/dist/Models/AnalyticsModels/Span.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Index.js +8 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/LogDropFilter.js +508 -0
- package/build/dist/Models/DatabaseModels/LogDropFilter.js.map +1 -0
- package/build/dist/Models/DatabaseModels/LogPipeline.js +438 -0
- package/build/dist/Models/DatabaseModels/LogPipeline.js.map +1 -0
- package/build/dist/Models/DatabaseModels/LogPipelineProcessor.js +452 -0
- package/build/dist/Models/DatabaseModels/LogPipelineProcessor.js.map +1 -0
- package/build/dist/Models/DatabaseModels/LogScrubRule.js +545 -0
- package/build/dist/Models/DatabaseModels/LogScrubRule.js.map +1 -0
- package/build/dist/Server/API/TelemetryAPI.js +155 -0
- package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1773402621107-MigrationName.js +52 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1773402621107-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1773414578773-MigrationName.js +34 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1773414578773-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1773500000000-MigrationName.js +22 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1773500000000-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1773676206197-MigrationName.js +26 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1773676206197-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +4 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Services/AnalyticsDatabaseService.js +30 -0
- package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
- package/build/dist/Server/Services/LogAggregationService.js +188 -1
- package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
- package/build/dist/Server/Services/LogDropFilterService.js +9 -0
- package/build/dist/Server/Services/LogDropFilterService.js.map +1 -0
- package/build/dist/Server/Services/LogPipelineProcessorService.js +9 -0
- package/build/dist/Server/Services/LogPipelineProcessorService.js.map +1 -0
- package/build/dist/Server/Services/LogPipelineService.js +9 -0
- package/build/dist/Server/Services/LogPipelineService.js.map +1 -0
- package/build/dist/Server/Services/LogScrubRuleService.js +9 -0
- package/build/dist/Server/Services/LogScrubRuleService.js.map +1 -0
- package/build/dist/Server/Services/TelemetryAttributeService.js +4 -6
- package/build/dist/Server/Services/TelemetryAttributeService.js.map +1 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/Statement.js +13 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/Statement.js.map +1 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js +89 -2
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js.map +1 -1
- package/build/dist/Tests/Server/Services/LogAggregationService.test.js +3 -2
- package/build/dist/Tests/Server/Services/LogAggregationService.test.js.map +1 -1
- package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js +10 -0
- package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js.map +1 -0
- package/build/dist/Types/AnalyticsDatabase/TableColumnType.js +4 -0
- package/build/dist/Types/AnalyticsDatabase/TableColumnType.js.map +1 -1
- package/build/dist/Types/Date.js +16 -0
- package/build/dist/Types/Date.js.map +1 -1
- package/build/dist/Types/Log/LogDropFilterAction.js +7 -0
- package/build/dist/Types/Log/LogDropFilterAction.js.map +1 -0
- package/build/dist/Types/Log/LogPipelineProcessorType.js +9 -0
- package/build/dist/Types/Log/LogPipelineProcessorType.js.map +1 -0
- package/build/dist/Types/Log/LogScrubAction.js +8 -0
- package/build/dist/Types/Log/LogScrubAction.js.map +1 -0
- package/build/dist/Types/Log/LogScrubPatternType.js +11 -0
- package/build/dist/Types/Log/LogScrubPatternType.js.map +1 -0
- package/build/dist/Types/Permission.js +152 -0
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/LogsViewer.js +124 -11
- package/build/dist/UI/Components/LogsViewer/LogsViewer.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/KeyboardShortcutsHelp.js +36 -0
- package/build/dist/UI/Components/LogsViewer/components/KeyboardShortcutsHelp.js.map +1 -0
- package/build/dist/UI/Components/LogsViewer/components/LogDetailsPanel.js +114 -4
- package/build/dist/UI/Components/LogsViewer/components/LogDetailsPanel.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogSearchBar.js +17 -5
- package/build/dist/UI/Components/LogsViewer/components/LogSearchBar.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js +229 -122
- package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogsFilterCard.js +5 -4
- package/build/dist/UI/Components/LogsViewer/components/LogsFilterCard.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogsTable.js +4 -1
- package/build/dist/UI/Components/LogsViewer/components/LogsTable.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogsViewerToolbar.js +28 -0
- package/build/dist/UI/Components/LogsViewer/components/LogsViewerToolbar.js.map +1 -1
- package/build/dist/UI/Utils/LogExport.js +129 -0
- package/build/dist/UI/Utils/LogExport.js.map +1 -0
- package/package.json +1 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import AnalyticsBaseModel from "./AnalyticsBaseModel/AnalyticsBaseModel";
|
|
2
2
|
import Route from "../../Types/API/Route";
|
|
3
3
|
import AnalyticsTableEngine from "../../Types/AnalyticsDatabase/AnalyticsTableEngine";
|
|
4
|
+
import AnalyticsTableName from "../../Types/AnalyticsDatabase/AnalyticsTableName";
|
|
4
5
|
import AnalyticsTableColumn, {
|
|
5
6
|
SkipIndexType,
|
|
6
7
|
} from "../../Types/AnalyticsDatabase/TableColumn";
|
|
@@ -63,7 +64,7 @@ export default class ExceptionInstance extends AnalyticsBaseModel {
|
|
|
63
64
|
title: "Time",
|
|
64
65
|
description: "When was the log created?",
|
|
65
66
|
required: true,
|
|
66
|
-
type: TableColumnType.
|
|
67
|
+
type: TableColumnType.DateTime64,
|
|
67
68
|
accessControl: {
|
|
68
69
|
read: [
|
|
69
70
|
Permission.ProjectOwner,
|
|
@@ -328,6 +329,12 @@ export default class ExceptionInstance extends AnalyticsBaseModel {
|
|
|
328
329
|
description: "Name of the span",
|
|
329
330
|
required: false,
|
|
330
331
|
type: TableColumnType.Text,
|
|
332
|
+
skipIndex: {
|
|
333
|
+
name: "idx_span_name",
|
|
334
|
+
type: SkipIndexType.TokenBF,
|
|
335
|
+
params: [10240, 3, 0],
|
|
336
|
+
granularity: 4,
|
|
337
|
+
},
|
|
331
338
|
accessControl: {
|
|
332
339
|
read: [
|
|
333
340
|
Permission.ProjectOwner,
|
|
@@ -352,6 +359,12 @@ export default class ExceptionInstance extends AnalyticsBaseModel {
|
|
|
352
359
|
"Service version / release from service.version resource attribute",
|
|
353
360
|
required: false,
|
|
354
361
|
type: TableColumnType.Text,
|
|
362
|
+
skipIndex: {
|
|
363
|
+
name: "idx_release",
|
|
364
|
+
type: SkipIndexType.Set,
|
|
365
|
+
params: [100],
|
|
366
|
+
granularity: 4,
|
|
367
|
+
},
|
|
355
368
|
accessControl: {
|
|
356
369
|
read: [
|
|
357
370
|
Permission.ProjectOwner,
|
|
@@ -376,6 +389,12 @@ export default class ExceptionInstance extends AnalyticsBaseModel {
|
|
|
376
389
|
"Deployment environment from deployment.environment resource attribute",
|
|
377
390
|
required: false,
|
|
378
391
|
type: TableColumnType.Text,
|
|
392
|
+
skipIndex: {
|
|
393
|
+
name: "idx_environment",
|
|
394
|
+
type: SkipIndexType.Set,
|
|
395
|
+
params: [10],
|
|
396
|
+
granularity: 4,
|
|
397
|
+
},
|
|
379
398
|
accessControl: {
|
|
380
399
|
read: [
|
|
381
400
|
Permission.ProjectOwner,
|
|
@@ -422,7 +441,7 @@ export default class ExceptionInstance extends AnalyticsBaseModel {
|
|
|
422
441
|
description: "Attributes",
|
|
423
442
|
required: true,
|
|
424
443
|
defaultValue: {},
|
|
425
|
-
type: TableColumnType.
|
|
444
|
+
type: TableColumnType.MapStringString,
|
|
426
445
|
accessControl: {
|
|
427
446
|
read: [
|
|
428
447
|
Permission.ProjectOwner,
|
|
@@ -451,7 +470,7 @@ export default class ExceptionInstance extends AnalyticsBaseModel {
|
|
|
451
470
|
});
|
|
452
471
|
|
|
453
472
|
super({
|
|
454
|
-
tableName:
|
|
473
|
+
tableName: AnalyticsTableName.ExceptionInstance,
|
|
455
474
|
tableEngine: AnalyticsTableEngine.MergeTree,
|
|
456
475
|
singularName: "Exception Instance",
|
|
457
476
|
pluralName: "Exception Instances",
|
|
@@ -505,7 +524,13 @@ export default class ExceptionInstance extends AnalyticsBaseModel {
|
|
|
505
524
|
attributesColumn,
|
|
506
525
|
retentionDateColumn,
|
|
507
526
|
],
|
|
508
|
-
projections: [
|
|
527
|
+
projections: [
|
|
528
|
+
{
|
|
529
|
+
name: "proj_exception_group",
|
|
530
|
+
query:
|
|
531
|
+
"SELECT projectId, serviceId, fingerprint, exceptionType, count() AS cnt, max(time) AS last_seen GROUP BY projectId, serviceId, fingerprint, exceptionType",
|
|
532
|
+
},
|
|
533
|
+
],
|
|
509
534
|
sortKeys: ["projectId", "time", "serviceId", "fingerprint"],
|
|
510
535
|
primaryKeys: ["projectId", "time", "serviceId", "fingerprint"],
|
|
511
536
|
partitionKey: "sipHash64(projectId) % 16",
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import AnalyticsBaseModel from "./AnalyticsBaseModel/AnalyticsBaseModel";
|
|
2
2
|
import Route from "../../Types/API/Route";
|
|
3
3
|
import AnalyticsTableEngine from "../../Types/AnalyticsDatabase/AnalyticsTableEngine";
|
|
4
|
+
import AnalyticsTableName from "../../Types/AnalyticsDatabase/AnalyticsTableName";
|
|
4
5
|
import AnalyticsTableColumn, {
|
|
5
6
|
SkipIndexType,
|
|
6
7
|
} from "../../Types/AnalyticsDatabase/TableColumn";
|
|
@@ -64,7 +65,7 @@ export default class Log extends AnalyticsBaseModel {
|
|
|
64
65
|
title: "Time",
|
|
65
66
|
description: "When was the log created?",
|
|
66
67
|
required: true,
|
|
67
|
-
type: TableColumnType.
|
|
68
|
+
type: TableColumnType.DateTime64,
|
|
68
69
|
accessControl: {
|
|
69
70
|
read: [
|
|
70
71
|
Permission.ProjectOwner,
|
|
@@ -165,7 +166,7 @@ export default class Log extends AnalyticsBaseModel {
|
|
|
165
166
|
description: "Attributes",
|
|
166
167
|
required: true,
|
|
167
168
|
defaultValue: {},
|
|
168
|
-
type: TableColumnType.
|
|
169
|
+
type: TableColumnType.MapStringString,
|
|
169
170
|
accessControl: {
|
|
170
171
|
read: [
|
|
171
172
|
Permission.ProjectOwner,
|
|
@@ -298,6 +299,78 @@ export default class Log extends AnalyticsBaseModel {
|
|
|
298
299
|
},
|
|
299
300
|
});
|
|
300
301
|
|
|
302
|
+
const observedTimeUnixNanoColumn: AnalyticsTableColumn =
|
|
303
|
+
new AnalyticsTableColumn({
|
|
304
|
+
key: "observedTimeUnixNano",
|
|
305
|
+
title: "Observed Time (in Unix Nano)",
|
|
306
|
+
description:
|
|
307
|
+
"When the log was observed/collected by the telemetry pipeline",
|
|
308
|
+
required: false,
|
|
309
|
+
type: TableColumnType.LongNumber,
|
|
310
|
+
accessControl: {
|
|
311
|
+
read: [
|
|
312
|
+
Permission.ProjectOwner,
|
|
313
|
+
Permission.ProjectAdmin,
|
|
314
|
+
Permission.ProjectMember,
|
|
315
|
+
Permission.ReadTelemetryServiceLog,
|
|
316
|
+
],
|
|
317
|
+
create: [
|
|
318
|
+
Permission.ProjectOwner,
|
|
319
|
+
Permission.ProjectAdmin,
|
|
320
|
+
Permission.ProjectMember,
|
|
321
|
+
Permission.CreateTelemetryServiceLog,
|
|
322
|
+
],
|
|
323
|
+
update: [],
|
|
324
|
+
},
|
|
325
|
+
});
|
|
326
|
+
|
|
327
|
+
const droppedAttributesCountColumn: AnalyticsTableColumn =
|
|
328
|
+
new AnalyticsTableColumn({
|
|
329
|
+
key: "droppedAttributesCount",
|
|
330
|
+
title: "Dropped Attributes Count",
|
|
331
|
+
description: "Number of attributes that were dropped during collection",
|
|
332
|
+
required: false,
|
|
333
|
+
type: TableColumnType.Number,
|
|
334
|
+
accessControl: {
|
|
335
|
+
read: [
|
|
336
|
+
Permission.ProjectOwner,
|
|
337
|
+
Permission.ProjectAdmin,
|
|
338
|
+
Permission.ProjectMember,
|
|
339
|
+
Permission.ReadTelemetryServiceLog,
|
|
340
|
+
],
|
|
341
|
+
create: [
|
|
342
|
+
Permission.ProjectOwner,
|
|
343
|
+
Permission.ProjectAdmin,
|
|
344
|
+
Permission.ProjectMember,
|
|
345
|
+
Permission.CreateTelemetryServiceLog,
|
|
346
|
+
],
|
|
347
|
+
update: [],
|
|
348
|
+
},
|
|
349
|
+
});
|
|
350
|
+
|
|
351
|
+
const flagsColumn: AnalyticsTableColumn = new AnalyticsTableColumn({
|
|
352
|
+
key: "flags",
|
|
353
|
+
title: "Flags",
|
|
354
|
+
description: "Log record flags (e.g., W3C trace flags)",
|
|
355
|
+
required: false,
|
|
356
|
+
type: TableColumnType.Number,
|
|
357
|
+
accessControl: {
|
|
358
|
+
read: [
|
|
359
|
+
Permission.ProjectOwner,
|
|
360
|
+
Permission.ProjectAdmin,
|
|
361
|
+
Permission.ProjectMember,
|
|
362
|
+
Permission.ReadTelemetryServiceLog,
|
|
363
|
+
],
|
|
364
|
+
create: [
|
|
365
|
+
Permission.ProjectOwner,
|
|
366
|
+
Permission.ProjectAdmin,
|
|
367
|
+
Permission.ProjectMember,
|
|
368
|
+
Permission.CreateTelemetryServiceLog,
|
|
369
|
+
],
|
|
370
|
+
update: [],
|
|
371
|
+
},
|
|
372
|
+
});
|
|
373
|
+
|
|
301
374
|
const retentionDateColumn: AnalyticsTableColumn = new AnalyticsTableColumn({
|
|
302
375
|
key: "retentionDate",
|
|
303
376
|
title: "Retention Date",
|
|
@@ -309,7 +382,7 @@ export default class Log extends AnalyticsBaseModel {
|
|
|
309
382
|
});
|
|
310
383
|
|
|
311
384
|
super({
|
|
312
|
-
tableName:
|
|
385
|
+
tableName: AnalyticsTableName.Log,
|
|
313
386
|
tableEngine: AnalyticsTableEngine.MergeTree,
|
|
314
387
|
singularName: "Log",
|
|
315
388
|
accessControl: {
|
|
@@ -352,9 +425,18 @@ export default class Log extends AnalyticsBaseModel {
|
|
|
352
425
|
traceIdColumn,
|
|
353
426
|
spanIdColumn,
|
|
354
427
|
bodyColumn,
|
|
428
|
+
observedTimeUnixNanoColumn,
|
|
429
|
+
droppedAttributesCountColumn,
|
|
430
|
+
flagsColumn,
|
|
355
431
|
retentionDateColumn,
|
|
356
432
|
],
|
|
357
|
-
projections: [
|
|
433
|
+
projections: [
|
|
434
|
+
{
|
|
435
|
+
name: "proj_severity_histogram",
|
|
436
|
+
query:
|
|
437
|
+
"SELECT projectId, severityText, toStartOfInterval(time, INTERVAL 1 MINUTE) AS minute, count() AS cnt GROUP BY projectId, severityText, minute",
|
|
438
|
+
},
|
|
439
|
+
],
|
|
358
440
|
sortKeys: ["projectId", "time", "serviceId"],
|
|
359
441
|
primaryKeys: ["projectId", "time", "serviceId"],
|
|
360
442
|
partitionKey: "sipHash64(projectId) % 16",
|
|
@@ -450,6 +532,30 @@ export default class Log extends AnalyticsBaseModel {
|
|
|
450
532
|
this.setColumnValue("spanId", v);
|
|
451
533
|
}
|
|
452
534
|
|
|
535
|
+
public get observedTimeUnixNano(): number | undefined {
|
|
536
|
+
return this.getColumnValue("observedTimeUnixNano") as number | undefined;
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
public set observedTimeUnixNano(v: number | undefined) {
|
|
540
|
+
this.setColumnValue("observedTimeUnixNano", v);
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
public get droppedAttributesCount(): number | undefined {
|
|
544
|
+
return this.getColumnValue("droppedAttributesCount") as number | undefined;
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
public set droppedAttributesCount(v: number | undefined) {
|
|
548
|
+
this.setColumnValue("droppedAttributesCount", v);
|
|
549
|
+
}
|
|
550
|
+
|
|
551
|
+
public get flags(): number | undefined {
|
|
552
|
+
return this.getColumnValue("flags") as number | undefined;
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
public set flags(v: number | undefined) {
|
|
556
|
+
this.setColumnValue("flags", v);
|
|
557
|
+
}
|
|
558
|
+
|
|
453
559
|
public get retentionDate(): Date | undefined {
|
|
454
560
|
return this.getColumnValue("retentionDate") as Date | undefined;
|
|
455
561
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import AnalyticsBaseModel from "./AnalyticsBaseModel/AnalyticsBaseModel";
|
|
2
2
|
import Route from "../../Types/API/Route";
|
|
3
3
|
import AnalyticsTableEngine from "../../Types/AnalyticsDatabase/AnalyticsTableEngine";
|
|
4
|
+
import AnalyticsTableName from "../../Types/AnalyticsDatabase/AnalyticsTableName";
|
|
4
5
|
import AnalyticsTableColumn, {
|
|
5
6
|
SkipIndexType,
|
|
6
7
|
} from "../../Types/AnalyticsDatabase/TableColumn";
|
|
@@ -169,6 +170,12 @@ export default class Metric extends AnalyticsBaseModel {
|
|
|
169
170
|
description: "Metric Point Type of this Metric",
|
|
170
171
|
required: false,
|
|
171
172
|
type: TableColumnType.Text,
|
|
173
|
+
skipIndex: {
|
|
174
|
+
name: "idx_metric_point_type",
|
|
175
|
+
type: SkipIndexType.Set,
|
|
176
|
+
params: [5],
|
|
177
|
+
granularity: 4,
|
|
178
|
+
},
|
|
172
179
|
accessControl: {
|
|
173
180
|
read: [
|
|
174
181
|
Permission.ProjectOwner,
|
|
@@ -192,7 +199,7 @@ export default class Metric extends AnalyticsBaseModel {
|
|
|
192
199
|
title: "Time",
|
|
193
200
|
description: "When did the Metric happen?",
|
|
194
201
|
required: true,
|
|
195
|
-
type: TableColumnType.
|
|
202
|
+
type: TableColumnType.DateTime64,
|
|
196
203
|
accessControl: {
|
|
197
204
|
read: [
|
|
198
205
|
Permission.ProjectOwner,
|
|
@@ -215,7 +222,7 @@ export default class Metric extends AnalyticsBaseModel {
|
|
|
215
222
|
title: "Start Time",
|
|
216
223
|
description: "When did the Metric happen?",
|
|
217
224
|
required: false,
|
|
218
|
-
type: TableColumnType.
|
|
225
|
+
type: TableColumnType.DateTime64,
|
|
219
226
|
accessControl: {
|
|
220
227
|
read: [
|
|
221
228
|
Permission.ProjectOwner,
|
|
@@ -286,7 +293,7 @@ export default class Metric extends AnalyticsBaseModel {
|
|
|
286
293
|
title: "Attributes",
|
|
287
294
|
description: "Attributes",
|
|
288
295
|
required: true,
|
|
289
|
-
type: TableColumnType.
|
|
296
|
+
type: TableColumnType.MapStringString,
|
|
290
297
|
defaultValue: {},
|
|
291
298
|
accessControl: {
|
|
292
299
|
read: [
|
|
@@ -357,7 +364,7 @@ export default class Metric extends AnalyticsBaseModel {
|
|
|
357
364
|
title: "Count",
|
|
358
365
|
description: "Count",
|
|
359
366
|
required: false,
|
|
360
|
-
type: TableColumnType.
|
|
367
|
+
type: TableColumnType.BigNumber,
|
|
361
368
|
accessControl: {
|
|
362
369
|
read: [
|
|
363
370
|
Permission.ProjectOwner,
|
|
@@ -473,7 +480,7 @@ export default class Metric extends AnalyticsBaseModel {
|
|
|
473
480
|
description: "Bucket Counts",
|
|
474
481
|
required: true,
|
|
475
482
|
defaultValue: [],
|
|
476
|
-
type: TableColumnType.
|
|
483
|
+
type: TableColumnType.ArrayBigNumber,
|
|
477
484
|
accessControl: {
|
|
478
485
|
read: [
|
|
479
486
|
Permission.ProjectOwner,
|
|
@@ -498,7 +505,7 @@ export default class Metric extends AnalyticsBaseModel {
|
|
|
498
505
|
description: "Explicit Bonds",
|
|
499
506
|
required: true,
|
|
500
507
|
defaultValue: [],
|
|
501
|
-
type: TableColumnType.
|
|
508
|
+
type: TableColumnType.ArrayBigNumber,
|
|
502
509
|
accessControl: {
|
|
503
510
|
read: [
|
|
504
511
|
Permission.ProjectOwner,
|
|
@@ -528,7 +535,7 @@ export default class Metric extends AnalyticsBaseModel {
|
|
|
528
535
|
});
|
|
529
536
|
|
|
530
537
|
super({
|
|
531
|
-
tableName:
|
|
538
|
+
tableName: AnalyticsTableName.Metric,
|
|
532
539
|
tableEngine: AnalyticsTableEngine.MergeTree,
|
|
533
540
|
singularName: "Metric",
|
|
534
541
|
pluralName: "Metrics",
|
|
@@ -583,8 +590,8 @@ export default class Metric extends AnalyticsBaseModel {
|
|
|
583
590
|
retentionDateColumn,
|
|
584
591
|
],
|
|
585
592
|
projections: [],
|
|
586
|
-
sortKeys: ["projectId", "
|
|
587
|
-
primaryKeys: ["projectId", "
|
|
593
|
+
sortKeys: ["projectId", "name", "serviceId", "time"],
|
|
594
|
+
primaryKeys: ["projectId", "name", "serviceId", "time"],
|
|
588
595
|
partitionKey: "sipHash64(projectId) % 16",
|
|
589
596
|
ttlExpression: "retentionDate DELETE",
|
|
590
597
|
});
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import AnalyticsBaseModel from "./AnalyticsBaseModel/AnalyticsBaseModel";
|
|
2
2
|
import Route from "../../Types/API/Route";
|
|
3
3
|
import AnalyticsTableEngine from "../../Types/AnalyticsDatabase/AnalyticsTableEngine";
|
|
4
|
+
import AnalyticsTableName from "../../Types/AnalyticsDatabase/AnalyticsTableName";
|
|
4
5
|
import AnalyticsTableColumn from "../../Types/AnalyticsDatabase/TableColumn";
|
|
5
6
|
import TableColumnType from "../../Types/AnalyticsDatabase/TableColumnType";
|
|
6
7
|
import { JSONObject } from "../../Types/JSON";
|
|
@@ -61,7 +62,7 @@ export default class MonitorLog extends AnalyticsBaseModel {
|
|
|
61
62
|
title: "Time",
|
|
62
63
|
description: "When was the log created?",
|
|
63
64
|
required: true,
|
|
64
|
-
type: TableColumnType.
|
|
65
|
+
type: TableColumnType.DateTime64,
|
|
65
66
|
accessControl: {
|
|
66
67
|
read: [
|
|
67
68
|
Permission.ProjectOwner,
|
|
@@ -86,6 +87,7 @@ export default class MonitorLog extends AnalyticsBaseModel {
|
|
|
86
87
|
required: true,
|
|
87
88
|
defaultValue: {},
|
|
88
89
|
type: TableColumnType.JSON,
|
|
90
|
+
codec: { codec: "ZSTD", level: 3 },
|
|
89
91
|
accessControl: {
|
|
90
92
|
read: [
|
|
91
93
|
Permission.ProjectOwner,
|
|
@@ -114,7 +116,7 @@ export default class MonitorLog extends AnalyticsBaseModel {
|
|
|
114
116
|
});
|
|
115
117
|
|
|
116
118
|
super({
|
|
117
|
-
tableName:
|
|
119
|
+
tableName: AnalyticsTableName.MonitorLog,
|
|
118
120
|
tableEngine: AnalyticsTableEngine.MergeTree,
|
|
119
121
|
singularName: "Monitor Log",
|
|
120
122
|
accessControl: {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import AnalyticsBaseModel from "./AnalyticsBaseModel/AnalyticsBaseModel";
|
|
2
2
|
import Route from "../../Types/API/Route";
|
|
3
3
|
import AnalyticsTableEngine from "../../Types/AnalyticsDatabase/AnalyticsTableEngine";
|
|
4
|
+
import AnalyticsTableName from "../../Types/AnalyticsDatabase/AnalyticsTableName";
|
|
4
5
|
import AnalyticsTableColumn, {
|
|
5
6
|
SkipIndexType,
|
|
6
7
|
} from "../../Types/AnalyticsDatabase/TableColumn";
|
|
@@ -95,7 +96,7 @@ export default class Span extends AnalyticsBaseModel {
|
|
|
95
96
|
title: "Start Time",
|
|
96
97
|
description: "When did the span start?",
|
|
97
98
|
required: true,
|
|
98
|
-
type: TableColumnType.
|
|
99
|
+
type: TableColumnType.DateTime64,
|
|
99
100
|
accessControl: {
|
|
100
101
|
read: [
|
|
101
102
|
Permission.ProjectOwner,
|
|
@@ -118,7 +119,7 @@ export default class Span extends AnalyticsBaseModel {
|
|
|
118
119
|
title: "End Time",
|
|
119
120
|
description: "When did the span end?",
|
|
120
121
|
required: true,
|
|
121
|
-
type: TableColumnType.
|
|
122
|
+
type: TableColumnType.DateTime64,
|
|
122
123
|
accessControl: {
|
|
123
124
|
read: [
|
|
124
125
|
Permission.ProjectOwner,
|
|
@@ -143,6 +144,7 @@ export default class Span extends AnalyticsBaseModel {
|
|
|
143
144
|
description: "When did the span start?",
|
|
144
145
|
required: true,
|
|
145
146
|
type: TableColumnType.LongNumber,
|
|
147
|
+
codec: { codec: "ZSTD", level: 1 },
|
|
146
148
|
accessControl: {
|
|
147
149
|
read: [
|
|
148
150
|
Permission.ProjectOwner,
|
|
@@ -167,6 +169,7 @@ export default class Span extends AnalyticsBaseModel {
|
|
|
167
169
|
description: "How long did the span last?",
|
|
168
170
|
required: true,
|
|
169
171
|
type: TableColumnType.LongNumber,
|
|
172
|
+
codec: { codec: "ZSTD", level: 1 },
|
|
170
173
|
accessControl: {
|
|
171
174
|
read: [
|
|
172
175
|
Permission.ProjectOwner,
|
|
@@ -191,6 +194,7 @@ export default class Span extends AnalyticsBaseModel {
|
|
|
191
194
|
description: "When did the span end?",
|
|
192
195
|
required: true,
|
|
193
196
|
type: TableColumnType.LongNumber,
|
|
197
|
+
codec: { codec: "ZSTD", level: 1 },
|
|
194
198
|
accessControl: {
|
|
195
199
|
read: [
|
|
196
200
|
Permission.ProjectOwner,
|
|
@@ -214,6 +218,7 @@ export default class Span extends AnalyticsBaseModel {
|
|
|
214
218
|
description: "ID of the trace",
|
|
215
219
|
required: true,
|
|
216
220
|
type: TableColumnType.Text,
|
|
221
|
+
codec: { codec: "ZSTD", level: 1 },
|
|
217
222
|
skipIndex: {
|
|
218
223
|
name: "idx_trace_id",
|
|
219
224
|
type: SkipIndexType.BloomFilter,
|
|
@@ -243,6 +248,7 @@ export default class Span extends AnalyticsBaseModel {
|
|
|
243
248
|
description: "ID of the span",
|
|
244
249
|
required: true,
|
|
245
250
|
type: TableColumnType.Text,
|
|
251
|
+
codec: { codec: "ZSTD", level: 1 },
|
|
246
252
|
skipIndex: {
|
|
247
253
|
name: "idx_span_id",
|
|
248
254
|
type: SkipIndexType.BloomFilter,
|
|
@@ -272,6 +278,13 @@ export default class Span extends AnalyticsBaseModel {
|
|
|
272
278
|
description: "ID of the parent span",
|
|
273
279
|
required: false,
|
|
274
280
|
type: TableColumnType.Text,
|
|
281
|
+
codec: { codec: "ZSTD", level: 1 },
|
|
282
|
+
skipIndex: {
|
|
283
|
+
name: "idx_parent_span_id",
|
|
284
|
+
type: SkipIndexType.BloomFilter,
|
|
285
|
+
params: [0.01],
|
|
286
|
+
granularity: 1,
|
|
287
|
+
},
|
|
275
288
|
accessControl: {
|
|
276
289
|
read: [
|
|
277
290
|
Permission.ProjectOwner,
|
|
@@ -318,7 +331,7 @@ export default class Span extends AnalyticsBaseModel {
|
|
|
318
331
|
description: "Attributes",
|
|
319
332
|
required: true,
|
|
320
333
|
defaultValue: {},
|
|
321
|
-
type: TableColumnType.
|
|
334
|
+
type: TableColumnType.MapStringString,
|
|
322
335
|
accessControl: {
|
|
323
336
|
read: [
|
|
324
337
|
Permission.ProjectOwner,
|
|
@@ -367,6 +380,7 @@ export default class Span extends AnalyticsBaseModel {
|
|
|
367
380
|
required: true,
|
|
368
381
|
defaultValue: [],
|
|
369
382
|
type: TableColumnType.JSONArray,
|
|
383
|
+
codec: { codec: "ZSTD", level: 3 },
|
|
370
384
|
accessControl: {
|
|
371
385
|
read: [
|
|
372
386
|
Permission.ProjectOwner,
|
|
@@ -389,8 +403,9 @@ export default class Span extends AnalyticsBaseModel {
|
|
|
389
403
|
title: "Links",
|
|
390
404
|
description: "Span Links",
|
|
391
405
|
required: true,
|
|
392
|
-
defaultValue:
|
|
406
|
+
defaultValue: [],
|
|
393
407
|
type: TableColumnType.JSON,
|
|
408
|
+
codec: { codec: "ZSTD", level: 3 },
|
|
394
409
|
accessControl: {
|
|
395
410
|
read: [
|
|
396
411
|
Permission.ProjectOwner,
|
|
@@ -443,6 +458,7 @@ export default class Span extends AnalyticsBaseModel {
|
|
|
443
458
|
description: "Status Message",
|
|
444
459
|
required: false,
|
|
445
460
|
type: TableColumnType.Text,
|
|
461
|
+
codec: { codec: "ZSTD", level: 1 },
|
|
446
462
|
accessControl: {
|
|
447
463
|
read: [
|
|
448
464
|
Permission.ProjectOwner,
|
|
@@ -495,6 +511,43 @@ export default class Span extends AnalyticsBaseModel {
|
|
|
495
511
|
description: "Kind of the span",
|
|
496
512
|
required: false,
|
|
497
513
|
type: TableColumnType.Text,
|
|
514
|
+
skipIndex: {
|
|
515
|
+
name: "idx_kind",
|
|
516
|
+
type: SkipIndexType.Set,
|
|
517
|
+
params: [5],
|
|
518
|
+
granularity: 4,
|
|
519
|
+
},
|
|
520
|
+
accessControl: {
|
|
521
|
+
read: [
|
|
522
|
+
Permission.ProjectOwner,
|
|
523
|
+
Permission.ProjectAdmin,
|
|
524
|
+
Permission.ProjectMember,
|
|
525
|
+
Permission.ReadTelemetryServiceTraces,
|
|
526
|
+
],
|
|
527
|
+
create: [
|
|
528
|
+
Permission.ProjectOwner,
|
|
529
|
+
Permission.ProjectAdmin,
|
|
530
|
+
Permission.ProjectMember,
|
|
531
|
+
Permission.CreateTelemetryServiceTraces,
|
|
532
|
+
],
|
|
533
|
+
update: [],
|
|
534
|
+
},
|
|
535
|
+
});
|
|
536
|
+
|
|
537
|
+
const hasExceptionColumn: AnalyticsTableColumn = new AnalyticsTableColumn({
|
|
538
|
+
key: "hasException",
|
|
539
|
+
title: "Has Exception",
|
|
540
|
+
description:
|
|
541
|
+
"Whether this span contains an exception event, populated at ingest time for fast error filtering",
|
|
542
|
+
required: true,
|
|
543
|
+
defaultValue: false,
|
|
544
|
+
type: TableColumnType.Boolean,
|
|
545
|
+
skipIndex: {
|
|
546
|
+
name: "idx_has_exception",
|
|
547
|
+
type: SkipIndexType.Set,
|
|
548
|
+
params: [2],
|
|
549
|
+
granularity: 4,
|
|
550
|
+
},
|
|
498
551
|
accessControl: {
|
|
499
552
|
read: [
|
|
500
553
|
Permission.ProjectOwner,
|
|
@@ -523,7 +576,7 @@ export default class Span extends AnalyticsBaseModel {
|
|
|
523
576
|
});
|
|
524
577
|
|
|
525
578
|
super({
|
|
526
|
-
tableName:
|
|
579
|
+
tableName: AnalyticsTableName.Span,
|
|
527
580
|
tableEngine: AnalyticsTableEngine.MergeTree,
|
|
528
581
|
singularName: "Span",
|
|
529
582
|
pluralName: "Spans",
|
|
@@ -574,9 +627,21 @@ export default class Span extends AnalyticsBaseModel {
|
|
|
574
627
|
statusMessageColumn,
|
|
575
628
|
nameColumn,
|
|
576
629
|
kindColumn,
|
|
630
|
+
hasExceptionColumn,
|
|
577
631
|
retentionDateColumn,
|
|
578
632
|
],
|
|
579
|
-
projections: [
|
|
633
|
+
projections: [
|
|
634
|
+
{
|
|
635
|
+
name: "proj_agg_by_service",
|
|
636
|
+
query:
|
|
637
|
+
"SELECT projectId, serviceId, toStartOfMinute(startTime) AS minute, count() AS cnt, avg(durationUnixNano) AS avg_duration, quantile(0.99)(durationUnixNano) AS p99_duration GROUP BY projectId, serviceId, minute",
|
|
638
|
+
},
|
|
639
|
+
{
|
|
640
|
+
name: "proj_trace_by_id",
|
|
641
|
+
query:
|
|
642
|
+
"SELECT projectId, traceId, startTime, serviceId, spanId, parentSpanId, name, durationUnixNano, statusCode, hasException ORDER BY (projectId, traceId, startTime)",
|
|
643
|
+
},
|
|
644
|
+
],
|
|
580
645
|
sortKeys: ["projectId", "startTime", "serviceId", "traceId"],
|
|
581
646
|
primaryKeys: ["projectId", "startTime", "serviceId", "traceId"],
|
|
582
647
|
partitionKey: "sipHash64(projectId) % 16",
|
|
@@ -736,6 +801,14 @@ export default class Span extends AnalyticsBaseModel {
|
|
|
736
801
|
this.setColumnValue("statusMessage", v);
|
|
737
802
|
}
|
|
738
803
|
|
|
804
|
+
public get hasException(): boolean | undefined {
|
|
805
|
+
return this.getColumnValue("hasException") as boolean | undefined;
|
|
806
|
+
}
|
|
807
|
+
|
|
808
|
+
public set hasException(v: boolean | undefined) {
|
|
809
|
+
this.setColumnValue("hasException", v);
|
|
810
|
+
}
|
|
811
|
+
|
|
739
812
|
public get retentionDate(): Date | undefined {
|
|
740
813
|
return this.getColumnValue("retentionDate") as Date | undefined;
|
|
741
814
|
}
|
|
@@ -37,6 +37,10 @@ import IncidentTemplateOwnerUser from "./IncidentTemplateOwnerUser";
|
|
|
37
37
|
//Labels.
|
|
38
38
|
import Label from "./Label";
|
|
39
39
|
import LogSavedView from "./LogSavedView";
|
|
40
|
+
import LogPipeline from "./LogPipeline";
|
|
41
|
+
import LogPipelineProcessor from "./LogPipelineProcessor";
|
|
42
|
+
import LogDropFilter from "./LogDropFilter";
|
|
43
|
+
import LogScrubRule from "./LogScrubRule";
|
|
40
44
|
// Monitors
|
|
41
45
|
import Monitor from "./Monitor";
|
|
42
46
|
import MonitorCustomField from "./MonitorCustomField";
|
|
@@ -252,6 +256,10 @@ const AllModelTypes: Array<{
|
|
|
252
256
|
ApiKey,
|
|
253
257
|
Label,
|
|
254
258
|
LogSavedView,
|
|
259
|
+
LogPipeline,
|
|
260
|
+
LogPipelineProcessor,
|
|
261
|
+
LogDropFilter,
|
|
262
|
+
LogScrubRule,
|
|
255
263
|
ApiKeyPermission,
|
|
256
264
|
ProjectSmtpConfig,
|
|
257
265
|
StatusPage,
|