@newrelic/preflight 1.45.0 → 1.47.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/dist/config.d.ts +13 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +35 -0
- package/dist/config.js.map +1 -1
- package/dist/dashboard/basic-auth.d.ts +6 -0
- package/dist/dashboard/basic-auth.d.ts.map +1 -0
- package/dist/dashboard/basic-auth.js +26 -0
- package/dist/dashboard/basic-auth.js.map +1 -0
- package/dist/dashboard/dashboard-server.d.ts +10 -0
- package/dist/dashboard/dashboard-server.d.ts.map +1 -1
- package/dist/dashboard/dashboard-server.js +8 -0
- package/dist/dashboard/dashboard-server.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -1
- package/dist/index.js.map +1 -1
- package/dist/storage/index.d.ts +2 -0
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +1 -0
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/tier-local-writer.d.ts +40 -0
- package/dist/storage/tier-local-writer.d.ts.map +1 -0
- package/dist/storage/tier-local-writer.js +63 -0
- package/dist/storage/tier-local-writer.js.map +1 -0
- package/dist/transport/nr-ingest.d.ts +46 -1
- package/dist/transport/nr-ingest.d.ts.map +1 -1
- package/dist/transport/nr-ingest.js +200 -63
- package/dist/transport/nr-ingest.js.map +1 -1
- package/dist/transport/tier-router.d.ts +29 -0
- package/dist/transport/tier-router.d.ts.map +1 -0
- package/dist/transport/tier-router.js +52 -0
- package/dist/transport/tier-router.js.map +1 -0
- package/dist/transport/tier-types.d.ts +73 -0
- package/dist/transport/tier-types.d.ts.map +1 -0
- package/dist/transport/tier-types.js +192 -0
- package/dist/transport/tier-types.js.map +1 -0
- package/package.json +1 -1
|
@@ -21,6 +21,7 @@ import { AuditTrailManager } from '../security/index.js';
|
|
|
21
21
|
import type { AuditRecord } from '../security/index.js';
|
|
22
22
|
import type { TurnCostAttributor, ClosedTurn } from '../metrics/turn-cost-attributor.js';
|
|
23
23
|
import type { LocalStore } from '../storage/index.js';
|
|
24
|
+
import type { ResolvedTier } from './tier-types.js';
|
|
24
25
|
type SendEventsFn = (events: NrEventData[], licenseKey: string, options: TransportOptions) => Promise<TransportResult>;
|
|
25
26
|
type SendMetricsFn = (metrics: NrMetric[], licenseKey: string, options: TransportOptions) => Promise<TransportResult>;
|
|
26
27
|
type SendLogsFn = (logs: NrLogEntry[], licenseKey: string, options: TransportOptions) => Promise<TransportResult>;
|
|
@@ -92,6 +93,18 @@ export interface NrIngestOptions {
|
|
|
92
93
|
* share `session_id` === OTel's `session.id`). Default false.
|
|
93
94
|
*/
|
|
94
95
|
companionMode?: boolean;
|
|
96
|
+
/**
|
|
97
|
+
* Multi-tier telemetry routing. Threaded from `config.tiers`.
|
|
98
|
+
* Absent or empty → one implicit `default` tier is synthesized from
|
|
99
|
+
* `licenseKey` + `transportOptions.accountId`, reproducing the existing
|
|
100
|
+
* single-scheduler behavior exactly.
|
|
101
|
+
*
|
|
102
|
+
* The FIRST nr-type tier in array order is the **primary tier**: it carries
|
|
103
|
+
* the aggregated Metric API stream, the NR Logs API audit entries, the OTLP
|
|
104
|
+
* bridge/transport, and the `getEventSendHealth()` counters. At least one
|
|
105
|
+
* nr-type tier is required.
|
|
106
|
+
*/
|
|
107
|
+
tiers?: readonly ResolvedTier[];
|
|
95
108
|
}
|
|
96
109
|
export declare function attachTeamAttribution(event: NrEventData, attrs: {
|
|
97
110
|
teamId?: string | null;
|
|
@@ -358,7 +371,12 @@ export declare function turnCostToNrEvents(turn: ClosedTurn, attrs: {
|
|
|
358
371
|
companionMode?: boolean;
|
|
359
372
|
}): NrEventData[];
|
|
360
373
|
export declare class NrIngestManager {
|
|
361
|
-
private readonly
|
|
374
|
+
private readonly schedulers;
|
|
375
|
+
private readonly localWriters;
|
|
376
|
+
private readonly router;
|
|
377
|
+
/** First nr-type tier — carries metrics, logs, OTLP, and send-health. */
|
|
378
|
+
private readonly primaryScheduler;
|
|
379
|
+
private readonly primaryTierName;
|
|
362
380
|
private readonly logIngest;
|
|
363
381
|
private readonly sessionTracker;
|
|
364
382
|
private readonly proxyMetrics;
|
|
@@ -392,6 +410,33 @@ export declare class NrIngestManager {
|
|
|
392
410
|
lastFailureAt: number | null;
|
|
393
411
|
lastSuccessAt: number | null;
|
|
394
412
|
};
|
|
413
|
+
/**
|
|
414
|
+
* All configured tier names — NOT in overall declaration order. All
|
|
415
|
+
* nr-type tier names come first (in their own declaration order relative
|
|
416
|
+
* to each other), followed by all local-type tier names (likewise in
|
|
417
|
+
* their own relative declaration order). A local tier declared before an
|
|
418
|
+
* nr tier in config still appears after every nr tier here, because this
|
|
419
|
+
* reads `this.schedulers.keys()` (nr tiers) then `this.localWriters.keys()`
|
|
420
|
+
* (local tiers) — two separate maps keyed by destination type.
|
|
421
|
+
*/
|
|
422
|
+
getTierNames(): readonly string[];
|
|
423
|
+
/** The tier carrying metrics, logs, OTLP, and send-health. */
|
|
424
|
+
getPrimaryTierName(): string;
|
|
425
|
+
/**
|
|
426
|
+
* Fan one NR event out to every tier whose `eventTypes` matches, in tier
|
|
427
|
+
* declaration order. The single choke point through which all ~15
|
|
428
|
+
* `ingestX()` methods emit events.
|
|
429
|
+
*
|
|
430
|
+
* The same event object is shared by reference across tiers — field-level
|
|
431
|
+
* redaction/projection per tier is an explicit non-goal (routing is
|
|
432
|
+
* event-type-level only). Neither `HarvestScheduler.addEvent()` nor
|
|
433
|
+
* `TierLocalWriter.addEvent()` mutates it.
|
|
434
|
+
*
|
|
435
|
+
* An event whose type matches no tier is dropped silently: a narrow tier
|
|
436
|
+
* list is a deliberate operator choice, and logging per dropped event would
|
|
437
|
+
* flood stderr at tool-call volume.
|
|
438
|
+
*/
|
|
439
|
+
private routeEvent;
|
|
395
440
|
ingestProxyRequest(record: ProxyRequestRecord): void;
|
|
396
441
|
ingestToolCall(record: ToolCallRecord, auditRecord?: AuditRecord): void;
|
|
397
442
|
ingestCodingTask(task: AiCodingTask): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nr-ingest.d.ts","sourceRoot":"","sources":["../../src/transport/nr-ingest.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"nr-ingest.d.ts","sourceRoot":"","sources":["../../src/transport/nr-ingest.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,9 @@ import { VERSION } from '../version.js';
|
|
|
9
9
|
import { ProxyMetricsTracker } from '../metrics/proxy-metrics.js';
|
|
10
10
|
import { AuditTrailManager, auditRecordToNrEvent, securityAlertToNrEvent, } from '../security/index.js';
|
|
11
11
|
import { LogIngestManager } from './log-ingest.js';
|
|
12
|
+
import { TierRouter } from './tier-router.js';
|
|
13
|
+
import { DEFAULT_TIER_NAME, WILDCARD_EVENT_TYPE } from './tier-types.js';
|
|
14
|
+
import { TierLocalWriter } from '../storage/tier-local-writer.js';
|
|
12
15
|
// ---------------------------------------------------------------------------
|
|
13
16
|
// Serializer
|
|
14
17
|
// ---------------------------------------------------------------------------
|
|
@@ -591,7 +594,12 @@ class DeveloperAttributedMetricAggregator extends MetricAggregator {
|
|
|
591
594
|
// NrIngestManager
|
|
592
595
|
// ---------------------------------------------------------------------------
|
|
593
596
|
export class NrIngestManager {
|
|
594
|
-
|
|
597
|
+
schedulers;
|
|
598
|
+
localWriters;
|
|
599
|
+
router;
|
|
600
|
+
/** First nr-type tier — carries metrics, logs, OTLP, and send-health. */
|
|
601
|
+
primaryScheduler;
|
|
602
|
+
primaryTierName;
|
|
595
603
|
logIngest;
|
|
596
604
|
sessionTracker;
|
|
597
605
|
proxyMetrics;
|
|
@@ -669,25 +677,35 @@ export class NrIngestManager {
|
|
|
669
677
|
// Wrap send functions so non-retryable 4xx failures (400, 403, etc.) are not
|
|
670
678
|
// re-queued by HarvestScheduler. Returning success=true suppresses the requeue
|
|
671
679
|
// without masking the original error — we log a warning before returning.
|
|
680
|
+
//
|
|
681
|
+
// One wrapper per tier so the tier name appears in the drop log. Only the
|
|
682
|
+
// primary tier moves the `getEventSendHealth()` counters: those describe
|
|
683
|
+
// "is this process's own telemetry landing", and a secondary team-account
|
|
684
|
+
// tier being unreachable must not make the primary look unhealthy.
|
|
672
685
|
const rawSendEventsFn = options.sendEventsFn ?? sendEvents;
|
|
673
|
-
const
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
686
|
+
const makeClassifyingEventsFn = (tierName, isPrimary) => {
|
|
687
|
+
return async (events, licenseKey, opts) => {
|
|
688
|
+
const result = await rawSendEventsFn(events, licenseKey, opts);
|
|
689
|
+
if (isPrimary) {
|
|
690
|
+
if (result.success) {
|
|
691
|
+
this.consecutiveEventSendFailures = 0;
|
|
692
|
+
this.lastEventSendSuccessAt = Date.now();
|
|
693
|
+
}
|
|
694
|
+
else {
|
|
695
|
+
this.consecutiveEventSendFailures += 1;
|
|
696
|
+
this.lastEventSendFailureAt = Date.now();
|
|
697
|
+
}
|
|
698
|
+
}
|
|
699
|
+
if (!result.success && result.statusCode !== null && isNonRetryable4xx(result.statusCode)) {
|
|
700
|
+
logger.warn('Dropping non-retryable event batch', {
|
|
701
|
+
tier: tierName,
|
|
702
|
+
statusCode: result.statusCode,
|
|
703
|
+
batchSize: events.length,
|
|
704
|
+
});
|
|
705
|
+
return { ...result, success: true };
|
|
706
|
+
}
|
|
707
|
+
return result;
|
|
708
|
+
};
|
|
691
709
|
};
|
|
692
710
|
const rawSendMetricsFn = options.sendMetricsFn ?? sendMetrics;
|
|
693
711
|
const classifyingMetricsFn = async (metrics, licenseKey, opts) => {
|
|
@@ -706,21 +724,88 @@ export class NrIngestManager {
|
|
|
706
724
|
clientName: 'newrelic-preflight',
|
|
707
725
|
clientVersion: VERSION,
|
|
708
726
|
};
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
727
|
+
// Absent/empty tiers → one implicit tier reproducing the existing
|
|
728
|
+
// single-scheduler behavior exactly (same licenseKey, same
|
|
729
|
+
// transportOptions, same OTLP objects, same transport mode).
|
|
730
|
+
const tiers = options.tiers !== undefined && options.tiers.length > 0
|
|
731
|
+
? options.tiers
|
|
732
|
+
: [
|
|
733
|
+
{
|
|
734
|
+
name: DEFAULT_TIER_NAME,
|
|
735
|
+
destination: {
|
|
736
|
+
type: 'nr',
|
|
737
|
+
licenseKey: options.licenseKey,
|
|
738
|
+
accountId: options.transportOptions.accountId,
|
|
739
|
+
},
|
|
740
|
+
eventTypes: [WILDCARD_EVENT_TYPE],
|
|
741
|
+
},
|
|
742
|
+
];
|
|
743
|
+
this.router = new TierRouter(tiers);
|
|
744
|
+
this.schedulers = new Map();
|
|
745
|
+
this.localWriters = new Map();
|
|
746
|
+
let primaryScheduler = null;
|
|
747
|
+
let primaryTierName = null;
|
|
748
|
+
let primaryLicenseKey = null;
|
|
749
|
+
let primaryTransportOptions = null;
|
|
750
|
+
const seenTierNames = new Set();
|
|
751
|
+
for (const tier of tiers) {
|
|
752
|
+
// validateTiers() already rejects duplicate names at config load; this
|
|
753
|
+
// guard covers direct programmatic construction (several existing
|
|
754
|
+
// tests build a `tiers` array by hand, bypassing validateTiers()). Without
|
|
755
|
+
// it, `this.schedulers.set(tier.name, scheduler)` /
|
|
756
|
+
// `this.localWriters.set(tier.name, ...)` would silently let the second
|
|
757
|
+
// tier's scheduler/writer overwrite the first's, so events meant for two
|
|
758
|
+
// destinations would silently double up on whichever survives instead
|
|
759
|
+
// of reaching both — with no error.
|
|
760
|
+
if (seenTierNames.has(tier.name)) {
|
|
761
|
+
throw new Error(`NrIngestManager received duplicate tier name "${tier.name}" — tier names must be unique.`);
|
|
762
|
+
}
|
|
763
|
+
seenTierNames.add(tier.name);
|
|
764
|
+
if (tier.destination.type === 'local') {
|
|
765
|
+
this.localWriters.set(tier.name, new TierLocalWriter({ tierName: tier.name, path: tier.destination.path }));
|
|
766
|
+
continue;
|
|
767
|
+
}
|
|
768
|
+
const isPrimary = primaryScheduler === null;
|
|
769
|
+
const tierTransportOptions = {
|
|
770
|
+
...transportOptions,
|
|
771
|
+
accountId: tier.destination.accountId,
|
|
772
|
+
};
|
|
773
|
+
const scheduler = new HarvestScheduler({
|
|
774
|
+
licenseKey: tier.destination.licenseKey,
|
|
775
|
+
transportOptions: tierTransportOptions,
|
|
776
|
+
eventHarvestIntervalMs: options.eventHarvestIntervalMs,
|
|
777
|
+
metricHarvestIntervalMs: options.metricHarvestIntervalMs,
|
|
778
|
+
sendEventsFn: makeClassifyingEventsFn(tier.name, isPrimary),
|
|
779
|
+
sendMetricsFn: classifyingMetricsFn,
|
|
780
|
+
// Per-tier OTLP is an explicit non-goal — OTLP stays bound to the
|
|
781
|
+
// primary tier, so secondary tiers are NR-events-only.
|
|
782
|
+
otlpEventBridge: isPrimary ? (otlpEventBridge ?? undefined) : undefined,
|
|
783
|
+
otlpTransport: isPrimary ? (otlpTransport ?? undefined) : undefined,
|
|
784
|
+
transport: isPrimary ? options.transport : 'nr-events-api',
|
|
785
|
+
allowProcessExit: true,
|
|
786
|
+
});
|
|
787
|
+
this.schedulers.set(tier.name, scheduler);
|
|
788
|
+
if (isPrimary) {
|
|
789
|
+
primaryScheduler = scheduler;
|
|
790
|
+
primaryTierName = tier.name;
|
|
791
|
+
primaryLicenseKey = tier.destination.licenseKey;
|
|
792
|
+
primaryTransportOptions = tierTransportOptions;
|
|
793
|
+
}
|
|
794
|
+
}
|
|
795
|
+
if (primaryScheduler === null ||
|
|
796
|
+
primaryTierName === null ||
|
|
797
|
+
primaryLicenseKey === null ||
|
|
798
|
+
primaryTransportOptions === null) {
|
|
799
|
+
// validateTiers() already enforces this at config load; this guard covers
|
|
800
|
+
// direct programmatic construction.
|
|
801
|
+
throw new Error('NrIngestManager requires at least one nr-type tier — the aggregated Metric API stream ' +
|
|
802
|
+
'and NR Logs API audit entries are delivered through the primary tier.');
|
|
803
|
+
}
|
|
804
|
+
this.primaryScheduler = primaryScheduler;
|
|
805
|
+
this.primaryTierName = primaryTierName;
|
|
721
806
|
this.logIngest = new LogIngestManager({
|
|
722
|
-
licenseKey:
|
|
723
|
-
transportOptions,
|
|
807
|
+
licenseKey: primaryLicenseKey,
|
|
808
|
+
transportOptions: primaryTransportOptions,
|
|
724
809
|
developer: options.developer,
|
|
725
810
|
appName: options.appName,
|
|
726
811
|
logHarvestIntervalMs: options.logHarvestIntervalMs,
|
|
@@ -734,6 +819,48 @@ export class NrIngestManager {
|
|
|
734
819
|
lastSuccessAt: this.lastEventSendSuccessAt,
|
|
735
820
|
};
|
|
736
821
|
}
|
|
822
|
+
/**
|
|
823
|
+
* All configured tier names — NOT in overall declaration order. All
|
|
824
|
+
* nr-type tier names come first (in their own declaration order relative
|
|
825
|
+
* to each other), followed by all local-type tier names (likewise in
|
|
826
|
+
* their own relative declaration order). A local tier declared before an
|
|
827
|
+
* nr tier in config still appears after every nr tier here, because this
|
|
828
|
+
* reads `this.schedulers.keys()` (nr tiers) then `this.localWriters.keys()`
|
|
829
|
+
* (local tiers) — two separate maps keyed by destination type.
|
|
830
|
+
*/
|
|
831
|
+
getTierNames() {
|
|
832
|
+
return [...this.schedulers.keys(), ...this.localWriters.keys()];
|
|
833
|
+
}
|
|
834
|
+
/** The tier carrying metrics, logs, OTLP, and send-health. */
|
|
835
|
+
getPrimaryTierName() {
|
|
836
|
+
return this.primaryTierName;
|
|
837
|
+
}
|
|
838
|
+
/**
|
|
839
|
+
* Fan one NR event out to every tier whose `eventTypes` matches, in tier
|
|
840
|
+
* declaration order. The single choke point through which all ~15
|
|
841
|
+
* `ingestX()` methods emit events.
|
|
842
|
+
*
|
|
843
|
+
* The same event object is shared by reference across tiers — field-level
|
|
844
|
+
* redaction/projection per tier is an explicit non-goal (routing is
|
|
845
|
+
* event-type-level only). Neither `HarvestScheduler.addEvent()` nor
|
|
846
|
+
* `TierLocalWriter.addEvent()` mutates it.
|
|
847
|
+
*
|
|
848
|
+
* An event whose type matches no tier is dropped silently: a narrow tier
|
|
849
|
+
* list is a deliberate operator choice, and logging per dropped event would
|
|
850
|
+
* flood stderr at tool-call volume.
|
|
851
|
+
*/
|
|
852
|
+
routeEvent(event) {
|
|
853
|
+
const rawEventType = event.eventType;
|
|
854
|
+
const eventType = typeof rawEventType === 'string' ? rawEventType : '';
|
|
855
|
+
for (const tierName of this.router.resolveEventType(eventType)) {
|
|
856
|
+
const scheduler = this.schedulers.get(tierName);
|
|
857
|
+
if (scheduler !== undefined) {
|
|
858
|
+
scheduler.addEvent(event);
|
|
859
|
+
continue;
|
|
860
|
+
}
|
|
861
|
+
this.localWriters.get(tierName)?.addEvent(event);
|
|
862
|
+
}
|
|
863
|
+
}
|
|
737
864
|
ingestProxyRequest(record) {
|
|
738
865
|
const event = proxyRequestToNrEvent(record, {
|
|
739
866
|
developer: this.developer,
|
|
@@ -743,11 +870,14 @@ export class NrIngestManager {
|
|
|
743
870
|
orgId: this.orgId,
|
|
744
871
|
repoUrl: this.repoUrl,
|
|
745
872
|
});
|
|
746
|
-
this.
|
|
873
|
+
this.routeEvent(event);
|
|
747
874
|
const server = record.serverName;
|
|
748
|
-
this.
|
|
875
|
+
this.primaryScheduler.recordMetric('ai.mcp.proxy_request_count', 1, {
|
|
876
|
+
server,
|
|
877
|
+
method: record.method,
|
|
878
|
+
});
|
|
749
879
|
if (record.durationMs != null) {
|
|
750
|
-
this.
|
|
880
|
+
this.primaryScheduler.recordMetric('ai.mcp.proxy_request_duration_ms', record.durationMs, {
|
|
751
881
|
server,
|
|
752
882
|
});
|
|
753
883
|
}
|
|
@@ -775,7 +905,7 @@ export class NrIngestManager {
|
|
|
775
905
|
// Cost attribution is available via the nr_observe_get_cost_per_tool MCP tool only.
|
|
776
906
|
// Enriching NR events here would always produce null because the token event
|
|
777
907
|
// (which finalizes turn cost) arrives asynchronously after ingestToolCall is called.
|
|
778
|
-
this.
|
|
908
|
+
this.routeEvent(event);
|
|
779
909
|
// Record per-call metrics for NR Metric API. Prefer the record's own
|
|
780
910
|
// sessionId (see the comment on the AiToolCall event above) — this also
|
|
781
911
|
// covers proxy calls' own per-connection sessionId (see
|
|
@@ -792,11 +922,11 @@ export class NrIngestManager {
|
|
|
792
922
|
teamDims.org_id = this.orgId;
|
|
793
923
|
if (this.repoUrl)
|
|
794
924
|
teamDims.repo_url = this.repoUrl;
|
|
795
|
-
this.
|
|
925
|
+
this.primaryScheduler.recordMetric('ai.tool.call_count', 1, sessionId != null ? { tool, session_id: sessionId, ...teamDims } : { tool, ...teamDims });
|
|
796
926
|
if (record.durationMs != null) {
|
|
797
|
-
this.
|
|
927
|
+
this.primaryScheduler.recordMetric('ai.tool.duration_ms', record.durationMs, sessionId != null ? { tool, session_id: sessionId, ...teamDims } : { tool, ...teamDims });
|
|
798
928
|
}
|
|
799
|
-
this.
|
|
929
|
+
this.primaryScheduler.recordMetric('ai.tool.success', record.success ? 1 : 0, sessionId != null ? { tool, session_id: sessionId, ...teamDims } : { tool, ...teamDims });
|
|
800
930
|
// If this is a proxied tool call, also emit AiMcpToolCall event and aggregate
|
|
801
931
|
if (isProxyToolCall(record)) {
|
|
802
932
|
const proxyEvent = proxyToolCallToNrEvent(record, {
|
|
@@ -808,7 +938,7 @@ export class NrIngestManager {
|
|
|
808
938
|
orgId: this.orgId,
|
|
809
939
|
repoUrl: this.repoUrl,
|
|
810
940
|
});
|
|
811
|
-
this.
|
|
941
|
+
this.routeEvent(proxyEvent);
|
|
812
942
|
this.proxyMetrics.recordProxyCall(record);
|
|
813
943
|
}
|
|
814
944
|
// Security audit trail. The caller may pass a pre-computed auditRecord
|
|
@@ -818,14 +948,14 @@ export class NrIngestManager {
|
|
|
818
948
|
(isProxyToolCall(record)
|
|
819
949
|
? this.auditTrail.recordProxyCall(record)
|
|
820
950
|
: this.auditTrail.recordToolCall(record));
|
|
821
|
-
this.
|
|
951
|
+
this.routeEvent(auditRecordToNrEvent(finalAuditRecord, {
|
|
822
952
|
teamId: this.teamId,
|
|
823
953
|
projectId: this.projectId,
|
|
824
954
|
orgId: this.orgId,
|
|
825
955
|
repoUrl: this.repoUrl,
|
|
826
956
|
}));
|
|
827
957
|
if (finalAuditRecord.securityAlert) {
|
|
828
|
-
this.
|
|
958
|
+
this.routeEvent(securityAlertToNrEvent(finalAuditRecord, {
|
|
829
959
|
teamId: this.teamId,
|
|
830
960
|
projectId: this.projectId,
|
|
831
961
|
orgId: this.orgId,
|
|
@@ -846,7 +976,7 @@ export class NrIngestManager {
|
|
|
846
976
|
repoUrl: this.repoUrl,
|
|
847
977
|
companionMode: this.companionMode,
|
|
848
978
|
});
|
|
849
|
-
this.
|
|
979
|
+
this.routeEvent(event);
|
|
850
980
|
}
|
|
851
981
|
/**
|
|
852
982
|
* Buffer a completed workflow run as a single `AiWorkflowRun` event.
|
|
@@ -866,7 +996,7 @@ export class NrIngestManager {
|
|
|
866
996
|
repoUrl: this.repoUrl,
|
|
867
997
|
companionMode: this.companionMode,
|
|
868
998
|
});
|
|
869
|
-
this.
|
|
999
|
+
this.routeEvent(event);
|
|
870
1000
|
}
|
|
871
1001
|
/**
|
|
872
1002
|
* Buffer a script-watcher-derived workflow run (`run_source='script'`).
|
|
@@ -884,7 +1014,7 @@ export class NrIngestManager {
|
|
|
884
1014
|
repoUrl: this.repoUrl,
|
|
885
1015
|
companionMode: this.companionMode,
|
|
886
1016
|
});
|
|
887
|
-
this.
|
|
1017
|
+
this.routeEvent(event);
|
|
888
1018
|
}
|
|
889
1019
|
/**
|
|
890
1020
|
* Buffer a single subagent assistant turn (`AiSubagentTurn`).
|
|
@@ -901,7 +1031,7 @@ export class NrIngestManager {
|
|
|
901
1031
|
repoUrl: this.repoUrl,
|
|
902
1032
|
companionMode: this.companionMode,
|
|
903
1033
|
});
|
|
904
|
-
this.
|
|
1034
|
+
this.routeEvent(event);
|
|
905
1035
|
}
|
|
906
1036
|
/**
|
|
907
1037
|
* Buffer a `SubagentTokenEvent` (storage-layer record) as an `AiSubagentTurn`
|
|
@@ -918,7 +1048,7 @@ export class NrIngestManager {
|
|
|
918
1048
|
repoUrl: this.repoUrl,
|
|
919
1049
|
companionMode: this.companionMode,
|
|
920
1050
|
});
|
|
921
|
-
this.
|
|
1051
|
+
this.routeEvent(ev);
|
|
922
1052
|
}
|
|
923
1053
|
/** Buffer an `AiObservabilityHealth` event from the watcher pipeline. */
|
|
924
1054
|
ingestObservabilityHealth(metrics) {
|
|
@@ -930,7 +1060,7 @@ export class NrIngestManager {
|
|
|
930
1060
|
orgId: this.orgId,
|
|
931
1061
|
repoUrl: this.repoUrl,
|
|
932
1062
|
});
|
|
933
|
-
this.
|
|
1063
|
+
this.routeEvent(event);
|
|
934
1064
|
}
|
|
935
1065
|
ingestAntiPattern(pattern, context) {
|
|
936
1066
|
const event = antiPatternToNrEvent(pattern, {
|
|
@@ -945,7 +1075,7 @@ export class NrIngestManager {
|
|
|
945
1075
|
repoUrl: this.repoUrl,
|
|
946
1076
|
detectedAt: context.detectedAt,
|
|
947
1077
|
});
|
|
948
|
-
this.
|
|
1078
|
+
this.routeEvent(event);
|
|
949
1079
|
}
|
|
950
1080
|
ingestRetryAlert(alert, context = {}) {
|
|
951
1081
|
const event = retryAlertToNrEvent(alert, {
|
|
@@ -958,7 +1088,7 @@ export class NrIngestManager {
|
|
|
958
1088
|
orgId: this.orgId,
|
|
959
1089
|
repoUrl: this.repoUrl,
|
|
960
1090
|
});
|
|
961
|
-
this.
|
|
1091
|
+
this.routeEvent(event);
|
|
962
1092
|
}
|
|
963
1093
|
ingestTurnCost(turn) {
|
|
964
1094
|
const events = turnCostToNrEvents(turn, {
|
|
@@ -971,7 +1101,7 @@ export class NrIngestManager {
|
|
|
971
1101
|
companionMode: this.companionMode,
|
|
972
1102
|
});
|
|
973
1103
|
for (const event of events) {
|
|
974
|
-
this.
|
|
1104
|
+
this.routeEvent(event);
|
|
975
1105
|
}
|
|
976
1106
|
}
|
|
977
1107
|
ingestContextSnapshot(snapshot, topTools) {
|
|
@@ -1007,7 +1137,7 @@ export class NrIngestManager {
|
|
|
1007
1137
|
nrEvent.repo_url = this.repoUrl;
|
|
1008
1138
|
if (this.sessionTraceId != null)
|
|
1009
1139
|
nrEvent.session_id = this.sessionTraceId;
|
|
1010
|
-
this.
|
|
1140
|
+
this.routeEvent(nrEvent);
|
|
1011
1141
|
}
|
|
1012
1142
|
ingestBudgetWarning(event) {
|
|
1013
1143
|
const nrEvent = {
|
|
@@ -1032,13 +1162,14 @@ export class NrIngestManager {
|
|
|
1032
1162
|
nrEvent.repo_url = this.repoUrl;
|
|
1033
1163
|
if (this.sessionTraceId != null)
|
|
1034
1164
|
nrEvent.session_id = this.sessionTraceId;
|
|
1035
|
-
this.
|
|
1165
|
+
this.routeEvent(nrEvent);
|
|
1036
1166
|
}
|
|
1037
1167
|
start() {
|
|
1038
1168
|
if (this.running)
|
|
1039
1169
|
return;
|
|
1040
1170
|
this.running = true;
|
|
1041
|
-
this.
|
|
1171
|
+
for (const scheduler of this.schedulers.values())
|
|
1172
|
+
scheduler.start();
|
|
1042
1173
|
this.logIngest.start();
|
|
1043
1174
|
// Emit session-level gauges on the metric harvest cadence
|
|
1044
1175
|
this.sessionGaugeIntervalId = setInterval(() => {
|
|
@@ -1057,7 +1188,10 @@ export class NrIngestManager {
|
|
|
1057
1188
|
this.sessionGaugeIntervalId = null;
|
|
1058
1189
|
}
|
|
1059
1190
|
this.running = false;
|
|
1060
|
-
const cleanupPromises = [
|
|
1191
|
+
const cleanupPromises = [
|
|
1192
|
+
...[...this.schedulers.values()].map((scheduler) => scheduler.stop()),
|
|
1193
|
+
this.logIngest.stop(),
|
|
1194
|
+
];
|
|
1061
1195
|
if (this.otlpTransport) {
|
|
1062
1196
|
cleanupPromises.push(this.otlpTransport.shutdown());
|
|
1063
1197
|
}
|
|
@@ -1085,7 +1219,7 @@ export class NrIngestManager {
|
|
|
1085
1219
|
if (this.repoUrl)
|
|
1086
1220
|
teamAttrs.repo_url = this.repoUrl;
|
|
1087
1221
|
const record = (name, value, attrs = {}) => {
|
|
1088
|
-
this.
|
|
1222
|
+
this.primaryScheduler.recordMetric(name, value, sessionId != null ? { session_id: sessionId, ...attrs } : attrs);
|
|
1089
1223
|
};
|
|
1090
1224
|
if (this.trackSessionGauges) {
|
|
1091
1225
|
const metrics = this.sessionTracker.getMetrics();
|
|
@@ -1101,7 +1235,7 @@ export class NrIngestManager {
|
|
|
1101
1235
|
this.apiFailureTracker ||
|
|
1102
1236
|
this.gitEfficiencyTracker) {
|
|
1103
1237
|
const developer = this.developer;
|
|
1104
|
-
const scheduler = this.
|
|
1238
|
+
const scheduler = this.primaryScheduler;
|
|
1105
1239
|
const devAggregator = new DeveloperAttributedMetricAggregator((name, value, attrs) => {
|
|
1106
1240
|
scheduler.recordMetric(name, value, sessionId != null
|
|
1107
1241
|
? { developer, session_id: sessionId, ...teamAttrs, ...attrs }
|
|
@@ -1120,30 +1254,33 @@ export class NrIngestManager {
|
|
|
1120
1254
|
// Emit aggregated proxy metrics
|
|
1121
1255
|
const proxyMetrics = this.proxyMetrics.getMetrics();
|
|
1122
1256
|
for (const [server, stats] of Object.entries(proxyMetrics.perServer)) {
|
|
1123
|
-
this.
|
|
1257
|
+
this.primaryScheduler.recordMetric('ai.mcp.server_call_count', stats.callCount, {
|
|
1124
1258
|
server,
|
|
1125
1259
|
...teamAttrs,
|
|
1126
1260
|
});
|
|
1127
1261
|
if (stats.latencyMs.count > 0) {
|
|
1128
1262
|
const avg = stats.latencyMs.sum / stats.latencyMs.count;
|
|
1129
|
-
this.
|
|
1263
|
+
this.primaryScheduler.recordMetric('ai.mcp.server_latency_ms', avg, {
|
|
1264
|
+
server,
|
|
1265
|
+
...teamAttrs,
|
|
1266
|
+
});
|
|
1130
1267
|
}
|
|
1131
1268
|
if (stats.errorRate > 0) {
|
|
1132
|
-
this.
|
|
1269
|
+
this.primaryScheduler.recordMetric('ai.mcp.server_error_rate', stats.errorRate, {
|
|
1133
1270
|
server,
|
|
1134
1271
|
...teamAttrs,
|
|
1135
1272
|
});
|
|
1136
1273
|
}
|
|
1137
1274
|
}
|
|
1138
1275
|
if (proxyMetrics.avgProxyOverheadMs > 0) {
|
|
1139
|
-
this.
|
|
1276
|
+
this.primaryScheduler.recordMetric('ai.mcp.proxy_overhead_ms', proxyMetrics.avgProxyOverheadMs, {
|
|
1140
1277
|
...teamAttrs,
|
|
1141
1278
|
});
|
|
1142
1279
|
}
|
|
1143
1280
|
// Cap at 100 (tool, server) combinations to stay within NR Metric API cardinality limits.
|
|
1144
1281
|
const MAX_TOOL_POPULARITY_ENTRIES = 100;
|
|
1145
1282
|
for (const entry of proxyMetrics.toolPopularity.slice(0, MAX_TOOL_POPULARITY_ENTRIES)) {
|
|
1146
|
-
this.
|
|
1283
|
+
this.primaryScheduler.recordMetric('ai.mcp.tool_popularity', entry.count, {
|
|
1147
1284
|
tool: entry.tool,
|
|
1148
1285
|
server: entry.server,
|
|
1149
1286
|
...teamAttrs,
|