@nahisaho/katashiro-observability 2.0.0
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/LICENSE +21 -0
- package/dist/HealthChecker.d.ts +59 -0
- package/dist/HealthChecker.d.ts.map +1 -0
- package/dist/HealthChecker.js +126 -0
- package/dist/HealthChecker.js.map +1 -0
- package/dist/MetricsCollector.d.ts +68 -0
- package/dist/MetricsCollector.d.ts.map +1 -0
- package/dist/MetricsCollector.js +148 -0
- package/dist/MetricsCollector.js.map +1 -0
- package/dist/Span.d.ts +45 -0
- package/dist/Span.d.ts.map +1 -0
- package/dist/Span.js +120 -0
- package/dist/Span.js.map +1 -0
- package/dist/Tracer.d.ts +72 -0
- package/dist/Tracer.d.ts.map +1 -0
- package/dist/Tracer.js +165 -0
- package/dist/Tracer.js.map +1 -0
- package/dist/exporters/ConsoleExporter.d.ts +24 -0
- package/dist/exporters/ConsoleExporter.d.ts.map +1 -0
- package/dist/exporters/ConsoleExporter.js +60 -0
- package/dist/exporters/ConsoleExporter.js.map +1 -0
- package/dist/exporters/FileExporter.d.ts +43 -0
- package/dist/exporters/FileExporter.d.ts.map +1 -0
- package/dist/exporters/FileExporter.js +79 -0
- package/dist/exporters/FileExporter.js.map +1 -0
- package/dist/exporters/index.d.ts +9 -0
- package/dist/exporters/index.d.ts.map +1 -0
- package/dist/exporters/index.js +8 -0
- package/dist/exporters/index.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +166 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/package.json +59 -0
package/dist/Tracer.d.ts
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tracer Implementation
|
|
3
|
+
*
|
|
4
|
+
* @requirement REQ-OBS-001
|
|
5
|
+
* @design DES-KATASHIRO-003-OBS §3.1.2
|
|
6
|
+
*/
|
|
7
|
+
import type { Span, SpanOptions, TracerConfig, TraceExporter } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* メイントレーサークラス
|
|
10
|
+
*/
|
|
11
|
+
export declare class Tracer {
|
|
12
|
+
private static instance;
|
|
13
|
+
private asyncStorage;
|
|
14
|
+
private exporters;
|
|
15
|
+
private config;
|
|
16
|
+
private constructor();
|
|
17
|
+
/**
|
|
18
|
+
* シングルトンインスタンス取得
|
|
19
|
+
*/
|
|
20
|
+
static getInstance(config?: TracerConfig): Tracer;
|
|
21
|
+
/**
|
|
22
|
+
* インスタンスリセット(テスト用)
|
|
23
|
+
*/
|
|
24
|
+
static resetInstance(): void;
|
|
25
|
+
/**
|
|
26
|
+
* 設定取得
|
|
27
|
+
*/
|
|
28
|
+
getConfig(): Readonly<TracerConfig>;
|
|
29
|
+
/**
|
|
30
|
+
* スパン開始(コールバック方式)
|
|
31
|
+
*/
|
|
32
|
+
startActiveSpan<T>(name: string, fn: (span: Span) => Promise<T>, options?: SpanOptions): Promise<T>;
|
|
33
|
+
/**
|
|
34
|
+
* 現在のスパン取得
|
|
35
|
+
*/
|
|
36
|
+
getCurrentSpan(): Span | undefined;
|
|
37
|
+
/**
|
|
38
|
+
* 現在のトレースID取得
|
|
39
|
+
*/
|
|
40
|
+
getCurrentTraceId(): string | undefined;
|
|
41
|
+
/**
|
|
42
|
+
* エクスポーター追加
|
|
43
|
+
*/
|
|
44
|
+
addExporter(exporter: TraceExporter): void;
|
|
45
|
+
/**
|
|
46
|
+
* エクスポーター削除
|
|
47
|
+
*/
|
|
48
|
+
removeExporter(name: string): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* 全エクスポーターシャットダウン
|
|
51
|
+
*/
|
|
52
|
+
shutdown(): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* トレースエクスポート
|
|
55
|
+
*/
|
|
56
|
+
private export;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* グローバルトレーサー取得
|
|
60
|
+
*/
|
|
61
|
+
export declare function getGlobalTracer(): Tracer;
|
|
62
|
+
/**
|
|
63
|
+
* トレースデコレータ
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* class MyService {
|
|
67
|
+
* @trace('myOperation')
|
|
68
|
+
* async doSomething() { ... }
|
|
69
|
+
* }
|
|
70
|
+
*/
|
|
71
|
+
export declare function trace(name: string, options?: SpanOptions): <T>(_target: object, _propertyKey: string, descriptor: TypedPropertyDescriptor<(...args: unknown[]) => Promise<T>>) => TypedPropertyDescriptor<(...args: unknown[]) => Promise<T>>;
|
|
72
|
+
//# sourceMappingURL=Tracer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tracer.d.ts","sourceRoot":"","sources":["../src/Tracer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EACV,IAAI,EACJ,WAAW,EAGX,YAAY,EACZ,aAAa,EACd,MAAM,YAAY,CAAC;AAapB;;GAEG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAuB;IAC9C,OAAO,CAAC,YAAY,CAAyC;IAC7D,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,MAAM,CAAe;IAE7B,OAAO;IAKP;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,MAAM;IAOjD;;OAEG;IACH,MAAM,CAAC,aAAa,IAAI,IAAI;IAI5B;;OAEG;IACH,SAAS,IAAI,QAAQ,CAAC,YAAY,CAAC;IAInC;;OAEG;IACG,eAAe,CAAC,CAAC,EACrB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,EAC9B,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,CAAC,CAAC;IAoCb;;OAEG;IACH,cAAc,IAAI,IAAI,GAAG,SAAS;IAIlC;;OAEG;IACH,iBAAiB,IAAI,MAAM,GAAG,SAAS;IAIvC;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAI1C;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IASrC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAM/B;;OAEG;YACW,MAAM;CAKrB;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED;;;;;;;;GAQG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,IACtC,CAAC,EAChB,SAAS,MAAM,EACf,cAAc,MAAM,EACpB,YAAY,uBAAuB,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,KACtE,uBAAuB,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CA2B/D"}
|
package/dist/Tracer.js
ADDED
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tracer Implementation
|
|
3
|
+
*
|
|
4
|
+
* @requirement REQ-OBS-001
|
|
5
|
+
* @design DES-KATASHIRO-003-OBS §3.1.2
|
|
6
|
+
*/
|
|
7
|
+
import { AsyncLocalStorage } from 'async_hooks';
|
|
8
|
+
import { SpanImpl, NoopSpan } from './Span.js';
|
|
9
|
+
/**
|
|
10
|
+
* デフォルト設定
|
|
11
|
+
*/
|
|
12
|
+
const DEFAULT_CONFIG = {
|
|
13
|
+
serviceName: 'katashiro',
|
|
14
|
+
serviceVersion: '2.0.0',
|
|
15
|
+
environment: 'development',
|
|
16
|
+
sampling: 1.0,
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* メイントレーサークラス
|
|
20
|
+
*/
|
|
21
|
+
export class Tracer {
|
|
22
|
+
static instance = null;
|
|
23
|
+
asyncStorage = new AsyncLocalStorage();
|
|
24
|
+
exporters = [];
|
|
25
|
+
config;
|
|
26
|
+
constructor(config) {
|
|
27
|
+
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
28
|
+
this.exporters = config.exporters ?? [];
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* シングルトンインスタンス取得
|
|
32
|
+
*/
|
|
33
|
+
static getInstance(config) {
|
|
34
|
+
if (!Tracer.instance) {
|
|
35
|
+
Tracer.instance = new Tracer(config ?? DEFAULT_CONFIG);
|
|
36
|
+
}
|
|
37
|
+
return Tracer.instance;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* インスタンスリセット(テスト用)
|
|
41
|
+
*/
|
|
42
|
+
static resetInstance() {
|
|
43
|
+
Tracer.instance = null;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* 設定取得
|
|
47
|
+
*/
|
|
48
|
+
getConfig() {
|
|
49
|
+
return this.config;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* スパン開始(コールバック方式)
|
|
53
|
+
*/
|
|
54
|
+
async startActiveSpan(name, fn, options) {
|
|
55
|
+
// サンプリング判定
|
|
56
|
+
if (this.config.sampling !== undefined &&
|
|
57
|
+
Math.random() > this.config.sampling) {
|
|
58
|
+
return fn(new NoopSpan());
|
|
59
|
+
}
|
|
60
|
+
const parentContext = this.asyncStorage.getStore();
|
|
61
|
+
const span = new SpanImpl(name, parentContext?.currentSpan, options);
|
|
62
|
+
const newContext = {
|
|
63
|
+
traceId: parentContext?.traceId ?? span.traceId,
|
|
64
|
+
currentSpan: span,
|
|
65
|
+
};
|
|
66
|
+
return this.asyncStorage.run(newContext, async () => {
|
|
67
|
+
try {
|
|
68
|
+
const result = await fn(span);
|
|
69
|
+
span.setStatus({ code: 'OK' });
|
|
70
|
+
return result;
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
span.setStatus({
|
|
74
|
+
code: 'ERROR',
|
|
75
|
+
message: error instanceof Error ? error.message : 'Unknown error',
|
|
76
|
+
});
|
|
77
|
+
span.recordException(error);
|
|
78
|
+
throw error;
|
|
79
|
+
}
|
|
80
|
+
finally {
|
|
81
|
+
span.end();
|
|
82
|
+
await this.export(span.toRecord());
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* 現在のスパン取得
|
|
88
|
+
*/
|
|
89
|
+
getCurrentSpan() {
|
|
90
|
+
return this.asyncStorage.getStore()?.currentSpan;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* 現在のトレースID取得
|
|
94
|
+
*/
|
|
95
|
+
getCurrentTraceId() {
|
|
96
|
+
return this.asyncStorage.getStore()?.traceId;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* エクスポーター追加
|
|
100
|
+
*/
|
|
101
|
+
addExporter(exporter) {
|
|
102
|
+
this.exporters.push(exporter);
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* エクスポーター削除
|
|
106
|
+
*/
|
|
107
|
+
removeExporter(name) {
|
|
108
|
+
const idx = this.exporters.findIndex((e) => e.name === name);
|
|
109
|
+
if (idx >= 0) {
|
|
110
|
+
this.exporters.splice(idx, 1);
|
|
111
|
+
return true;
|
|
112
|
+
}
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* 全エクスポーターシャットダウン
|
|
117
|
+
*/
|
|
118
|
+
async shutdown() {
|
|
119
|
+
await Promise.all(this.exporters.map((exp) => exp.shutdown?.().catch(console.error)));
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* トレースエクスポート
|
|
123
|
+
*/
|
|
124
|
+
async export(record) {
|
|
125
|
+
await Promise.all(this.exporters.map((exp) => exp.export(record).catch(console.error)));
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* グローバルトレーサー取得
|
|
130
|
+
*/
|
|
131
|
+
export function getGlobalTracer() {
|
|
132
|
+
return Tracer.getInstance();
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* トレースデコレータ
|
|
136
|
+
*
|
|
137
|
+
* @example
|
|
138
|
+
* class MyService {
|
|
139
|
+
* @trace('myOperation')
|
|
140
|
+
* async doSomething() { ... }
|
|
141
|
+
* }
|
|
142
|
+
*/
|
|
143
|
+
export function trace(name, options) {
|
|
144
|
+
return function (_target, _propertyKey, descriptor) {
|
|
145
|
+
const originalMethod = descriptor.value;
|
|
146
|
+
if (!originalMethod) {
|
|
147
|
+
return descriptor;
|
|
148
|
+
}
|
|
149
|
+
descriptor.value = async function (...args) {
|
|
150
|
+
const tracer = getGlobalTracer();
|
|
151
|
+
return tracer.startActiveSpan(name, async (span) => {
|
|
152
|
+
if (options?.recordInput) {
|
|
153
|
+
span.setAttribute('input', JSON.stringify(args));
|
|
154
|
+
}
|
|
155
|
+
const result = await originalMethod.apply(this, args);
|
|
156
|
+
if (options?.recordOutput) {
|
|
157
|
+
span.setAttribute('output', JSON.stringify(result));
|
|
158
|
+
}
|
|
159
|
+
return result;
|
|
160
|
+
}, options);
|
|
161
|
+
};
|
|
162
|
+
return descriptor;
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=Tracer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tracer.js","sourceRoot":"","sources":["../src/Tracer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Console Exporter Implementation
|
|
3
|
+
*
|
|
4
|
+
* @requirement REQ-OBS-001, REQ-OBS-002
|
|
5
|
+
* @design DES-KATASHIRO-003-OBS §3.5
|
|
6
|
+
*/
|
|
7
|
+
import type { TraceExporter, TraceRecord, MetricsExporter, MetricsSnapshot } from '../types.js';
|
|
8
|
+
/**
|
|
9
|
+
* コンソールトレースエクスポーター
|
|
10
|
+
*/
|
|
11
|
+
export declare class ConsoleTraceExporter implements TraceExporter {
|
|
12
|
+
readonly name = "console";
|
|
13
|
+
export(record: TraceRecord): Promise<void>;
|
|
14
|
+
shutdown(): Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* コンソールメトリクスエクスポーター
|
|
18
|
+
*/
|
|
19
|
+
export declare class ConsoleMetricsExporter implements MetricsExporter {
|
|
20
|
+
readonly name = "console";
|
|
21
|
+
export(snapshot: MetricsSnapshot): Promise<void>;
|
|
22
|
+
shutdown(): Promise<void>;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=ConsoleExporter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConsoleExporter.d.ts","sourceRoot":"","sources":["../../src/exporters/ConsoleExporter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,WAAW,EACX,eAAe,EACf,eAAe,EAEhB,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,qBAAa,oBAAqB,YAAW,aAAa;IACxD,QAAQ,CAAC,IAAI,aAAa;IAEpB,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB1C,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAGhC;AAED;;GAEG;AACH,qBAAa,sBAAuB,YAAW,eAAe;IAC5D,QAAQ,CAAC,IAAI,aAAa;IAEpB,MAAM,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BhD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAGhC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Console Exporter Implementation
|
|
3
|
+
*
|
|
4
|
+
* @requirement REQ-OBS-001, REQ-OBS-002
|
|
5
|
+
* @design DES-KATASHIRO-003-OBS §3.5
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* コンソールトレースエクスポーター
|
|
9
|
+
*/
|
|
10
|
+
export class ConsoleTraceExporter {
|
|
11
|
+
name = 'console';
|
|
12
|
+
async export(record) {
|
|
13
|
+
const prefix = record.status.code === 'ERROR' ? '❌' : '✅';
|
|
14
|
+
const duration = record.durationMs ? `${record.durationMs}ms` : 'ongoing';
|
|
15
|
+
console.log(`${prefix} [TRACE] ${record.name} (${duration}) traceId=${record.traceId.slice(0, 8)}`);
|
|
16
|
+
if (record.status.code === 'ERROR') {
|
|
17
|
+
console.error(` Error: ${record.status.message}`);
|
|
18
|
+
}
|
|
19
|
+
if (Object.keys(record.attributes).length > 0) {
|
|
20
|
+
console.log(` Attributes:`, record.attributes);
|
|
21
|
+
}
|
|
22
|
+
for (const event of record.events) {
|
|
23
|
+
console.log(` Event: ${event.name} at ${event.timestamp}`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
async shutdown() {
|
|
27
|
+
// No-op for console
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* コンソールメトリクスエクスポーター
|
|
32
|
+
*/
|
|
33
|
+
export class ConsoleMetricsExporter {
|
|
34
|
+
name = 'console';
|
|
35
|
+
async export(snapshot) {
|
|
36
|
+
console.log(`\n📊 [METRICS] ${snapshot.timestamp}`);
|
|
37
|
+
if (Object.keys(snapshot.counters).length > 0) {
|
|
38
|
+
console.log(' Counters:');
|
|
39
|
+
for (const [key, value] of Object.entries(snapshot.counters)) {
|
|
40
|
+
console.log(` ${key}: ${value}`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if (Object.keys(snapshot.gauges).length > 0) {
|
|
44
|
+
console.log(' Gauges:');
|
|
45
|
+
for (const [key, value] of Object.entries(snapshot.gauges)) {
|
|
46
|
+
console.log(` ${key}: ${value}`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
if (Object.keys(snapshot.histograms).length > 0) {
|
|
50
|
+
console.log(' Histograms:');
|
|
51
|
+
for (const [key, data] of Object.entries(snapshot.histograms)) {
|
|
52
|
+
console.log(` ${key}: count=${data.count} avg=${data.avg.toFixed(2)} p50=${data.p50} p99=${data.p99}`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
async shutdown() {
|
|
57
|
+
// No-op for console
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=ConsoleExporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConsoleExporter.js","sourceRoot":"","sources":["../../src/exporters/ConsoleExporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File Exporter Implementation
|
|
3
|
+
*
|
|
4
|
+
* @requirement REQ-OBS-001, REQ-OBS-002
|
|
5
|
+
* @design DES-KATASHIRO-003-OBS §3.5
|
|
6
|
+
*/
|
|
7
|
+
import type { TraceExporter, TraceRecord, MetricsExporter, MetricsSnapshot } from '../types.js';
|
|
8
|
+
/**
|
|
9
|
+
* ファイルエクスポーター設定
|
|
10
|
+
*/
|
|
11
|
+
export interface FileExporterConfig {
|
|
12
|
+
/** 出力ファイルパス */
|
|
13
|
+
path: string;
|
|
14
|
+
/** 追記モード */
|
|
15
|
+
append?: boolean;
|
|
16
|
+
/** 行区切り */
|
|
17
|
+
delimiter?: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* ファイルトレースエクスポーター
|
|
21
|
+
*/
|
|
22
|
+
export declare class FileTraceExporter implements TraceExporter {
|
|
23
|
+
readonly name = "file";
|
|
24
|
+
private config;
|
|
25
|
+
private initialized;
|
|
26
|
+
constructor(config: FileExporterConfig);
|
|
27
|
+
export(record: TraceRecord): Promise<void>;
|
|
28
|
+
shutdown(): Promise<void>;
|
|
29
|
+
private ensureDir;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* ファイルメトリクスエクスポーター
|
|
33
|
+
*/
|
|
34
|
+
export declare class FileMetricsExporter implements MetricsExporter {
|
|
35
|
+
readonly name = "file";
|
|
36
|
+
private config;
|
|
37
|
+
private initialized;
|
|
38
|
+
constructor(config: FileExporterConfig);
|
|
39
|
+
export(snapshot: MetricsSnapshot): Promise<void>;
|
|
40
|
+
shutdown(): Promise<void>;
|
|
41
|
+
private ensureDir;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=FileExporter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileExporter.d.ts","sourceRoot":"","sources":["../../src/exporters/FileExporter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EACV,aAAa,EACb,WAAW,EACX,eAAe,EACf,eAAe,EAChB,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,eAAe;IACf,IAAI,EAAE,MAAM,CAAC;IACb,YAAY;IACZ,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,iBAAkB,YAAW,aAAa;IACrD,QAAQ,CAAC,IAAI,UAAU;IACvB,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,WAAW,CAAS;gBAEhB,MAAM,EAAE,kBAAkB;IAQhC,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAY1C,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;YAIjB,SAAS;CAMxB;AAED;;GAEG;AACH,qBAAa,mBAAoB,YAAW,eAAe;IACzD,QAAQ,CAAC,IAAI,UAAU;IACvB,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,WAAW,CAAS;gBAEhB,MAAM,EAAE,kBAAkB;IAQhC,MAAM,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAYhD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;YAIjB,SAAS;CAMxB"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File Exporter Implementation
|
|
3
|
+
*
|
|
4
|
+
* @requirement REQ-OBS-001, REQ-OBS-002
|
|
5
|
+
* @design DES-KATASHIRO-003-OBS §3.5
|
|
6
|
+
*/
|
|
7
|
+
import { writeFile, appendFile, mkdir } from 'fs/promises';
|
|
8
|
+
import { dirname } from 'path';
|
|
9
|
+
/**
|
|
10
|
+
* ファイルトレースエクスポーター
|
|
11
|
+
*/
|
|
12
|
+
export class FileTraceExporter {
|
|
13
|
+
name = 'file';
|
|
14
|
+
config;
|
|
15
|
+
initialized = false;
|
|
16
|
+
constructor(config) {
|
|
17
|
+
this.config = {
|
|
18
|
+
path: config.path,
|
|
19
|
+
append: config.append ?? true,
|
|
20
|
+
delimiter: config.delimiter ?? '\n',
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
async export(record) {
|
|
24
|
+
await this.ensureDir();
|
|
25
|
+
const line = JSON.stringify(record) + this.config.delimiter;
|
|
26
|
+
if (this.config.append) {
|
|
27
|
+
await appendFile(this.config.path, line, 'utf-8');
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
await writeFile(this.config.path, line, 'utf-8');
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
async shutdown() {
|
|
34
|
+
// No-op for file
|
|
35
|
+
}
|
|
36
|
+
async ensureDir() {
|
|
37
|
+
if (this.initialized)
|
|
38
|
+
return;
|
|
39
|
+
const dir = dirname(this.config.path);
|
|
40
|
+
await mkdir(dir, { recursive: true });
|
|
41
|
+
this.initialized = true;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* ファイルメトリクスエクスポーター
|
|
46
|
+
*/
|
|
47
|
+
export class FileMetricsExporter {
|
|
48
|
+
name = 'file';
|
|
49
|
+
config;
|
|
50
|
+
initialized = false;
|
|
51
|
+
constructor(config) {
|
|
52
|
+
this.config = {
|
|
53
|
+
path: config.path,
|
|
54
|
+
append: config.append ?? true,
|
|
55
|
+
delimiter: config.delimiter ?? '\n',
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
async export(snapshot) {
|
|
59
|
+
await this.ensureDir();
|
|
60
|
+
const line = JSON.stringify(snapshot) + this.config.delimiter;
|
|
61
|
+
if (this.config.append) {
|
|
62
|
+
await appendFile(this.config.path, line, 'utf-8');
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
await writeFile(this.config.path, line, 'utf-8');
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
async shutdown() {
|
|
69
|
+
// No-op for file
|
|
70
|
+
}
|
|
71
|
+
async ensureDir() {
|
|
72
|
+
if (this.initialized)
|
|
73
|
+
return;
|
|
74
|
+
const dir = dirname(this.config.path);
|
|
75
|
+
await mkdir(dir, { recursive: true });
|
|
76
|
+
this.initialized = true;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=FileExporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileExporter.js","sourceRoot":"","sources":["../../src/exporters/FileExporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Exporters Index
|
|
3
|
+
*
|
|
4
|
+
* @design DES-KATASHIRO-003-OBS §3.5
|
|
5
|
+
*/
|
|
6
|
+
export { ConsoleTraceExporter, ConsoleMetricsExporter } from './ConsoleExporter.js';
|
|
7
|
+
export { FileTraceExporter, FileMetricsExporter } from './FileExporter.js';
|
|
8
|
+
export type { FileExporterConfig } from './FileExporter.js';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/exporters/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Exporters Index
|
|
3
|
+
*
|
|
4
|
+
* @design DES-KATASHIRO-003-OBS §3.5
|
|
5
|
+
*/
|
|
6
|
+
export { ConsoleTraceExporter, ConsoleMetricsExporter } from './ConsoleExporter.js';
|
|
7
|
+
export { FileTraceExporter, FileMetricsExporter } from './FileExporter.js';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/exporters/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @nahisaho/katashiro-observability
|
|
3
|
+
* トレーシング・メトリクス・ロギング
|
|
4
|
+
*
|
|
5
|
+
* @requirement REQ-OBS-001, REQ-OBS-002, REQ-OBS-003, REQ-OBS-004, REQ-OBS-005
|
|
6
|
+
* @design DES-KATASHIRO-003-OBS
|
|
7
|
+
*/
|
|
8
|
+
export type { Span, SpanOptions, SpanStatus, SpanEvent, SpanLink, TraceRecord, TraceContext, TracerConfig, TraceExporter, AttributeValue, MetricsSnapshot, HistogramData, MetricsExporter, HealthCheck, HealthCheckResult, } from './types.js';
|
|
9
|
+
export { SpanImpl, NoopSpan } from './Span.js';
|
|
10
|
+
export { Tracer, getGlobalTracer, trace } from './Tracer.js';
|
|
11
|
+
export { MetricsCollector, getMetricsCollector, resetMetricsCollector, } from './MetricsCollector.js';
|
|
12
|
+
export { HealthChecker, getHealthChecker, resetHealthChecker, } from './HealthChecker.js';
|
|
13
|
+
export type { HealthCheckerConfig } from './HealthChecker.js';
|
|
14
|
+
export { ConsoleTraceExporter, ConsoleMetricsExporter, FileTraceExporter, FileMetricsExporter, } from './exporters/index.js';
|
|
15
|
+
export type { FileExporterConfig } from './exporters/index.js';
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,YAAY,EAEV,IAAI,EACJ,WAAW,EACX,UAAU,EACV,SAAS,EACT,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,cAAc,EAEd,eAAe,EACf,aAAa,EACb,eAAe,EAEf,WAAW,EACX,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAG/C,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAG7D,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAG9D,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @nahisaho/katashiro-observability
|
|
3
|
+
* トレーシング・メトリクス・ロギング
|
|
4
|
+
*
|
|
5
|
+
* @requirement REQ-OBS-001, REQ-OBS-002, REQ-OBS-003, REQ-OBS-004, REQ-OBS-005
|
|
6
|
+
* @design DES-KATASHIRO-003-OBS
|
|
7
|
+
*/
|
|
8
|
+
// Span
|
|
9
|
+
export { SpanImpl, NoopSpan } from './Span.js';
|
|
10
|
+
// Tracer
|
|
11
|
+
export { Tracer, getGlobalTracer, trace } from './Tracer.js';
|
|
12
|
+
// Metrics
|
|
13
|
+
export { MetricsCollector, getMetricsCollector, resetMetricsCollector, } from './MetricsCollector.js';
|
|
14
|
+
// Health
|
|
15
|
+
export { HealthChecker, getHealthChecker, resetHealthChecker, } from './HealthChecker.js';
|
|
16
|
+
// Exporters
|
|
17
|
+
export { ConsoleTraceExporter, ConsoleMetricsExporter, FileTraceExporter, FileMetricsExporter, } from './exporters/index.js';
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAwBH,OAAO;AACP,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE/C,SAAS;AACT,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAE7D,UAAU;AACV,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAE/B,SAAS;AACT,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAG5B,YAAY;AACZ,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC"}
|