@oneuptime/common 8.0.5462 → 8.0.5469
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/DatabaseModels/TelemetryUsageBilling.ts +1 -1
- package/Server/EnvironmentConfig.ts +3 -0
- package/Server/Services/AnalyticsDatabaseService.ts +71 -11
- package/Server/Services/TelemetryUsageBillingService.ts +68 -8
- package/Server/Utils/CodeRepository/CodeRepository.ts +44 -36
- package/Server/Utils/Execute.ts +40 -1
- package/Server/Utils/LocalFile.ts +40 -0
- package/Server/Utils/Telemetry/Telemetry.ts +17 -11
- package/Types/Date.ts +5 -0
- package/build/dist/Models/DatabaseModels/TelemetryUsageBilling.js +1 -1
- package/build/dist/Models/DatabaseModels/TelemetryUsageBilling.js.map +1 -1
- package/build/dist/Server/EnvironmentConfig.js +1 -0
- package/build/dist/Server/EnvironmentConfig.js.map +1 -1
- package/build/dist/Server/Services/AnalyticsDatabaseService.js +55 -8
- package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryUsageBillingService.js +52 -9
- package/build/dist/Server/Services/TelemetryUsageBillingService.js.map +1 -1
- package/build/dist/Server/Utils/CodeRepository/CodeRepository.js +30 -22
- package/build/dist/Server/Utils/CodeRepository/CodeRepository.js.map +1 -1
- package/build/dist/Server/Utils/Execute.js +26 -1
- package/build/dist/Server/Utils/Execute.js.map +1 -1
- package/build/dist/Server/Utils/LocalFile.js +35 -0
- package/build/dist/Server/Utils/LocalFile.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/Telemetry.js.map +1 -1
- package/build/dist/Types/Date.js +4 -0
- package/build/dist/Types/Date.js.map +1 -1
- package/package.json +1 -1
|
@@ -39,7 +39,7 @@ export const DEFAULT_RETENTION_IN_DAYS: number = 15;
|
|
|
39
39
|
pluralName: "Telemetry Usage Billings",
|
|
40
40
|
icon: IconProp.Billing,
|
|
41
41
|
tableDescription:
|
|
42
|
-
"Stores historical usage billing data for your telemetry data like Logs, Metrics, and
|
|
42
|
+
"Stores historical usage billing data for your telemetry data like Logs, Metrics, Traces, and Exceptions.",
|
|
43
43
|
})
|
|
44
44
|
@Entity({
|
|
45
45
|
name: "TelemetryUsageBilling",
|
|
@@ -380,6 +380,9 @@ export const AverageMetricRowSizeInBytes: number = parsePositiveNumberFromEnv(
|
|
|
380
380
|
1024,
|
|
381
381
|
);
|
|
382
382
|
|
|
383
|
+
export const AverageExceptionRowSizeInBytes: number =
|
|
384
|
+
parsePositiveNumberFromEnv("AVERAGE_EXCEPTION_ROW_SIZE_IN_BYTES", 1024);
|
|
385
|
+
|
|
383
386
|
export const SlackAppClientId: string | null =
|
|
384
387
|
process.env["SLACK_APP_CLIENT_ID"] || null;
|
|
385
388
|
export const SlackAppClientSecret: string | null =
|
|
@@ -42,6 +42,7 @@ import SortOrder from "../../Types/BaseDatabase/SortOrder";
|
|
|
42
42
|
import OneUptimeDate from "../../Types/Date";
|
|
43
43
|
import BadDataException from "../../Types/Exception/BadDataException";
|
|
44
44
|
import Exception from "../../Types/Exception/Exception";
|
|
45
|
+
import ExceptionCode from "../../Types/Exception/ExceptionCode";
|
|
45
46
|
import { JSONObject } from "../../Types/JSON";
|
|
46
47
|
import ObjectID from "../../Types/ObjectID";
|
|
47
48
|
import PositiveNumber from "../../Types/PositiveNumber";
|
|
@@ -66,7 +67,7 @@ export default class AnalyticsDatabaseService<
|
|
|
66
67
|
public modelType!: { new (): TBaseModel };
|
|
67
68
|
public database!: ClickhouseDatabase;
|
|
68
69
|
public model!: TBaseModel;
|
|
69
|
-
public databaseClient!: ClickhouseClient;
|
|
70
|
+
public databaseClient!: ClickhouseClient | null;
|
|
70
71
|
public statementGenerator!: StatementGenerator<TBaseModel>;
|
|
71
72
|
|
|
72
73
|
public constructor(data: {
|
|
@@ -82,7 +83,7 @@ export default class AnalyticsDatabaseService<
|
|
|
82
83
|
this.database = ClickhouseAppInstance; // default database
|
|
83
84
|
}
|
|
84
85
|
|
|
85
|
-
this.databaseClient = this.database.getDataSource()
|
|
86
|
+
this.databaseClient = this.database.getDataSource();
|
|
86
87
|
|
|
87
88
|
this.statementGenerator = new StatementGenerator<TBaseModel>({
|
|
88
89
|
modelType: this.modelType,
|
|
@@ -90,6 +91,46 @@ export default class AnalyticsDatabaseService<
|
|
|
90
91
|
});
|
|
91
92
|
}
|
|
92
93
|
|
|
94
|
+
@CaptureSpan()
|
|
95
|
+
public async insertJsonRows(rows: Array<JSONObject>): Promise<void> {
|
|
96
|
+
if (!rows || rows.length === 0) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
const client: ClickhouseClient = this.getDatabaseClient();
|
|
101
|
+
|
|
102
|
+
const tableName: string = this.model.tableName;
|
|
103
|
+
|
|
104
|
+
if (!tableName) {
|
|
105
|
+
throw new Exception(
|
|
106
|
+
ExceptionCode.BadDataException,
|
|
107
|
+
"Analytics model table name not configured",
|
|
108
|
+
);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
try {
|
|
112
|
+
await client.insert({
|
|
113
|
+
table: tableName,
|
|
114
|
+
values: rows,
|
|
115
|
+
format: "JSONEachRow",
|
|
116
|
+
clickhouse_settings: {
|
|
117
|
+
async_insert: 1,
|
|
118
|
+
wait_for_async_insert: 0,
|
|
119
|
+
},
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
logger.debug(
|
|
123
|
+
`ClickHouse insert succeeded for table ${tableName} at ${OneUptimeDate.toString(OneUptimeDate.getCurrentDate())}`,
|
|
124
|
+
);
|
|
125
|
+
} catch (error) {
|
|
126
|
+
logger.error(
|
|
127
|
+
`ClickHouse insert failed for table ${tableName} at ${OneUptimeDate.toString(OneUptimeDate.getCurrentDate())}`,
|
|
128
|
+
);
|
|
129
|
+
logger.error(error);
|
|
130
|
+
throw error;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
93
134
|
@CaptureSpan()
|
|
94
135
|
public async doesColumnExistInDatabase(columnName: string): Promise<boolean> {
|
|
95
136
|
const statement: string =
|
|
@@ -807,23 +848,21 @@ export default class AnalyticsDatabaseService<
|
|
|
807
848
|
|
|
808
849
|
public useDefaultDatabase(): void {
|
|
809
850
|
this.database = ClickhouseAppInstance;
|
|
810
|
-
this.databaseClient = this.database.getDataSource()
|
|
851
|
+
this.databaseClient = this.database.getDataSource();
|
|
811
852
|
}
|
|
812
853
|
|
|
813
854
|
@CaptureSpan()
|
|
814
855
|
public async execute(
|
|
815
856
|
statement: Statement | string
|
|
816
857
|
): Promise<ExecResult<Stream>> {
|
|
817
|
-
|
|
818
|
-
this.useDefaultDatabase();
|
|
819
|
-
}
|
|
858
|
+
const client: ClickhouseClient = this.getDatabaseClient();
|
|
820
859
|
|
|
821
860
|
const query: string =
|
|
822
861
|
statement instanceof Statement ? statement.query : statement;
|
|
823
862
|
const queryParams: Record<string, unknown> | undefined =
|
|
824
863
|
statement instanceof Statement ? statement.query_params : undefined;
|
|
825
864
|
|
|
826
|
-
return (await
|
|
865
|
+
return (await client.exec({
|
|
827
866
|
query: query,
|
|
828
867
|
query_params: queryParams || (undefined as any), // undefined is not specified in the type for query_params, but its ok to pass undefined.
|
|
829
868
|
})) as ExecResult<Stream>;
|
|
@@ -833,22 +872,43 @@ export default class AnalyticsDatabaseService<
|
|
|
833
872
|
public async executeQuery(
|
|
834
873
|
statement: Statement | string
|
|
835
874
|
): Promise<ResultSet<"JSON">> {
|
|
836
|
-
|
|
837
|
-
this.useDefaultDatabase();
|
|
838
|
-
}
|
|
875
|
+
const client: ClickhouseClient = this.getDatabaseClient();
|
|
839
876
|
|
|
840
877
|
const query: string =
|
|
841
878
|
statement instanceof Statement ? statement.query : statement;
|
|
842
879
|
const queryParams: Record<string, unknown> | undefined =
|
|
843
880
|
statement instanceof Statement ? statement.query_params : undefined;
|
|
844
881
|
|
|
845
|
-
return await
|
|
882
|
+
return await client.query({
|
|
846
883
|
query: query,
|
|
847
884
|
format: "JSON",
|
|
848
885
|
query_params: queryParams || (undefined as any), // undefined is not specified in the type for query_params, but its ok to pass undefined.
|
|
849
886
|
});
|
|
850
887
|
}
|
|
851
888
|
|
|
889
|
+
private getDatabaseClient(): ClickhouseClient {
|
|
890
|
+
/*
|
|
891
|
+
* Refresh the ClickHouse client lazily so services created before the
|
|
892
|
+
* ClickHouse connection was established pick up the live client.
|
|
893
|
+
*/
|
|
894
|
+
if (!this.database) {
|
|
895
|
+
this.useDefaultDatabase();
|
|
896
|
+
}
|
|
897
|
+
|
|
898
|
+
if (!this.databaseClient && this.database) {
|
|
899
|
+
this.databaseClient = this.database.getDataSource();
|
|
900
|
+
}
|
|
901
|
+
|
|
902
|
+
if (!this.databaseClient) {
|
|
903
|
+
throw new Exception(
|
|
904
|
+
ExceptionCode.DatabaseNotConnectedException,
|
|
905
|
+
"ClickHouse client is not connected",
|
|
906
|
+
);
|
|
907
|
+
}
|
|
908
|
+
|
|
909
|
+
return this.databaseClient;
|
|
910
|
+
}
|
|
911
|
+
|
|
852
912
|
protected async onUpdateSuccess(
|
|
853
913
|
onUpdate: OnUpdate<TBaseModel>,
|
|
854
914
|
_updatedItemIds: Array<ObjectID>
|
|
@@ -15,6 +15,7 @@ import TelemetryServiceService from "./TelemetryServiceService";
|
|
|
15
15
|
import SpanService from "./SpanService";
|
|
16
16
|
import LogService from "./LogService";
|
|
17
17
|
import MetricService from "./MetricService";
|
|
18
|
+
import ExceptionInstanceService from "./ExceptionInstanceService";
|
|
18
19
|
import AnalyticsQueryHelper from "../Types/AnalyticsDatabase/QueryHelper";
|
|
19
20
|
import DiskSize from "../../Types/DiskSize";
|
|
20
21
|
import logger from "../Utils/Logger";
|
|
@@ -24,6 +25,7 @@ import {
|
|
|
24
25
|
AverageSpanRowSizeInBytes,
|
|
25
26
|
AverageLogRowSizeInBytes,
|
|
26
27
|
AverageMetricRowSizeInBytes,
|
|
28
|
+
AverageExceptionRowSizeInBytes,
|
|
27
29
|
IsBillingEnabled,
|
|
28
30
|
} from "../EnvironmentConfig";
|
|
29
31
|
import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
|
|
@@ -76,8 +78,18 @@ export class Service extends DatabaseService<Model> {
|
|
|
76
78
|
const averageRowSizeInBytes: number = this.getAverageRowSizeForProduct(
|
|
77
79
|
data.productType,
|
|
78
80
|
);
|
|
81
|
+
const averageExceptionRowSizeInBytes: number =
|
|
82
|
+
this.getAverageExceptionRowSize();
|
|
79
83
|
|
|
80
|
-
if (averageRowSizeInBytes <= 0) {
|
|
84
|
+
if (data.productType !== ProductType.Traces && averageRowSizeInBytes <= 0) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
if (
|
|
89
|
+
data.productType === ProductType.Traces &&
|
|
90
|
+
averageRowSizeInBytes <= 0 &&
|
|
91
|
+
averageExceptionRowSizeInBytes <= 0
|
|
92
|
+
) {
|
|
81
93
|
return;
|
|
82
94
|
}
|
|
83
95
|
|
|
@@ -129,11 +141,11 @@ export class Service extends DatabaseService<Model> {
|
|
|
129
141
|
continue;
|
|
130
142
|
}
|
|
131
143
|
|
|
132
|
-
let
|
|
144
|
+
let estimatedBytes: number = 0;
|
|
133
145
|
|
|
134
146
|
try {
|
|
135
147
|
if (data.productType === ProductType.Traces) {
|
|
136
|
-
const
|
|
148
|
+
const spanCount: PositiveNumber = await SpanService.countBy({
|
|
137
149
|
query: {
|
|
138
150
|
projectId: data.projectId,
|
|
139
151
|
serviceId: telemetryService.id,
|
|
@@ -146,7 +158,30 @@ export class Service extends DatabaseService<Model> {
|
|
|
146
158
|
},
|
|
147
159
|
});
|
|
148
160
|
|
|
149
|
-
|
|
161
|
+
const exceptionCount: PositiveNumber =
|
|
162
|
+
await ExceptionInstanceService.countBy({
|
|
163
|
+
query: {
|
|
164
|
+
projectId: data.projectId,
|
|
165
|
+
serviceId: telemetryService.id,
|
|
166
|
+
time: AnalyticsQueryHelper.inBetween(startOfDay, endOfDay),
|
|
167
|
+
},
|
|
168
|
+
skip: 0,
|
|
169
|
+
limit: LIMIT_INFINITY,
|
|
170
|
+
props: {
|
|
171
|
+
isRoot: true,
|
|
172
|
+
},
|
|
173
|
+
});
|
|
174
|
+
|
|
175
|
+
const totalSpanCount: number = spanCount.toNumber();
|
|
176
|
+
const totalExceptionCount: number = exceptionCount.toNumber();
|
|
177
|
+
|
|
178
|
+
if (totalSpanCount <= 0 && totalExceptionCount <= 0) {
|
|
179
|
+
continue;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
estimatedBytes =
|
|
183
|
+
totalSpanCount * averageRowSizeInBytes +
|
|
184
|
+
totalExceptionCount * averageExceptionRowSizeInBytes;
|
|
150
185
|
} else if (data.productType === ProductType.Logs) {
|
|
151
186
|
const count: PositiveNumber = await LogService.countBy({
|
|
152
187
|
query: {
|
|
@@ -161,7 +196,13 @@ export class Service extends DatabaseService<Model> {
|
|
|
161
196
|
},
|
|
162
197
|
});
|
|
163
198
|
|
|
164
|
-
|
|
199
|
+
const totalRowCount: number = count.toNumber();
|
|
200
|
+
|
|
201
|
+
if (totalRowCount <= 0) {
|
|
202
|
+
continue;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
estimatedBytes = totalRowCount * averageRowSizeInBytes;
|
|
165
206
|
} else if (data.productType === ProductType.Metrics) {
|
|
166
207
|
const count: PositiveNumber = await MetricService.countBy({
|
|
167
208
|
query: {
|
|
@@ -176,7 +217,13 @@ export class Service extends DatabaseService<Model> {
|
|
|
176
217
|
},
|
|
177
218
|
});
|
|
178
219
|
|
|
179
|
-
|
|
220
|
+
const totalRowCount: number = count.toNumber();
|
|
221
|
+
|
|
222
|
+
if (totalRowCount <= 0) {
|
|
223
|
+
continue;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
estimatedBytes = totalRowCount * averageRowSizeInBytes;
|
|
180
227
|
}
|
|
181
228
|
} catch (error) {
|
|
182
229
|
logger.error(
|
|
@@ -186,11 +233,10 @@ export class Service extends DatabaseService<Model> {
|
|
|
186
233
|
continue;
|
|
187
234
|
}
|
|
188
235
|
|
|
189
|
-
if (
|
|
236
|
+
if (estimatedBytes <= 0) {
|
|
190
237
|
continue;
|
|
191
238
|
}
|
|
192
239
|
|
|
193
|
-
const estimatedBytes: number = rowCount * averageRowSizeInBytes;
|
|
194
240
|
const estimatedGigabytes: number = DiskSize.byteSizeToGB(estimatedBytes);
|
|
195
241
|
|
|
196
242
|
if (!Number.isFinite(estimatedGigabytes) || estimatedGigabytes <= 0) {
|
|
@@ -344,6 +390,20 @@ export class Service extends DatabaseService<Model> {
|
|
|
344
390
|
|
|
345
391
|
return value;
|
|
346
392
|
}
|
|
393
|
+
|
|
394
|
+
private getAverageExceptionRowSize(): number {
|
|
395
|
+
const fallbackSize: number = 1024;
|
|
396
|
+
|
|
397
|
+
if (!Number.isFinite(AverageExceptionRowSizeInBytes)) {
|
|
398
|
+
return fallbackSize;
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
if (AverageExceptionRowSizeInBytes <= 0) {
|
|
402
|
+
return fallbackSize;
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
return AverageExceptionRowSizeInBytes;
|
|
406
|
+
}
|
|
347
407
|
}
|
|
348
408
|
|
|
349
409
|
export default new Service();
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
+
import path from "path";
|
|
2
|
+
import fs from "fs";
|
|
1
3
|
import Execute from "../Execute";
|
|
2
4
|
import LocalFile from "../LocalFile";
|
|
3
5
|
import logger from "../Logger";
|
|
4
6
|
import CaptureSpan from "../Telemetry/CaptureSpan";
|
|
5
7
|
import CodeRepositoryFile from "./CodeRepositoryFile";
|
|
6
8
|
import Dictionary from "../../../Types/Dictionary";
|
|
9
|
+
import BadDataException from "../../../Types/Exception/BadDataException";
|
|
7
10
|
|
|
8
11
|
export default class CodeRepositoryUtil {
|
|
9
12
|
@CaptureSpan()
|
|
@@ -112,15 +115,12 @@ export default class CodeRepositoryUtil {
|
|
|
112
115
|
repoPath: string;
|
|
113
116
|
filePath: string;
|
|
114
117
|
}): Promise<string> {
|
|
115
|
-
const
|
|
116
|
-
|
|
118
|
+
const absolutePath: string = this.resolvePathWithinRepo(
|
|
119
|
+
data.repoPath,
|
|
120
|
+
data.filePath,
|
|
117
121
|
);
|
|
118
122
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
logger.debug("Executing command: " + command);
|
|
122
|
-
|
|
123
|
-
return Execute.executeCommand(`${command}`);
|
|
123
|
+
return LocalFile.read(absolutePath);
|
|
124
124
|
}
|
|
125
125
|
|
|
126
126
|
// discard all changes in the working directory
|
|
@@ -183,13 +183,9 @@ export default class CodeRepositoryUtil {
|
|
|
183
183
|
`${data.repoPath}/${data.directoryPath}`,
|
|
184
184
|
);
|
|
185
185
|
|
|
186
|
-
|
|
186
|
+
logger.debug("Deleting directory: " + totalPath);
|
|
187
187
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
const stdout: string = await Execute.executeCommand(command);
|
|
191
|
-
|
|
192
|
-
logger.debug(stdout);
|
|
188
|
+
await LocalFile.deleteDirectory(totalPath);
|
|
193
189
|
}
|
|
194
190
|
|
|
195
191
|
@CaptureSpan()
|
|
@@ -264,11 +260,13 @@ export default class CodeRepositoryUtil {
|
|
|
264
260
|
repoPath: string;
|
|
265
261
|
message: string;
|
|
266
262
|
}): Promise<void> {
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
logger.debug("Executing command: " + command);
|
|
263
|
+
logger.debug("Executing git commit");
|
|
270
264
|
|
|
271
|
-
const stdout: string = await Execute.
|
|
265
|
+
const stdout: string = await Execute.executeCommandFile({
|
|
266
|
+
command: "git",
|
|
267
|
+
args: ["commit", "-m", data.message],
|
|
268
|
+
cwd: data.repoPath,
|
|
269
|
+
});
|
|
272
270
|
|
|
273
271
|
logger.debug(stdout);
|
|
274
272
|
}
|
|
@@ -318,11 +316,11 @@ export default class CodeRepositoryUtil {
|
|
|
318
316
|
|
|
319
317
|
totalPath = LocalFile.sanitizeFilePath(totalPath); // clean up the path
|
|
320
318
|
|
|
321
|
-
const
|
|
319
|
+
const entries: Array<fs.Dirent> = await LocalFile.readDirectory(totalPath);
|
|
322
320
|
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
321
|
+
return entries.map((entry: fs.Dirent) => {
|
|
322
|
+
return entry.name;
|
|
323
|
+
});
|
|
326
324
|
}
|
|
327
325
|
|
|
328
326
|
@CaptureSpan()
|
|
@@ -350,16 +348,12 @@ export default class CodeRepositoryUtil {
|
|
|
350
348
|
totalPath = LocalFile.sanitizeFilePath(totalPath); // clean up the path
|
|
351
349
|
|
|
352
350
|
const files: Dictionary<CodeRepositoryFile> = {};
|
|
353
|
-
const output: string = await Execute.executeCommand(`ls ${totalPath}`);
|
|
354
|
-
|
|
355
|
-
const fileNames: Array<string> = output.split("\n");
|
|
356
|
-
|
|
357
351
|
const subDirectories: Array<string> = [];
|
|
358
352
|
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
353
|
+
const entries: Array<fs.Dirent> = await LocalFile.readDirectory(totalPath);
|
|
354
|
+
|
|
355
|
+
for (const entry of entries) {
|
|
356
|
+
const fileName: string = entry.name;
|
|
363
357
|
|
|
364
358
|
const filePath: string = LocalFile.sanitizeFilePath(
|
|
365
359
|
`${directoryPath}/${fileName}`,
|
|
@@ -369,13 +363,7 @@ export default class CodeRepositoryUtil {
|
|
|
369
363
|
continue;
|
|
370
364
|
}
|
|
371
365
|
|
|
372
|
-
|
|
373
|
-
await Execute.executeCommand(
|
|
374
|
-
`file "${LocalFile.sanitizeFilePath(`${totalPath}/${fileName}`)}"`,
|
|
375
|
-
)
|
|
376
|
-
).includes("directory");
|
|
377
|
-
|
|
378
|
-
if (isDirectory) {
|
|
366
|
+
if (entry.isDirectory()) {
|
|
379
367
|
subDirectories.push(
|
|
380
368
|
LocalFile.sanitizeFilePath(`${directoryPath}/${fileName}`),
|
|
381
369
|
);
|
|
@@ -449,4 +437,24 @@ export default class CodeRepositoryUtil {
|
|
|
449
437
|
|
|
450
438
|
return files;
|
|
451
439
|
}
|
|
440
|
+
|
|
441
|
+
private static resolvePathWithinRepo(
|
|
442
|
+
repoPath: string,
|
|
443
|
+
targetPath: string,
|
|
444
|
+
): string {
|
|
445
|
+
const root: string = path.resolve(repoPath);
|
|
446
|
+
const sanitizedTarget: string = LocalFile.sanitizeFilePath(
|
|
447
|
+
targetPath,
|
|
448
|
+
).replace(/^\/+/, "");
|
|
449
|
+
const absoluteTarget: string = path.resolve(root, sanitizedTarget);
|
|
450
|
+
|
|
451
|
+
if (
|
|
452
|
+
absoluteTarget !== root &&
|
|
453
|
+
!absoluteTarget.startsWith(root + path.sep)
|
|
454
|
+
) {
|
|
455
|
+
throw new BadDataException("File path is outside the repository");
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
return absoluteTarget;
|
|
459
|
+
}
|
|
452
460
|
}
|
package/Server/Utils/Execute.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PromiseRejectErrorFunction } from "../../Types/FunctionTypes";
|
|
2
|
-
import { ExecException, exec } from "node:child_process";
|
|
2
|
+
import { ExecException, exec, execFile } from "node:child_process";
|
|
3
3
|
import logger from "./Logger";
|
|
4
4
|
import CaptureSpan from "./Telemetry/CaptureSpan";
|
|
5
5
|
|
|
@@ -24,4 +24,43 @@ export default class Execute {
|
|
|
24
24
|
},
|
|
25
25
|
);
|
|
26
26
|
}
|
|
27
|
+
|
|
28
|
+
@CaptureSpan()
|
|
29
|
+
public static executeCommandFile(data: {
|
|
30
|
+
command: string;
|
|
31
|
+
args: Array<string>;
|
|
32
|
+
cwd: string;
|
|
33
|
+
}): Promise<string> {
|
|
34
|
+
return new Promise(
|
|
35
|
+
(
|
|
36
|
+
resolve: (output: string) => void,
|
|
37
|
+
reject: PromiseRejectErrorFunction,
|
|
38
|
+
) => {
|
|
39
|
+
execFile(
|
|
40
|
+
data.command,
|
|
41
|
+
data.args,
|
|
42
|
+
{
|
|
43
|
+
cwd: data.cwd,
|
|
44
|
+
},
|
|
45
|
+
(err: ExecException | null, stdout: string, stderr: string) => {
|
|
46
|
+
if (err) {
|
|
47
|
+
logger.error(
|
|
48
|
+
`Error executing command: ${data.command} ${data.args.join(" ")}`,
|
|
49
|
+
);
|
|
50
|
+
logger.error(err);
|
|
51
|
+
logger.error(stdout);
|
|
52
|
+
logger.error(stderr);
|
|
53
|
+
return reject(err);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
if (stderr) {
|
|
57
|
+
logger.debug(stderr);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return resolve(stdout);
|
|
61
|
+
},
|
|
62
|
+
);
|
|
63
|
+
},
|
|
64
|
+
);
|
|
65
|
+
}
|
|
27
66
|
}
|
|
@@ -71,6 +71,46 @@ export default class LocalFile {
|
|
|
71
71
|
);
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
+
@CaptureSpan()
|
|
75
|
+
public static async deleteDirectory(path: string): Promise<void> {
|
|
76
|
+
if ((await this.doesDirectoryExist(path)) === false) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
return new Promise(
|
|
81
|
+
(resolve: VoidFunction, reject: PromiseRejectErrorFunction) => {
|
|
82
|
+
fs.rm(path, { recursive: true, force: true }, (err: Error | null) => {
|
|
83
|
+
if (err) {
|
|
84
|
+
return reject(err);
|
|
85
|
+
}
|
|
86
|
+
resolve();
|
|
87
|
+
});
|
|
88
|
+
},
|
|
89
|
+
);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
@CaptureSpan()
|
|
93
|
+
public static async readDirectory(path: string): Promise<Array<fs.Dirent>> {
|
|
94
|
+
return new Promise(
|
|
95
|
+
(
|
|
96
|
+
resolve: (entries: Array<fs.Dirent>) => void,
|
|
97
|
+
reject: PromiseRejectErrorFunction,
|
|
98
|
+
) => {
|
|
99
|
+
fs.readdir(
|
|
100
|
+
path,
|
|
101
|
+
{ withFileTypes: true },
|
|
102
|
+
(err: Error | null, entries: Array<fs.Dirent>) => {
|
|
103
|
+
if (err) {
|
|
104
|
+
return reject(err);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
resolve(entries);
|
|
108
|
+
},
|
|
109
|
+
);
|
|
110
|
+
},
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
|
|
74
114
|
@CaptureSpan()
|
|
75
115
|
public static async getListOfDirectories(path: string): Promise<string[]> {
|
|
76
116
|
return new Promise(
|
|
@@ -160,10 +160,11 @@ export default class TelemetryUtil {
|
|
|
160
160
|
|
|
161
161
|
const keyWithPrefix: string = `${prefixKeysWithString}${attribute["key"]}`;
|
|
162
162
|
|
|
163
|
-
const value
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
163
|
+
const value:
|
|
164
|
+
| AttributeType
|
|
165
|
+
| Dictionary<AttributeType | Array<AttributeType>>
|
|
166
|
+
| Array<AttributeType>
|
|
167
|
+
| null = this.getAttributeValues(keyWithPrefix, attribute["value"]);
|
|
167
168
|
|
|
168
169
|
if (value === null) {
|
|
169
170
|
finalObj[keyWithPrefix] = null;
|
|
@@ -237,7 +238,10 @@ export default class TelemetryUtil {
|
|
|
237
238
|
"values"
|
|
238
239
|
] as JSONArray;
|
|
239
240
|
finalObj = values.map((v: JSONObject) => {
|
|
240
|
-
return this.getAttributeValues(
|
|
241
|
+
return this.getAttributeValues(
|
|
242
|
+
prefixKeysWithString,
|
|
243
|
+
v,
|
|
244
|
+
) as AttributeType;
|
|
241
245
|
}) as Array<AttributeType>;
|
|
242
246
|
} else if (
|
|
243
247
|
jsonValue["mapValue"] &&
|
|
@@ -247,14 +251,16 @@ export default class TelemetryUtil {
|
|
|
247
251
|
"fields"
|
|
248
252
|
] as JSONObject;
|
|
249
253
|
|
|
250
|
-
const flattenedFields: Dictionary<
|
|
251
|
-
|
|
254
|
+
const flattenedFields: Dictionary<
|
|
255
|
+
AttributeType | Array<AttributeType>
|
|
256
|
+
> = {};
|
|
252
257
|
for (const key in fields) {
|
|
253
258
|
const nestedPrefix: string = `${prefixKeysWithString}.${key}`;
|
|
254
|
-
const nestedValue
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
259
|
+
const nestedValue:
|
|
260
|
+
| AttributeType
|
|
261
|
+
| Dictionary<AttributeType | Array<AttributeType>>
|
|
262
|
+
| Array<AttributeType>
|
|
263
|
+
| null = this.getAttributeValues(nestedPrefix, fields[key]);
|
|
258
264
|
|
|
259
265
|
if (nestedValue === null) {
|
|
260
266
|
flattenedFields[nestedPrefix] = null;
|
package/Types/Date.ts
CHANGED
|
@@ -1453,4 +1453,9 @@ export default class OneUptimeDate {
|
|
|
1453
1453
|
date = this.fromString(date);
|
|
1454
1454
|
return moment(date).format("YYYY-MM-DD HH:mm:ss");
|
|
1455
1455
|
}
|
|
1456
|
+
|
|
1457
|
+
public static toClickhouseDateTime(date: Date | string): string {
|
|
1458
|
+
const parsedDate: Date = this.fromString(date);
|
|
1459
|
+
return moment(parsedDate).utc().format("YYYY-MM-DD HH:mm:ss");
|
|
1460
|
+
}
|
|
1456
1461
|
}
|
|
@@ -435,7 +435,7 @@ TelemetryUsageBilling = __decorate([
|
|
|
435
435
|
singularName: "Telemetry Usage Billing",
|
|
436
436
|
pluralName: "Telemetry Usage Billings",
|
|
437
437
|
icon: IconProp.Billing,
|
|
438
|
-
tableDescription: "Stores historical usage billing data for your telemetry data like Logs, Metrics, and
|
|
438
|
+
tableDescription: "Stores historical usage billing data for your telemetry data like Logs, Metrics, Traces, and Exceptions.",
|
|
439
439
|
}),
|
|
440
440
|
Entity({
|
|
441
441
|
name: "TelemetryUsageBilling",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TelemetryUsageBilling.js","sourceRoot":"","sources":["../../../../Models/DatabaseModels/TelemetryUsageBilling.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"TelemetryUsageBilling.js","sourceRoot":"","sources":["../../../../Models/DatabaseModels/TelemetryUsageBilling.ts"],"names":[],"mappings":"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"}
|
|
@@ -127,6 +127,7 @@ export const DisableTelemetry = process.env["DISABLE_TELEMETRY"] === "true";
|
|
|
127
127
|
export const AverageSpanRowSizeInBytes = parsePositiveNumberFromEnv("AVERAGE_SPAN_ROW_SIZE_IN_BYTES", 1024);
|
|
128
128
|
export const AverageLogRowSizeInBytes = parsePositiveNumberFromEnv("AVERAGE_LOG_ROW_SIZE_IN_BYTES", 1024);
|
|
129
129
|
export const AverageMetricRowSizeInBytes = parsePositiveNumberFromEnv("AVERAGE_METRIC_ROW_SIZE_IN_BYTES", 1024);
|
|
130
|
+
export const AverageExceptionRowSizeInBytes = parsePositiveNumberFromEnv("AVERAGE_EXCEPTION_ROW_SIZE_IN_BYTES", 1024);
|
|
130
131
|
export const SlackAppClientId = process.env["SLACK_APP_CLIENT_ID"] || null;
|
|
131
132
|
export const SlackAppClientSecret = process.env["SLACK_APP_CLIENT_SECRET"] || null;
|
|
132
133
|
export const SlackAppSigningSecret = process.env["SLACK_APP_SIGNING_SECRET"] || null;
|