@oneuptime/common 10.0.31 → 10.0.34

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.
Files changed (133) hide show
  1. package/Models/AnalyticsModels/ExceptionInstance.ts +29 -4
  2. package/Models/AnalyticsModels/Log.ts +110 -4
  3. package/Models/AnalyticsModels/Metric.ts +16 -9
  4. package/Models/AnalyticsModels/MonitorLog.ts +4 -2
  5. package/Models/AnalyticsModels/Span.ts +79 -6
  6. package/Models/DatabaseModels/Index.ts +8 -0
  7. package/Models/DatabaseModels/LogDropFilter.ts +480 -0
  8. package/Models/DatabaseModels/LogPipeline.ts +412 -0
  9. package/Models/DatabaseModels/LogPipelineProcessor.ts +430 -0
  10. package/Models/DatabaseModels/LogScrubRule.ts +516 -0
  11. package/Server/API/TelemetryAPI.ts +261 -0
  12. package/Server/Infrastructure/Postgres/SchemaMigrations/1773402621107-MigrationName.ts +131 -0
  13. package/Server/Infrastructure/Postgres/SchemaMigrations/1773414578773-MigrationName.ts +79 -0
  14. package/Server/Infrastructure/Postgres/SchemaMigrations/1773500000000-MigrationName.ts +41 -0
  15. package/Server/Infrastructure/Postgres/SchemaMigrations/1773676206197-MigrationName.ts +57 -0
  16. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +4 -0
  17. package/Server/Middleware/WhatsAppAuthorization.ts +87 -0
  18. package/Server/Services/AnalyticsDatabaseService.ts +61 -0
  19. package/Server/Services/LogAggregationService.ts +238 -1
  20. package/Server/Services/LogDropFilterService.ts +10 -0
  21. package/Server/Services/LogPipelineProcessorService.ts +10 -0
  22. package/Server/Services/LogPipelineService.ts +10 -0
  23. package/Server/Services/LogScrubRuleService.ts +10 -0
  24. package/Server/Services/TelemetryAttributeService.ts +4 -6
  25. package/Server/Utils/AnalyticsDatabase/Statement.ts +15 -1
  26. package/Server/Utils/AnalyticsDatabase/StatementGenerator.ts +138 -11
  27. package/Tests/Server/Services/LogAggregationService.test.ts +3 -2
  28. package/Types/AnalyticsDatabase/AnalyticsTableName.ts +9 -0
  29. package/Types/AnalyticsDatabase/TableColumnType.ts +4 -0
  30. package/Types/Date.ts +22 -0
  31. package/Types/Log/LogDropFilterAction.ts +6 -0
  32. package/Types/Log/LogPipelineProcessorType.ts +44 -0
  33. package/Types/Log/LogScrubAction.ts +7 -0
  34. package/Types/Log/LogScrubPatternType.ts +10 -0
  35. package/Types/Permission.ts +174 -0
  36. package/UI/Components/LogsViewer/LogsViewer.tsx +152 -4
  37. package/UI/Components/LogsViewer/components/KeyboardShortcutsHelp.tsx +92 -0
  38. package/UI/Components/LogsViewer/components/LogDetailsPanel.tsx +332 -117
  39. package/UI/Components/LogsViewer/components/LogSearchBar.tsx +294 -274
  40. package/UI/Components/LogsViewer/components/LogsAnalyticsView.tsx +513 -234
  41. package/UI/Components/LogsViewer/components/LogsFilterCard.tsx +37 -29
  42. package/UI/Components/LogsViewer/components/LogsTable.tsx +6 -1
  43. package/UI/Components/LogsViewer/components/LogsViewerToolbar.tsx +106 -0
  44. package/UI/Utils/LogExport.ts +160 -0
  45. package/build/dist/Models/AnalyticsModels/ExceptionInstance.js +28 -4
  46. package/build/dist/Models/AnalyticsModels/ExceptionInstance.js.map +1 -1
  47. package/build/dist/Models/AnalyticsModels/Log.js +97 -4
  48. package/build/dist/Models/AnalyticsModels/Log.js.map +1 -1
  49. package/build/dist/Models/AnalyticsModels/Metric.js +16 -9
  50. package/build/dist/Models/AnalyticsModels/Metric.js.map +1 -1
  51. package/build/dist/Models/AnalyticsModels/MonitorLog.js +4 -2
  52. package/build/dist/Models/AnalyticsModels/MonitorLog.js.map +1 -1
  53. package/build/dist/Models/AnalyticsModels/Span.js +73 -6
  54. package/build/dist/Models/AnalyticsModels/Span.js.map +1 -1
  55. package/build/dist/Models/DatabaseModels/Index.js +8 -0
  56. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  57. package/build/dist/Models/DatabaseModels/LogDropFilter.js +508 -0
  58. package/build/dist/Models/DatabaseModels/LogDropFilter.js.map +1 -0
  59. package/build/dist/Models/DatabaseModels/LogPipeline.js +438 -0
  60. package/build/dist/Models/DatabaseModels/LogPipeline.js.map +1 -0
  61. package/build/dist/Models/DatabaseModels/LogPipelineProcessor.js +452 -0
  62. package/build/dist/Models/DatabaseModels/LogPipelineProcessor.js.map +1 -0
  63. package/build/dist/Models/DatabaseModels/LogScrubRule.js +545 -0
  64. package/build/dist/Models/DatabaseModels/LogScrubRule.js.map +1 -0
  65. package/build/dist/Server/API/TelemetryAPI.js +155 -0
  66. package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
  67. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1773402621107-MigrationName.js +52 -0
  68. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1773402621107-MigrationName.js.map +1 -0
  69. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1773414578773-MigrationName.js +34 -0
  70. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1773414578773-MigrationName.js.map +1 -0
  71. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1773500000000-MigrationName.js +22 -0
  72. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1773500000000-MigrationName.js.map +1 -0
  73. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1773676206197-MigrationName.js +26 -0
  74. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1773676206197-MigrationName.js.map +1 -0
  75. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +4 -0
  76. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  77. package/build/dist/Server/Middleware/WhatsAppAuthorization.js +58 -0
  78. package/build/dist/Server/Middleware/WhatsAppAuthorization.js.map +1 -0
  79. package/build/dist/Server/Services/AnalyticsDatabaseService.js +30 -0
  80. package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
  81. package/build/dist/Server/Services/LogAggregationService.js +188 -1
  82. package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
  83. package/build/dist/Server/Services/LogDropFilterService.js +9 -0
  84. package/build/dist/Server/Services/LogDropFilterService.js.map +1 -0
  85. package/build/dist/Server/Services/LogPipelineProcessorService.js +9 -0
  86. package/build/dist/Server/Services/LogPipelineProcessorService.js.map +1 -0
  87. package/build/dist/Server/Services/LogPipelineService.js +9 -0
  88. package/build/dist/Server/Services/LogPipelineService.js.map +1 -0
  89. package/build/dist/Server/Services/LogScrubRuleService.js +9 -0
  90. package/build/dist/Server/Services/LogScrubRuleService.js.map +1 -0
  91. package/build/dist/Server/Services/TelemetryAttributeService.js +4 -6
  92. package/build/dist/Server/Services/TelemetryAttributeService.js.map +1 -1
  93. package/build/dist/Server/Utils/AnalyticsDatabase/Statement.js +13 -1
  94. package/build/dist/Server/Utils/AnalyticsDatabase/Statement.js.map +1 -1
  95. package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js +98 -2
  96. package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js.map +1 -1
  97. package/build/dist/Tests/Server/Services/LogAggregationService.test.js +3 -2
  98. package/build/dist/Tests/Server/Services/LogAggregationService.test.js.map +1 -1
  99. package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js +10 -0
  100. package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js.map +1 -0
  101. package/build/dist/Types/AnalyticsDatabase/TableColumnType.js +4 -0
  102. package/build/dist/Types/AnalyticsDatabase/TableColumnType.js.map +1 -1
  103. package/build/dist/Types/Date.js +16 -0
  104. package/build/dist/Types/Date.js.map +1 -1
  105. package/build/dist/Types/Log/LogDropFilterAction.js +7 -0
  106. package/build/dist/Types/Log/LogDropFilterAction.js.map +1 -0
  107. package/build/dist/Types/Log/LogPipelineProcessorType.js +9 -0
  108. package/build/dist/Types/Log/LogPipelineProcessorType.js.map +1 -0
  109. package/build/dist/Types/Log/LogScrubAction.js +8 -0
  110. package/build/dist/Types/Log/LogScrubAction.js.map +1 -0
  111. package/build/dist/Types/Log/LogScrubPatternType.js +11 -0
  112. package/build/dist/Types/Log/LogScrubPatternType.js.map +1 -0
  113. package/build/dist/Types/Permission.js +152 -0
  114. package/build/dist/Types/Permission.js.map +1 -1
  115. package/build/dist/UI/Components/LogsViewer/LogsViewer.js +124 -11
  116. package/build/dist/UI/Components/LogsViewer/LogsViewer.js.map +1 -1
  117. package/build/dist/UI/Components/LogsViewer/components/KeyboardShortcutsHelp.js +36 -0
  118. package/build/dist/UI/Components/LogsViewer/components/KeyboardShortcutsHelp.js.map +1 -0
  119. package/build/dist/UI/Components/LogsViewer/components/LogDetailsPanel.js +114 -4
  120. package/build/dist/UI/Components/LogsViewer/components/LogDetailsPanel.js.map +1 -1
  121. package/build/dist/UI/Components/LogsViewer/components/LogSearchBar.js +17 -5
  122. package/build/dist/UI/Components/LogsViewer/components/LogSearchBar.js.map +1 -1
  123. package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js +229 -122
  124. package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js.map +1 -1
  125. package/build/dist/UI/Components/LogsViewer/components/LogsFilterCard.js +5 -4
  126. package/build/dist/UI/Components/LogsViewer/components/LogsFilterCard.js.map +1 -1
  127. package/build/dist/UI/Components/LogsViewer/components/LogsTable.js +4 -1
  128. package/build/dist/UI/Components/LogsViewer/components/LogsTable.js.map +1 -1
  129. package/build/dist/UI/Components/LogsViewer/components/LogsViewerToolbar.js +28 -0
  130. package/build/dist/UI/Components/LogsViewer/components/LogsViewerToolbar.js.map +1 -1
  131. package/build/dist/UI/Utils/LogExport.js +129 -0
  132. package/build/dist/UI/Utils/LogExport.js.map +1 -0
  133. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
- import React, { FunctionComponent, ReactElement, ReactNode } from "react";
2
- import LogSearchBar from "./LogSearchBar";
1
+ import React, { forwardRef, ReactElement, ReactNode } from "react";
2
+ import LogSearchBar, { LogSearchBarRef } from "./LogSearchBar";
3
3
 
4
4
  export interface LogsFilterCardProps {
5
5
  logAttributes: Array<string>;
@@ -11,34 +11,42 @@ export interface LogsFilterCardProps {
11
11
  onFieldValueSelect?: ((fieldKey: string, value: string) => void) | undefined;
12
12
  }
13
13
 
14
- const LogsFilterCard: FunctionComponent<LogsFilterCardProps> = (
15
- props: LogsFilterCardProps,
16
- ): ReactElement => {
17
- const searchBarSuggestions: Array<string> = [
18
- "severity",
19
- "service",
20
- "trace",
21
- "span",
22
- ...props.logAttributes.map((attr: string) => {
23
- return `@${attr}`;
24
- }),
25
- ];
14
+ const LogsFilterCard: React.ForwardRefExoticComponent<
15
+ LogsFilterCardProps & React.RefAttributes<LogSearchBarRef>
16
+ > = forwardRef<LogSearchBarRef, LogsFilterCardProps>(
17
+ (
18
+ props: LogsFilterCardProps,
19
+ ref: React.Ref<LogSearchBarRef>,
20
+ ): ReactElement => {
21
+ const searchBarSuggestions: Array<string> = [
22
+ "severity",
23
+ "service",
24
+ "trace",
25
+ "span",
26
+ ...props.logAttributes.map((attr: string) => {
27
+ return `@${attr}`;
28
+ }),
29
+ ];
26
30
 
27
- return (
28
- <div className="flex flex-col gap-3">
29
- <div>
30
- <LogSearchBar
31
- value={props.searchQuery}
32
- onChange={props.onSearchQueryChange}
33
- onSubmit={props.onSearchSubmit}
34
- suggestions={searchBarSuggestions}
35
- valueSuggestions={props.valueSuggestions}
36
- onFieldValueSelect={props.onFieldValueSelect}
37
- />
31
+ return (
32
+ <div className="flex flex-col gap-3">
33
+ <div>
34
+ <LogSearchBar
35
+ ref={ref}
36
+ value={props.searchQuery}
37
+ onChange={props.onSearchQueryChange}
38
+ onSubmit={props.onSearchSubmit}
39
+ suggestions={searchBarSuggestions}
40
+ valueSuggestions={props.valueSuggestions}
41
+ onFieldValueSelect={props.onFieldValueSelect}
42
+ />
43
+ </div>
44
+ <div>{props.toolbar}</div>
38
45
  </div>
39
- <div>{props.toolbar}</div>
40
- </div>
41
- );
42
- };
46
+ );
47
+ },
48
+ );
49
+
50
+ LogsFilterCard.displayName = "LogsFilterCard";
43
51
 
44
52
  export default LogsFilterCard;
@@ -28,6 +28,7 @@ export interface LogsTableProps {
28
28
  sortOrder?: SortOrder | undefined;
29
29
  onSortChange?: (field: LogsTableSortField) => void;
30
30
  selectedColumns?: Array<string> | undefined;
31
+ focusedRowIndex?: number | undefined;
31
32
  }
32
33
 
33
34
  export const resolveLogIdentifier: (log: Log, index: number) => string = (
@@ -245,6 +246,7 @@ const LogsTable: FunctionComponent<LogsTableProps> = (
245
246
  const spanId: string = log.spanId?.toString() || "";
246
247
 
247
248
  const isSelected: boolean = props.selectedLogId === rowId;
249
+ const isFocused: boolean = props.focusedRowIndex === index;
248
250
  const severityTheme: SeverityTheme = getSeverityTheme(
249
251
  log.severityText,
250
252
  );
@@ -258,8 +260,11 @@ const LogsTable: FunctionComponent<LogsTableProps> = (
258
260
  className={`group cursor-pointer align-top transition-colors hover:bg-gray-50/70 border-l-[3px] ${severityTheme.borderClass} ${
259
261
  isSelected
260
262
  ? "bg-indigo-50/50 ring-1 ring-inset ring-indigo-200"
261
- : ""
263
+ : isFocused
264
+ ? "bg-gray-100/70 ring-1 ring-inset ring-gray-300"
265
+ : ""
262
266
  }`}
267
+ data-focused={isFocused || undefined}
263
268
  aria-selected={isSelected}
264
269
  aria-expanded={isSelected}
265
270
  >
@@ -3,6 +3,7 @@ import LiveLogsToggle from "./LiveLogsToggle";
3
3
  import LogTimeRangePicker from "./LogTimeRangePicker";
4
4
  import ColumnSelector from "./ColumnSelector";
5
5
  import SavedViewsDropdown from "./SavedViewsDropdown";
6
+ import KeyboardShortcutsHelp from "./KeyboardShortcutsHelp";
6
7
  import {
7
8
  LiveLogsOptions,
8
9
  LogsSavedViewOption,
@@ -10,6 +11,7 @@ import {
10
11
  LogsViewMode,
11
12
  } from "../types";
12
13
  import RangeStartAndEndDateTime from "../../../../Types/Time/RangeStartAndEndDateTime";
14
+ import useComponentOutsideClick from "../../../Types/UseComponentOutsideClick";
13
15
 
14
16
  export interface LogsViewerToolbarProps {
15
17
  resultCount: number;
@@ -31,6 +33,10 @@ export interface LogsViewerToolbarProps {
31
33
  onSelectedColumnsChange?: ((columns: Array<string>) => void) | undefined;
32
34
  viewMode?: LogsViewMode | undefined;
33
35
  onViewModeChange?: ((mode: LogsViewMode) => void) | undefined;
36
+ onExportCSV?: (() => void) | undefined;
37
+ onExportJSON?: (() => void) | undefined;
38
+ showKeyboardShortcuts?: boolean | undefined;
39
+ onToggleKeyboardShortcuts?: (() => void) | undefined;
34
40
  }
35
41
 
36
42
  const LogsViewerToolbar: FunctionComponent<LogsViewerToolbarProps> = (
@@ -41,6 +47,14 @@ const LogsViewerToolbar: FunctionComponent<LogsViewerToolbarProps> = (
41
47
  currentPage && totalPages && totalPages > 0,
42
48
  );
43
49
 
50
+ const {
51
+ ref: exportDropdownRef,
52
+ isComponentVisible: isExportOpen,
53
+ setIsComponentVisible: setIsExportOpen,
54
+ } = useComponentOutsideClick(false);
55
+
56
+ const showExport: boolean = Boolean(props.onExportCSV || props.onExportJSON);
57
+
44
58
  return (
45
59
  <div
46
60
  className={`flex items-center justify-between gap-3 ${props.className || ""}`}
@@ -141,6 +155,98 @@ const LogsViewerToolbar: FunctionComponent<LogsViewerToolbarProps> = (
141
155
  />
142
156
  )}
143
157
 
158
+ {props.onToggleKeyboardShortcuts && (
159
+ <div className="relative">
160
+ <button
161
+ type="button"
162
+ className={`inline-flex items-center gap-1.5 rounded-md border px-2.5 py-1.5 text-xs font-medium shadow-sm transition-colors ${
163
+ props.showKeyboardShortcuts
164
+ ? "border-indigo-300 bg-indigo-50 text-indigo-700"
165
+ : "border-gray-200 bg-white text-gray-700 hover:border-gray-300 hover:bg-gray-50"
166
+ }`}
167
+ onClick={props.onToggleKeyboardShortcuts}
168
+ title="Keyboard shortcuts (?)"
169
+ >
170
+ <kbd className="inline-flex h-4 min-w-[1rem] items-center justify-center rounded border border-current px-0.5 font-mono text-[10px] font-semibold leading-none">
171
+ ?
172
+ </kbd>
173
+ </button>
174
+ {props.showKeyboardShortcuts && (
175
+ <KeyboardShortcutsHelp
176
+ onClose={props.onToggleKeyboardShortcuts}
177
+ />
178
+ )}
179
+ </div>
180
+ )}
181
+
182
+ {showExport && (
183
+ <div className="relative" ref={exportDropdownRef}>
184
+ <button
185
+ type="button"
186
+ className="inline-flex items-center gap-1.5 rounded-md border border-gray-200 bg-white px-2.5 py-1.5 text-xs font-medium text-gray-700 shadow-sm transition-colors hover:border-gray-300 hover:bg-gray-50"
187
+ onClick={() => {
188
+ setIsExportOpen(!isExportOpen);
189
+ }}
190
+ >
191
+ <svg
192
+ className="h-3.5 w-3.5"
193
+ fill="none"
194
+ viewBox="0 0 24 24"
195
+ strokeWidth={1.5}
196
+ stroke="currentColor"
197
+ >
198
+ <path
199
+ strokeLinecap="round"
200
+ strokeLinejoin="round"
201
+ d="M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5M16.5 12 12 16.5m0 0L7.5 12m4.5 4.5V3"
202
+ />
203
+ </svg>
204
+ Export
205
+ <svg
206
+ className="h-3 w-3"
207
+ fill="none"
208
+ viewBox="0 0 24 24"
209
+ strokeWidth={2}
210
+ stroke="currentColor"
211
+ >
212
+ <path
213
+ strokeLinecap="round"
214
+ strokeLinejoin="round"
215
+ d="m19.5 8.25-7.5 7.5-7.5-7.5"
216
+ />
217
+ </svg>
218
+ </button>
219
+ {isExportOpen && (
220
+ <div className="absolute right-0 z-20 mt-1 w-40 rounded-md border border-gray-200 bg-white py-1 shadow-lg">
221
+ {props.onExportCSV && (
222
+ <button
223
+ type="button"
224
+ className="flex w-full items-center gap-2 px-3 py-1.5 text-left text-xs text-gray-700 hover:bg-gray-50"
225
+ onClick={() => {
226
+ setIsExportOpen(false);
227
+ props.onExportCSV!();
228
+ }}
229
+ >
230
+ Export as CSV
231
+ </button>
232
+ )}
233
+ {props.onExportJSON && (
234
+ <button
235
+ type="button"
236
+ className="flex w-full items-center gap-2 px-3 py-1.5 text-left text-xs text-gray-700 hover:bg-gray-50"
237
+ onClick={() => {
238
+ setIsExportOpen(false);
239
+ props.onExportJSON!();
240
+ }}
241
+ >
242
+ Export as JSON
243
+ </button>
244
+ )}
245
+ </div>
246
+ )}
247
+ </div>
248
+ )}
249
+
144
250
  {props.timeRange && props.onTimeRangeChange && (
145
251
  <LogTimeRangePicker
146
252
  value={props.timeRange}
@@ -0,0 +1,160 @@
1
+ import Log from "../../Models/AnalyticsModels/Log";
2
+ import { JSONObject } from "../../Types/JSON";
3
+ import {
4
+ isLogsAttributeColumnId,
5
+ getLogsAttributeKeyFromColumnId,
6
+ } from "../Components/LogsViewer/types";
7
+
8
+ export enum LogExportFormat {
9
+ CSV = "csv",
10
+ JSON = "json",
11
+ }
12
+
13
+ function escapeCsvValue(value: string): string {
14
+ if (
15
+ value.includes(",") ||
16
+ value.includes('"') ||
17
+ value.includes("\n") ||
18
+ value.includes("\r")
19
+ ) {
20
+ return `"${value.replace(/"/g, '""')}"`;
21
+ }
22
+ return value;
23
+ }
24
+
25
+ function getLogFieldValue(log: Log, columnId: string): string {
26
+ if (isLogsAttributeColumnId(columnId)) {
27
+ const attrKey: string | null = getLogsAttributeKeyFromColumnId(columnId);
28
+ if (attrKey && log.attributes) {
29
+ const val: unknown = (log.attributes as Record<string, unknown>)[attrKey];
30
+ if (val === undefined || val === null) {
31
+ return "";
32
+ }
33
+ if (typeof val === "object") {
34
+ return JSON.stringify(val);
35
+ }
36
+ return String(val);
37
+ }
38
+ return "";
39
+ }
40
+
41
+ switch (columnId) {
42
+ case "time":
43
+ return log.time ? new Date(log.time).toISOString() : "";
44
+ case "service":
45
+ return log.serviceId?.toString() || "";
46
+ case "severity":
47
+ return log.severityText?.toString() || "";
48
+ case "message":
49
+ return log.body || "";
50
+ case "traceId":
51
+ return log.traceId || "";
52
+ case "spanId":
53
+ return log.spanId || "";
54
+ default:
55
+ return "";
56
+ }
57
+ }
58
+
59
+ function getColumnLabel(columnId: string): string {
60
+ if (isLogsAttributeColumnId(columnId)) {
61
+ return getLogsAttributeKeyFromColumnId(columnId) || columnId;
62
+ }
63
+
64
+ switch (columnId) {
65
+ case "time":
66
+ return "Time";
67
+ case "service":
68
+ return "Service ID";
69
+ case "severity":
70
+ return "Severity";
71
+ case "message":
72
+ return "Message";
73
+ case "traceId":
74
+ return "Trace ID";
75
+ case "spanId":
76
+ return "Span ID";
77
+ default:
78
+ return columnId;
79
+ }
80
+ }
81
+
82
+ export function exportLogsToCSV(
83
+ logs: Array<Log>,
84
+ columns: Array<string>,
85
+ ): string {
86
+ const header: string = columns
87
+ .map((col: string) => {
88
+ return escapeCsvValue(getColumnLabel(col));
89
+ })
90
+ .join(",");
91
+
92
+ const rows: Array<string> = logs.map((log: Log) => {
93
+ return columns
94
+ .map((col: string) => {
95
+ return escapeCsvValue(getLogFieldValue(log, col));
96
+ })
97
+ .join(",");
98
+ });
99
+
100
+ return [header, ...rows].join("\n");
101
+ }
102
+
103
+ export function exportLogsToJSON(logs: Array<Log>): string {
104
+ const data: Array<JSONObject> = logs.map((log: Log) => {
105
+ const obj: JSONObject = {};
106
+ obj["time"] = log.time ? new Date(log.time).toISOString() : null;
107
+ obj["serviceId"] = log.serviceId?.toString() || null;
108
+ obj["severity"] = log.severityText?.toString() || null;
109
+ obj["severityNumber"] = log.severityNumber || null;
110
+ obj["body"] = log.body || null;
111
+ obj["traceId"] = log.traceId || null;
112
+ obj["spanId"] = log.spanId || null;
113
+ obj["attributes"] = (log.attributes as JSONObject) || {};
114
+ return obj;
115
+ });
116
+
117
+ return JSON.stringify(data, null, 2);
118
+ }
119
+
120
+ function downloadFile(
121
+ content: string,
122
+ filename: string,
123
+ mimeType: string,
124
+ ): void {
125
+ const blob: Blob = new Blob([content], { type: mimeType });
126
+ const url: string = window.URL.createObjectURL(blob);
127
+ const anchor: HTMLAnchorElement = document.createElement("a");
128
+ anchor.href = url;
129
+ anchor.download = filename;
130
+ document.body.appendChild(anchor);
131
+ anchor.click();
132
+ document.body.removeChild(anchor);
133
+ window.URL.revokeObjectURL(url);
134
+ }
135
+
136
+ function getTimestampFilename(format: LogExportFormat): string {
137
+ const now: string = new Date()
138
+ .toISOString()
139
+ .replace(/[:.]/g, "-")
140
+ .slice(0, 19);
141
+ return `logs-${now}.${format}`;
142
+ }
143
+
144
+ export function exportLogs(
145
+ logs: Array<Log>,
146
+ format: LogExportFormat,
147
+ columns: Array<string>,
148
+ ): void {
149
+ if (format === LogExportFormat.CSV) {
150
+ const csv: string = exportLogsToCSV(logs, columns);
151
+ downloadFile(csv, getTimestampFilename(format), "text/csv;charset=utf-8;");
152
+ } else {
153
+ const json: string = exportLogsToJSON(logs);
154
+ downloadFile(
155
+ json,
156
+ getTimestampFilename(format),
157
+ "application/json;charset=utf-8;",
158
+ );
159
+ }
160
+ }
@@ -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, { SkipIndexType, } from "../../Types/AnalyticsDatabase/TableColumn";
5
6
  import TableColumnType from "../../Types/AnalyticsDatabase/TableColumnType";
6
7
  import Permission from "../../Types/Permission";
@@ -56,7 +57,7 @@ export default class ExceptionInstance extends AnalyticsBaseModel {
56
57
  title: "Time",
57
58
  description: "When was the log created?",
58
59
  required: true,
59
- type: TableColumnType.Date,
60
+ type: TableColumnType.DateTime64,
60
61
  accessControl: {
61
62
  read: [
62
63
  Permission.ProjectOwner,
@@ -309,6 +310,12 @@ export default class ExceptionInstance extends AnalyticsBaseModel {
309
310
  description: "Name of the span",
310
311
  required: false,
311
312
  type: TableColumnType.Text,
313
+ skipIndex: {
314
+ name: "idx_span_name",
315
+ type: SkipIndexType.TokenBF,
316
+ params: [10240, 3, 0],
317
+ granularity: 4,
318
+ },
312
319
  accessControl: {
313
320
  read: [
314
321
  Permission.ProjectOwner,
@@ -331,6 +338,12 @@ export default class ExceptionInstance extends AnalyticsBaseModel {
331
338
  description: "Service version / release from service.version resource attribute",
332
339
  required: false,
333
340
  type: TableColumnType.Text,
341
+ skipIndex: {
342
+ name: "idx_release",
343
+ type: SkipIndexType.Set,
344
+ params: [100],
345
+ granularity: 4,
346
+ },
334
347
  accessControl: {
335
348
  read: [
336
349
  Permission.ProjectOwner,
@@ -353,6 +366,12 @@ export default class ExceptionInstance extends AnalyticsBaseModel {
353
366
  description: "Deployment environment from deployment.environment resource attribute",
354
367
  required: false,
355
368
  type: TableColumnType.Text,
369
+ skipIndex: {
370
+ name: "idx_environment",
371
+ type: SkipIndexType.Set,
372
+ params: [10],
373
+ granularity: 4,
374
+ },
356
375
  accessControl: {
357
376
  read: [
358
377
  Permission.ProjectOwner,
@@ -397,7 +416,7 @@ export default class ExceptionInstance extends AnalyticsBaseModel {
397
416
  description: "Attributes",
398
417
  required: true,
399
418
  defaultValue: {},
400
- type: TableColumnType.JSON,
419
+ type: TableColumnType.MapStringString,
401
420
  accessControl: {
402
421
  read: [
403
422
  Permission.ProjectOwner,
@@ -423,7 +442,7 @@ export default class ExceptionInstance extends AnalyticsBaseModel {
423
442
  defaultValue: undefined,
424
443
  });
425
444
  super({
426
- tableName: "ExceptionItem",
445
+ tableName: AnalyticsTableName.ExceptionInstance,
427
446
  tableEngine: AnalyticsTableEngine.MergeTree,
428
447
  singularName: "Exception Instance",
429
448
  pluralName: "Exception Instances",
@@ -477,7 +496,12 @@ export default class ExceptionInstance extends AnalyticsBaseModel {
477
496
  attributesColumn,
478
497
  retentionDateColumn,
479
498
  ],
480
- projections: [],
499
+ projections: [
500
+ {
501
+ name: "proj_exception_group",
502
+ query: "SELECT projectId, serviceId, fingerprint, exceptionType, count() AS cnt, max(time) AS last_seen GROUP BY projectId, serviceId, fingerprint, exceptionType",
503
+ },
504
+ ],
481
505
  sortKeys: ["projectId", "time", "serviceId", "fingerprint"],
482
506
  primaryKeys: ["projectId", "time", "serviceId", "fingerprint"],
483
507
  partitionKey: "sipHash64(projectId) % 16",
@@ -1 +1 @@
1
- {"version":3,"file":"ExceptionInstance.js","sourceRoot":"","sources":["../../../../Models/AnalyticsModels/ExceptionInstance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ExceptionInstance.js","sourceRoot":"","sources":["../../../../Models/AnalyticsModels/ExceptionInstance.ts"],"names":[],"mappings":"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"}