@dxos/tracing 0.1.56-main.c19b7cd → 0.1.56-main.c277f68
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/dist/lib/browser/index.mjs +307 -33
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node/index.cjs +311 -33
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/meta.json +1 -1
- package/dist/types/src/api.d.ts +1 -0
- package/dist/types/src/api.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +1 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/metrics/base.d.ts +7 -0
- package/dist/types/src/metrics/base.d.ts.map +1 -0
- package/dist/types/src/metrics/index.d.ts +5 -0
- package/dist/types/src/metrics/index.d.ts.map +1 -0
- package/dist/types/src/metrics/time-series-counter.d.ts +15 -0
- package/dist/types/src/metrics/time-series-counter.d.ts.map +1 -0
- package/dist/types/src/metrics/time-usage-counter.d.ts +15 -0
- package/dist/types/src/metrics/time-usage-counter.d.ts.map +1 -0
- package/dist/types/src/metrics/unary-counter.d.ts +12 -0
- package/dist/types/src/metrics/unary-counter.d.ts.map +1 -0
- package/dist/types/src/symbols.d.ts +1 -0
- package/dist/types/src/symbols.d.ts.map +1 -1
- package/dist/types/src/trace-processor.d.ts +10 -1
- package/dist/types/src/trace-processor.d.ts.map +1 -1
- package/dist/types/src/trace-sender.d.ts.map +1 -1
- package/package.json +10 -9
- package/src/api.ts +17 -1
- package/src/index.ts +1 -0
- package/src/metrics/base.ts +26 -0
- package/src/metrics/index.ts +8 -0
- package/src/metrics/time-series-counter.ts +52 -0
- package/src/metrics/time-usage-counter.ts +62 -0
- package/src/metrics/unary-counter.ts +31 -0
- package/src/symbols.ts +4 -2
- package/src/trace-processor.ts +158 -2
- package/src/trace-sender.ts +28 -18
package/dist/lib/node/meta.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"packages/common/tracing/src/symbols.ts":{"bytes":
|
|
1
|
+
{"inputs":{"packages/common/tracing/src/symbols.ts":{"bytes":1683,"imports":[],"format":"esm"},"packages/common/tracing/src/trace-sender.ts":{"bytes":10346,"imports":[{"path":"@dxos/codec-protobuf","kind":"import-statement","external":true}],"format":"esm"},"packages/common/tracing/src/trace-processor.ts":{"bytes":35515,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/common/tracing/src/symbols.ts","kind":"import-statement","original":"./symbols"},{"path":"packages/common/tracing/src/trace-sender.ts","kind":"import-statement","original":"./trace-sender"}],"format":"esm"},"packages/common/tracing/src/api.ts":{"bytes":7250,"imports":[{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"packages/common/tracing/src/symbols.ts","kind":"import-statement","original":"./symbols"},{"path":"packages/common/tracing/src/trace-processor.ts","kind":"import-statement","original":"./trace-processor"}],"format":"esm"},"packages/common/tracing/src/metrics/base.ts":{"bytes":1442,"imports":[],"format":"esm"},"packages/common/tracing/src/metrics/unary-counter.ts":{"bytes":2120,"imports":[{"path":"packages/common/tracing/src/metrics/base.ts","kind":"import-statement","original":"./base"}],"format":"esm"},"packages/common/tracing/src/metrics/time-series-counter.ts":{"bytes":4264,"imports":[{"path":"packages/common/tracing/src/metrics/base.ts","kind":"import-statement","original":"./base"}],"format":"esm"},"packages/common/tracing/src/metrics/time-usage-counter.ts":{"bytes":5245,"imports":[{"path":"packages/common/tracing/src/metrics/base.ts","kind":"import-statement","original":"./base"}],"format":"esm"},"packages/common/tracing/src/metrics/index.ts":{"bytes":797,"imports":[{"path":"packages/common/tracing/src/metrics/base.ts","kind":"import-statement","original":"./base"},{"path":"packages/common/tracing/src/metrics/unary-counter.ts","kind":"import-statement","original":"./unary-counter"},{"path":"packages/common/tracing/src/metrics/time-series-counter.ts","kind":"import-statement","original":"./time-series-counter"},{"path":"packages/common/tracing/src/metrics/time-usage-counter.ts","kind":"import-statement","original":"./time-usage-counter"}],"format":"esm"},"packages/common/tracing/src/index.ts":{"bytes":831,"imports":[{"path":"packages/common/tracing/src/api.ts","kind":"import-statement","original":"./api"},{"path":"packages/common/tracing/src/symbols.ts","kind":"import-statement","original":"./symbols"},{"path":"packages/common/tracing/src/trace-processor.ts","kind":"import-statement","original":"./trace-processor"},{"path":"packages/common/tracing/src/trace-sender.ts","kind":"import-statement","original":"./trace-sender"},{"path":"packages/common/tracing/src/metrics/index.ts","kind":"import-statement","original":"./metrics"}],"format":"esm"}},"outputs":{"packages/common/tracing/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":33817},"packages/common/tracing/dist/lib/node/index.cjs":{"imports":[{"path":"@dxos/context","kind":"require-call","external":true},{"path":"@dxos/async","kind":"require-call","external":true},{"path":"@dxos/log","kind":"require-call","external":true},{"path":"@dxos/util","kind":"require-call","external":true},{"path":"@dxos/codec-protobuf","kind":"require-call","external":true}],"exports":[],"entryPoint":"packages/common/tracing/src/index.ts","inputs":{"packages/common/tracing/src/index.ts":{"bytesInOutput":575},"packages/common/tracing/src/api.ts":{"bytesInOutput":1426},"packages/common/tracing/src/symbols.ts":{"bytesInOutput":245},"packages/common/tracing/src/trace-processor.ts":{"bytesInOutput":8282},"packages/common/tracing/src/trace-sender.ts":{"bytesInOutput":2591},"packages/common/tracing/src/metrics/base.ts":{"bytesInOutput":159},"packages/common/tracing/src/metrics/index.ts":{"bytesInOutput":0},"packages/common/tracing/src/metrics/unary-counter.ts":{"bytesInOutput":324},"packages/common/tracing/src/metrics/time-series-counter.ts":{"bytesInOutput":812},"packages/common/tracing/src/metrics/time-usage-counter.ts":{"bytesInOutput":1136}},"bytes":17233}}}
|
package/dist/types/src/api.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export declare const trace: {
|
|
|
5
5
|
} & T;
|
|
6
6
|
info: () => (target: any, propertyKey: string, descriptor?: PropertyDescriptor) => void;
|
|
7
7
|
span: () => (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor<(...args: any) => any>) => void;
|
|
8
|
+
metricsCounter: () => (target: any, propertyKey: string, descriptor?: PropertyDescriptor) => void;
|
|
8
9
|
addLink: (parent: any, child: any, opts?: AddLinkOptions) => void;
|
|
9
10
|
};
|
|
10
11
|
//# sourceMappingURL=api.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/api.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/api.ts"],"names":[],"mappings":"AA0DA,MAAM,MAAM,cAAc,GAAG,EAAE,CAAC;AAMhC,eAAO,MAAM,KAAK;6CAlDW,GAAG,EAAE,KAAG,EAAE;sBAEZ,GAAG,EAAE;;yBAYJ,GAAG,eAAe,MAAM,eAAe,kBAAkB;yBAIzD,GAAG,eAAe,MAAM,gDAAgD,GAAG,KAAK,GAAG;mCAsBzE,GAAG,eAAe,MAAM,eAAe,kBAAkB;sBAMtE,GAAG,SAAS,GAAG,SAAQ,cAAc;CAW7D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/metrics/base.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAE5D,8BAAsB,WAAW;IAM/B,IAAI,CAAC,EAAE,MAAM,CAAC;IAUd,QAAQ,CAAC,OAAO,IAAI,MAAM;IAE1B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;CAC1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/metrics/index.ts"],"names":[],"mappings":"AAIA,cAAc,QAAQ,CAAC;AACvB,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Metric } from '@dxos/protocols/proto/dxos/tracing';
|
|
2
|
+
import { BaseCounter } from './base';
|
|
3
|
+
export declare class TimeSeriesCounter extends BaseCounter {
|
|
4
|
+
private _currentValue;
|
|
5
|
+
private _totalValue;
|
|
6
|
+
private _buckets;
|
|
7
|
+
units?: string;
|
|
8
|
+
constructor({ units }?: {
|
|
9
|
+
units?: string;
|
|
10
|
+
});
|
|
11
|
+
inc(by?: number): void;
|
|
12
|
+
_tick(time: number): void;
|
|
13
|
+
getData(): Metric;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=time-series-counter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time-series-counter.d.ts","sourceRoot":"","sources":["../../../../src/metrics/time-series-counter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAE5D,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAIrC,qBAAa,iBAAkB,SAAQ,WAAW;IAChD,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,QAAQ,CAAgB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;gBAEH,EAAE,KAAK,EAAE,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO;IAK9C,GAAG,CAAC,EAAE,SAAI;IAKD,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQzB,OAAO,IAAI,MAAM;CAiB3B"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Metric } from '@dxos/protocols/proto/dxos/tracing';
|
|
2
|
+
import { BaseCounter } from './base';
|
|
3
|
+
export declare class TimeUsageCounter extends BaseCounter {
|
|
4
|
+
private _currentValue;
|
|
5
|
+
private _totalValue;
|
|
6
|
+
private _buckets;
|
|
7
|
+
private _lastTickTime;
|
|
8
|
+
record(time: number): void;
|
|
9
|
+
beginRecording(): {
|
|
10
|
+
end: () => void;
|
|
11
|
+
};
|
|
12
|
+
_tick(time: number): void;
|
|
13
|
+
getData(): Metric;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=time-usage-counter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time-usage-counter.d.ts","sourceRoot":"","sources":["../../../../src/metrics/time-usage-counter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAE5D,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAIrC,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,QAAQ,CAAgB;IAEhC,OAAO,CAAC,aAAa,CAAqB;IAE1C,MAAM,CAAC,IAAI,EAAE,MAAM;IAKnB,cAAc,IAAI;QAAE,GAAG,EAAE,MAAM,IAAI,CAAA;KAAE;IAU5B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAYzB,OAAO,IAAI,MAAM;CAiB3B"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Metric } from '@dxos/protocols/proto/dxos/tracing';
|
|
2
|
+
import { BaseCounter } from './base';
|
|
3
|
+
export declare class UnaryCounter extends BaseCounter {
|
|
4
|
+
value: number;
|
|
5
|
+
units?: string;
|
|
6
|
+
constructor({ units }?: {
|
|
7
|
+
units?: string;
|
|
8
|
+
});
|
|
9
|
+
inc(by?: number): void;
|
|
10
|
+
getData(): Metric;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=unary-counter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unary-counter.d.ts","sourceRoot":"","sources":["../../../../src/metrics/unary-counter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAE5D,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErC,qBAAa,YAAa,SAAQ,WAAW;IAC3C,KAAK,SAAK;IACV,KAAK,CAAC,EAAE,MAAM,CAAC;gBAEH,EAAE,KAAK,EAAE,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO;IAK9C,GAAG,CAAC,EAAE,SAAI;IAIV,OAAO,IAAI,MAAM;CASlB"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export declare const symbolTracingContext: unique symbol;
|
|
2
2
|
export type TracingContext = {
|
|
3
3
|
infoProperties: Record<string, {}>;
|
|
4
|
+
metricsProperties: Record<string, {}>;
|
|
4
5
|
};
|
|
5
6
|
export declare const getTracingContext: (target: any) => TracingContext;
|
|
6
7
|
export declare const TRACE_SPAN_ATTRIBUTE = "dxos.trace-span";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symbols.d.ts","sourceRoot":"","sources":["../../../src/symbols.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,oBAAoB,eAAiC,CAAC;AAEnE,MAAM,MAAM,cAAc,GAAG;IAC3B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"symbols.d.ts","sourceRoot":"","sources":["../../../src/symbols.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,oBAAoB,eAAiC,CAAC;AAEnE,MAAM,MAAM,cAAc,GAAG;IAC3B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACnC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;CACvC,CAAC;AAEF,eAAO,MAAM,iBAAiB,WAAY,GAAG,KAAG,cAK/C,CAAC;AAEF,eAAO,MAAM,oBAAoB,oBAAoB,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Context } from '@dxos/context';
|
|
2
|
+
import { LogEntry } from '@dxos/protocols/proto/dxos/client/services';
|
|
2
3
|
import { Error as SerializedError } from '@dxos/protocols/proto/dxos/error';
|
|
3
|
-
import { Resource, Span } from '@dxos/protocols/proto/dxos/tracing';
|
|
4
|
+
import { Metric, Resource, Span } from '@dxos/protocols/proto/dxos/tracing';
|
|
4
5
|
import type { AddLinkOptions } from './api';
|
|
5
6
|
import { TraceSender } from './trace-sender';
|
|
6
7
|
export type TraceResourceConstructorParams = {
|
|
@@ -19,8 +20,10 @@ export type ResourceEntry = {
|
|
|
19
20
|
instance: WeakRef<any>;
|
|
20
21
|
};
|
|
21
22
|
export type TraceSubscription = {
|
|
23
|
+
flush: () => void;
|
|
22
24
|
dirtyResources: Set<number>;
|
|
23
25
|
dirtySpans: Set<number>;
|
|
26
|
+
newLogs: LogEntry[];
|
|
24
27
|
};
|
|
25
28
|
export declare class TraceProcessor {
|
|
26
29
|
resources: Map<number, ResourceEntry>;
|
|
@@ -28,17 +31,23 @@ export declare class TraceProcessor {
|
|
|
28
31
|
resourceIdList: number[];
|
|
29
32
|
spans: Map<number, Span>;
|
|
30
33
|
spanIdList: number[];
|
|
34
|
+
logs: LogEntry[];
|
|
31
35
|
subscriptions: Set<TraceSubscription>;
|
|
36
|
+
constructor();
|
|
32
37
|
traceResourceConstructor(params: TraceResourceConstructorParams): void;
|
|
33
38
|
getResourceInfo(instance: any): Record<string, any>;
|
|
39
|
+
getResourceMetrics(instance: any): Metric[];
|
|
34
40
|
traceSpan(params: TraceSpanParams): TracingSpan;
|
|
35
41
|
addLink(parent: any, child: any, opts: AddLinkOptions): void;
|
|
36
42
|
getResourceId(instance: any): number | null;
|
|
37
43
|
createTraceSender(): TraceSender;
|
|
44
|
+
refresh(): void;
|
|
38
45
|
private _markResourceDirty;
|
|
39
46
|
private _markSpanDirty;
|
|
40
47
|
private _clearResources;
|
|
41
48
|
private _clearSpans;
|
|
49
|
+
private _pushLog;
|
|
50
|
+
private _logProcessor;
|
|
42
51
|
}
|
|
43
52
|
export declare class TracingSpan {
|
|
44
53
|
private _traceProcessor;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace-processor.d.ts","sourceRoot":"","sources":["../../../src/trace-processor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"trace-processor.d.ts","sourceRoot":"","sources":["../../../src/trace-processor.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,QAAQ,EAAE,MAAM,4CAA4C,CAAC;AACtE,OAAO,EAAE,KAAK,IAAI,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAG5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAG5C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,MAAM,8BAA8B,GAAG;IAC3C,WAAW,EAAE;QAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;KAAE,CAAC;IAC1C,QAAQ,EAAE,GAAG,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,GAAG,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,IAAI,CAAC;IAElB,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,OAAO,EAAE,QAAQ,EAAE,CAAC;CACrB,CAAC;AAQF,qBAAa,cAAc;IACzB,SAAS,6BAAoC;IAC7C,qBAAqB,8BAAqC;IAC1D,cAAc,EAAE,MAAM,EAAE,CAAM;IAE9B,KAAK,oBAA2B;IAChC,UAAU,EAAE,MAAM,EAAE,CAAM;IAE1B,IAAI,EAAE,QAAQ,EAAE,CAAM;IAEtB,aAAa,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAa;;IASlD,wBAAwB,CAAC,MAAM,EAAE,8BAA8B;IA6B/D,eAAe,CAAC,QAAQ,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAenD,kBAAkB,CAAC,QAAQ,EAAE,GAAG,GAAG,MAAM,EAAE;IAW3C,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,WAAW;IAM/C,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,cAAc;IAErD,aAAa,CAAC,QAAQ,EAAE,GAAG,GAAG,MAAM,GAAG,IAAI;IAK3C,iBAAiB;IAIjB,OAAO;IA+CP,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,QAAQ;IAWhB,OAAO,CAAC,aAAa,CAiCnB;CACH;AAED,qBAAa,WAAW;IAaV,OAAO,CAAC,eAAe;IAZnC,MAAM,CAAC,MAAM,SAAK;IAElB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC5B,KAAK,EAAE,eAAe,GAAG,IAAI,CAAQ;IAErC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAwB;gBAEzB,eAAe,EAAE,cAAc,EAAE,MAAM,EAAE,eAAe;IAmB5E,IAAI,GAAG,IAAI,OAAO,GAAG,IAAI,CAExB;IAED,WAAW;IAKX,SAAS,CAAC,GAAG,EAAE,OAAO;IAMtB,SAAS,IAAI,IAAI;CAWlB;AAeD,eAAO,MAAM,eAAe,EAAE,cAA+E,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace-sender.d.ts","sourceRoot":"","sources":["../../../src/trace-sender.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"trace-sender.d.ts","sourceRoot":"","sources":["../../../src/trace-sender.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEtF,OAAO,EAAE,cAAc,EAAqB,MAAM,mBAAmB,CAAC;AAEtE,qBAAa,WAAY,YAAW,cAAc;IACpC,OAAO,CAAC,eAAe;gBAAf,eAAe,EAAE,cAAc;IAEnD,WAAW,CAAC,OAAO,EAAE,IAAI,GAAG,MAAM,CAAC,gBAAgB,CAAC;CA0ErD"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/tracing",
|
|
3
|
-
"version": "0.1.56-main.
|
|
3
|
+
"version": "0.1.56-main.c277f68",
|
|
4
4
|
"description": "Async utilities.",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -16,14 +16,15 @@
|
|
|
16
16
|
"src"
|
|
17
17
|
],
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@dxos/
|
|
20
|
-
"@dxos/
|
|
21
|
-
"@dxos/
|
|
22
|
-
"@dxos/
|
|
23
|
-
"@dxos/
|
|
24
|
-
"@dxos/
|
|
25
|
-
"@dxos/
|
|
26
|
-
"@dxos/
|
|
19
|
+
"@dxos/async": "0.1.56-main.c277f68",
|
|
20
|
+
"@dxos/codec-protobuf": "0.1.56-main.c277f68",
|
|
21
|
+
"@dxos/context": "0.1.56-main.c277f68",
|
|
22
|
+
"@dxos/debug": "0.1.56-main.c277f68",
|
|
23
|
+
"@dxos/invariant": "0.1.56-main.c277f68",
|
|
24
|
+
"@dxos/log": "0.1.56-main.c277f68",
|
|
25
|
+
"@dxos/node-std": "0.1.56-main.c277f68",
|
|
26
|
+
"@dxos/protocols": "0.1.56-main.c277f68",
|
|
27
|
+
"@dxos/util": "0.1.56-main.c277f68"
|
|
27
28
|
},
|
|
28
29
|
"devDependencies": {},
|
|
29
30
|
"publishConfig": {
|
package/src/api.ts
CHANGED
|
@@ -7,17 +7,25 @@ import { Context } from '@dxos/context';
|
|
|
7
7
|
import { getTracingContext } from './symbols';
|
|
8
8
|
import { TRACE_PROCESSOR } from './trace-processor';
|
|
9
9
|
|
|
10
|
+
/**
|
|
11
|
+
* Annotates a class as a tracked resource.
|
|
12
|
+
*/
|
|
10
13
|
const resource =
|
|
11
14
|
() =>
|
|
12
15
|
<T extends { new (...args: any[]): {} }>(constructor: T) => {
|
|
13
|
-
|
|
16
|
+
const klass = class extends constructor {
|
|
14
17
|
constructor(...rest: any[]) {
|
|
15
18
|
super(...rest);
|
|
16
19
|
TRACE_PROCESSOR.traceResourceConstructor({ constructor, instance: this });
|
|
17
20
|
}
|
|
18
21
|
};
|
|
22
|
+
Object.defineProperty(klass, 'name', { value: constructor.name });
|
|
23
|
+
return klass;
|
|
19
24
|
};
|
|
20
25
|
|
|
26
|
+
/**
|
|
27
|
+
* Marks a property or a method to be included in the resource info section.
|
|
28
|
+
*/
|
|
21
29
|
const info = () => (target: any, propertyKey: string, descriptor?: PropertyDescriptor) => {
|
|
22
30
|
getTracingContext(target).infoProperties[propertyKey] = {};
|
|
23
31
|
};
|
|
@@ -41,6 +49,13 @@ const span = () => (target: any, propertyKey: string, descriptor: TypedPropertyD
|
|
|
41
49
|
};
|
|
42
50
|
};
|
|
43
51
|
|
|
52
|
+
/**
|
|
53
|
+
* Attaches metrics counter to the resource.
|
|
54
|
+
*/
|
|
55
|
+
const metricsCounter = () => (target: any, propertyKey: string, descriptor?: PropertyDescriptor) => {
|
|
56
|
+
getTracingContext(target).metricsProperties[propertyKey] = {};
|
|
57
|
+
};
|
|
58
|
+
|
|
44
59
|
export type AddLinkOptions = {};
|
|
45
60
|
|
|
46
61
|
const addLink = (parent: any, child: any, opts: AddLinkOptions = {}) => {
|
|
@@ -51,6 +66,7 @@ export const trace = {
|
|
|
51
66
|
resource,
|
|
52
67
|
info,
|
|
53
68
|
span,
|
|
69
|
+
metricsCounter,
|
|
54
70
|
|
|
55
71
|
addLink,
|
|
56
72
|
};
|
package/src/index.ts
CHANGED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2023 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { Metric } from '@dxos/protocols/proto/dxos/tracing';
|
|
6
|
+
|
|
7
|
+
export abstract class BaseCounter {
|
|
8
|
+
/**
|
|
9
|
+
* @internal
|
|
10
|
+
*/
|
|
11
|
+
_instance: any;
|
|
12
|
+
|
|
13
|
+
name?: string;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @internal
|
|
17
|
+
*/
|
|
18
|
+
_assign(instance: any, name: string) {
|
|
19
|
+
this._instance = instance;
|
|
20
|
+
this.name = name;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
abstract getData(): Metric;
|
|
24
|
+
|
|
25
|
+
_tick(time: number): void {}
|
|
26
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2023 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { Metric } from '@dxos/protocols/proto/dxos/tracing';
|
|
6
|
+
|
|
7
|
+
import { BaseCounter } from './base';
|
|
8
|
+
|
|
9
|
+
const MAX_BUCKETS = 60;
|
|
10
|
+
|
|
11
|
+
export class TimeSeriesCounter extends BaseCounter {
|
|
12
|
+
private _currentValue = 0;
|
|
13
|
+
private _totalValue = 0;
|
|
14
|
+
private _buckets: number[] = [];
|
|
15
|
+
units?: string;
|
|
16
|
+
|
|
17
|
+
constructor({ units }: { units?: string } = {}) {
|
|
18
|
+
super();
|
|
19
|
+
this.units = units;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
inc(by = 1) {
|
|
23
|
+
this._currentValue += by;
|
|
24
|
+
this._totalValue += by;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
override _tick(time: number): void {
|
|
28
|
+
this._buckets.push(this._currentValue);
|
|
29
|
+
if (this._buckets.length > MAX_BUCKETS) {
|
|
30
|
+
this._buckets.shift();
|
|
31
|
+
}
|
|
32
|
+
this._currentValue = 0;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
override getData(): Metric {
|
|
36
|
+
return {
|
|
37
|
+
name: this.name!,
|
|
38
|
+
timeSeries: {
|
|
39
|
+
tracks: [
|
|
40
|
+
{
|
|
41
|
+
name: this.name!,
|
|
42
|
+
units: this.units,
|
|
43
|
+
points: this._buckets.map((value, index) => ({
|
|
44
|
+
value,
|
|
45
|
+
})),
|
|
46
|
+
total: this._totalValue,
|
|
47
|
+
},
|
|
48
|
+
],
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2023 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { Metric } from '@dxos/protocols/proto/dxos/tracing';
|
|
6
|
+
|
|
7
|
+
import { BaseCounter } from './base';
|
|
8
|
+
|
|
9
|
+
const MAX_BUCKETS = 60;
|
|
10
|
+
|
|
11
|
+
export class TimeUsageCounter extends BaseCounter {
|
|
12
|
+
private _currentValue = 0;
|
|
13
|
+
private _totalValue = 0;
|
|
14
|
+
private _buckets: number[] = [];
|
|
15
|
+
|
|
16
|
+
private _lastTickTime = performance.now();
|
|
17
|
+
|
|
18
|
+
record(time: number) {
|
|
19
|
+
this._currentValue += time;
|
|
20
|
+
this._totalValue += time;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
beginRecording(): { end: () => void } {
|
|
24
|
+
const start = performance.now();
|
|
25
|
+
return {
|
|
26
|
+
end: () => {
|
|
27
|
+
const end = performance.now();
|
|
28
|
+
this.record(end - start);
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
override _tick(time: number): void {
|
|
34
|
+
const delta = time - this._lastTickTime;
|
|
35
|
+
this._lastTickTime = time;
|
|
36
|
+
|
|
37
|
+
const percentage = (this._currentValue / delta) * 100;
|
|
38
|
+
this._buckets.push(percentage);
|
|
39
|
+
if (this._buckets.length > MAX_BUCKETS) {
|
|
40
|
+
this._buckets.shift();
|
|
41
|
+
}
|
|
42
|
+
this._currentValue = 0;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
override getData(): Metric {
|
|
46
|
+
return {
|
|
47
|
+
name: this.name!,
|
|
48
|
+
timeSeries: {
|
|
49
|
+
tracks: [
|
|
50
|
+
{
|
|
51
|
+
name: this.name!,
|
|
52
|
+
units: '%',
|
|
53
|
+
points: this._buckets.map((value, index) => ({
|
|
54
|
+
value,
|
|
55
|
+
})),
|
|
56
|
+
total: this._totalValue,
|
|
57
|
+
},
|
|
58
|
+
],
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2023 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { Metric } from '@dxos/protocols/proto/dxos/tracing';
|
|
6
|
+
|
|
7
|
+
import { BaseCounter } from './base';
|
|
8
|
+
|
|
9
|
+
export class UnaryCounter extends BaseCounter {
|
|
10
|
+
value = 0;
|
|
11
|
+
units?: string;
|
|
12
|
+
|
|
13
|
+
constructor({ units }: { units?: string } = {}) {
|
|
14
|
+
super();
|
|
15
|
+
this.units = units;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
inc(by = 1) {
|
|
19
|
+
this.value += by;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
getData(): Metric {
|
|
23
|
+
return {
|
|
24
|
+
name: this.name!,
|
|
25
|
+
counter: {
|
|
26
|
+
value: this.value,
|
|
27
|
+
units: this.units,
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
}
|
package/src/symbols.ts
CHANGED
|
@@ -2,15 +2,17 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
export const symbolTracingContext = Symbol('dxos.tracing
|
|
5
|
+
export const symbolTracingContext = Symbol('dxos.tracing.context');
|
|
6
6
|
|
|
7
7
|
export type TracingContext = {
|
|
8
8
|
infoProperties: Record<string, {}>;
|
|
9
|
+
metricsProperties: Record<string, {}>;
|
|
9
10
|
};
|
|
10
11
|
|
|
11
12
|
export const getTracingContext = (target: any): TracingContext => {
|
|
12
|
-
return (target[symbolTracingContext] ??= {
|
|
13
|
+
return ((target[symbolTracingContext] as TracingContext | undefined) ??= {
|
|
13
14
|
infoProperties: {},
|
|
15
|
+
metricsProperties: {},
|
|
14
16
|
});
|
|
15
17
|
};
|
|
16
18
|
|