@aztec/telemetry-client 0.82.2-alpha-testnet.4 → 0.82.3
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/dest/attributes.d.ts +1 -0
- package/dest/attributes.d.ts.map +1 -1
- package/dest/attributes.js +1 -0
- package/dest/lmdb_metrics.d.ts +1 -1
- package/dest/lmdb_metrics.d.ts.map +1 -1
- package/dest/metrics.d.ts +7 -2
- package/dest/metrics.d.ts.map +1 -1
- package/dest/metrics.js +7 -2
- package/dest/prom_otel_adapter.d.ts +57 -8
- package/dest/prom_otel_adapter.d.ts.map +1 -1
- package/dest/prom_otel_adapter.js +143 -43
- package/package.json +3 -3
- package/src/attributes.ts +1 -0
- package/src/metrics.ts +7 -2
- package/src/prom_otel_adapter.ts +191 -59
package/dest/attributes.d.ts
CHANGED
|
@@ -86,6 +86,7 @@ export declare const SIMULATOR_PHASE = "aztec.simulator.phase";
|
|
|
86
86
|
export declare const TARGET_ADDRESS = "aztec.address.target";
|
|
87
87
|
export declare const SENDER_ADDRESS = "aztec.address.sender";
|
|
88
88
|
export declare const MANA_USED = "aztec.mana.used";
|
|
89
|
+
export declare const TOTAL_INSTRUCTIONS = "aztec.total_instructions";
|
|
89
90
|
/** Whether a sync process is the initial run, which is usually slower than iterative ones. */
|
|
90
91
|
export declare const INITIAL_SYNC = "aztec.initial_sync";
|
|
91
92
|
/** Identifier for the tables in a world state DB */
|
package/dest/attributes.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attributes.d.ts","sourceRoot":"","sources":["../src/attributes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,mCAAmC;AACnC,eAAO,MAAM,YAAY,uBAAuB,CAAC;AAEjD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,wCAAwC,CAAC;AAE3E;;GAEG;AACH,eAAO,MAAM,qBAAqB,wCAAwC,CAAC;AAE3E;;GAEG;AACH,eAAO,MAAM,gBAAgB,mCAAmC,CAAC;AAEjE;;GAEG;AACH,eAAO,MAAM,gBAAgB,mCAAmC,CAAC;AAEjE,wBAAwB;AACxB,eAAO,MAAM,aAAa,wBAAwB,CAAC;AACnD,uBAAuB;AACvB,eAAO,MAAM,YAAY,uBAAuB,CAAC;AACjD,sBAAsB;AACtB,eAAO,MAAM,WAAW,sBAAsB,CAAC;AAC/C,gCAAgC;AAChC,eAAO,MAAM,YAAY,uBAAuB,CAAC;AACjD,2DAA2D;AAC3D,eAAO,MAAM,yBAAyB,oCAAoC,CAAC;AAC3E,sDAAsD;AACtD,eAAO,MAAM,eAAe,0BAA0B,CAAC;AACvD,qBAAqB;AACrB,eAAO,MAAM,UAAU,qBAAqB,CAAC;AAC7C,iDAAiD;AACjD,eAAO,MAAM,UAAU,qBAAqB,CAAC;AAC7C,8BAA8B;AAC9B,eAAO,MAAM,cAAc,yBAAyB,CAAC;AACrD,uBAAuB;AACvB,eAAO,MAAM,YAAY,uBAAuB,CAAC;AACjD,kBAAkB;AAClB,eAAO,MAAM,OAAO,kBAAkB,CAAC;AACvC,8EAA8E;AAC9E,eAAO,MAAM,EAAE,aAAa,CAAC;AAC7B,+BAA+B;AAC/B,eAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,mCAAmC;AACnC,eAAO,MAAM,UAAU,qBAAqB,CAAC;AAC7C,kCAAkC;AAClC,eAAO,MAAM,UAAU,qBAAqB,CAAC;AAC7C,iEAAiE;AACjE,eAAO,MAAM,SAAS,oBAAoB,CAAC;AAC3C,mCAAmC;AACnC,eAAO,MAAM,aAAa,wBAAwB,CAAC;AACnD,0CAA0C;AAC1C,eAAO,MAAM,kBAAkB,6BAA6B,CAAC;AAC7D,2BAA2B;AAC3B,eAAO,MAAM,gBAAgB,2BAA2B,CAAC;AACzD,yBAAyB;AACzB,eAAO,MAAM,cAAc,yBAAyB,CAAC;AAErD,eAAO,MAAM,gBAAgB,2BAA2B,CAAC;AACzD,4CAA4C;AAC5C,eAAO,MAAM,gBAAgB,2BAA2B,CAAC;AACzD,4EAA4E;AAC5E,eAAO,MAAM,eAAe,0BAA0B,CAAC;AAEvD,eAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,eAAO,MAAM,qBAAqB,gCAAgC,CAAC;AACnE,eAAO,MAAM,iCAAiC,4CAA4C,CAAC;AAC3F,eAAO,MAAM,SAAS,oBAAoB,CAAC;AAE3C,eAAO,MAAM,eAAe,0BAA0B,CAAC;AAEvD,eAAO,MAAM,eAAe,0BAA0B,CAAC;AACvD,eAAO,MAAM,cAAc,yBAAyB,CAAC;AACrD,eAAO,MAAM,cAAc,yBAAyB,CAAC;AACrD,eAAO,MAAM,SAAS,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"attributes.d.ts","sourceRoot":"","sources":["../src/attributes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,mCAAmC;AACnC,eAAO,MAAM,YAAY,uBAAuB,CAAC;AAEjD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,wCAAwC,CAAC;AAE3E;;GAEG;AACH,eAAO,MAAM,qBAAqB,wCAAwC,CAAC;AAE3E;;GAEG;AACH,eAAO,MAAM,gBAAgB,mCAAmC,CAAC;AAEjE;;GAEG;AACH,eAAO,MAAM,gBAAgB,mCAAmC,CAAC;AAEjE,wBAAwB;AACxB,eAAO,MAAM,aAAa,wBAAwB,CAAC;AACnD,uBAAuB;AACvB,eAAO,MAAM,YAAY,uBAAuB,CAAC;AACjD,sBAAsB;AACtB,eAAO,MAAM,WAAW,sBAAsB,CAAC;AAC/C,gCAAgC;AAChC,eAAO,MAAM,YAAY,uBAAuB,CAAC;AACjD,2DAA2D;AAC3D,eAAO,MAAM,yBAAyB,oCAAoC,CAAC;AAC3E,sDAAsD;AACtD,eAAO,MAAM,eAAe,0BAA0B,CAAC;AACvD,qBAAqB;AACrB,eAAO,MAAM,UAAU,qBAAqB,CAAC;AAC7C,iDAAiD;AACjD,eAAO,MAAM,UAAU,qBAAqB,CAAC;AAC7C,8BAA8B;AAC9B,eAAO,MAAM,cAAc,yBAAyB,CAAC;AACrD,uBAAuB;AACvB,eAAO,MAAM,YAAY,uBAAuB,CAAC;AACjD,kBAAkB;AAClB,eAAO,MAAM,OAAO,kBAAkB,CAAC;AACvC,8EAA8E;AAC9E,eAAO,MAAM,EAAE,aAAa,CAAC;AAC7B,+BAA+B;AAC/B,eAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,mCAAmC;AACnC,eAAO,MAAM,UAAU,qBAAqB,CAAC;AAC7C,kCAAkC;AAClC,eAAO,MAAM,UAAU,qBAAqB,CAAC;AAC7C,iEAAiE;AACjE,eAAO,MAAM,SAAS,oBAAoB,CAAC;AAC3C,mCAAmC;AACnC,eAAO,MAAM,aAAa,wBAAwB,CAAC;AACnD,0CAA0C;AAC1C,eAAO,MAAM,kBAAkB,6BAA6B,CAAC;AAC7D,2BAA2B;AAC3B,eAAO,MAAM,gBAAgB,2BAA2B,CAAC;AACzD,yBAAyB;AACzB,eAAO,MAAM,cAAc,yBAAyB,CAAC;AAErD,eAAO,MAAM,gBAAgB,2BAA2B,CAAC;AACzD,4CAA4C;AAC5C,eAAO,MAAM,gBAAgB,2BAA2B,CAAC;AACzD,4EAA4E;AAC5E,eAAO,MAAM,eAAe,0BAA0B,CAAC;AAEvD,eAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,eAAO,MAAM,qBAAqB,gCAAgC,CAAC;AACnE,eAAO,MAAM,iCAAiC,4CAA4C,CAAC;AAC3F,eAAO,MAAM,SAAS,oBAAoB,CAAC;AAE3C,eAAO,MAAM,eAAe,0BAA0B,CAAC;AAEvD,eAAO,MAAM,eAAe,0BAA0B,CAAC;AACvD,eAAO,MAAM,cAAc,yBAAyB,CAAC;AACrD,eAAO,MAAM,cAAc,yBAAyB,CAAC;AACrD,eAAO,MAAM,SAAS,oBAAoB,CAAC;AAC3C,eAAO,MAAM,kBAAkB,6BAA6B,CAAC;AAE7D,8FAA8F;AAC9F,eAAO,MAAM,YAAY,uBAAuB,CAAC;AAEjD,oDAAoD;AACpD,eAAO,MAAM,eAAe,8BAA8B,CAAC;AAE3D,iEAAiE;AACjE,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAE5C,eAAO,MAAM,aAAa,wBAAwB,CAAC;AAEnD,eAAO,MAAM,aAAa,wBAAwB,CAAC;AAEnD,eAAO,MAAM,wBAAwB,8BAA8B,CAAC;AAEpE,eAAO,MAAM,uBAAuB,2BAA2B,CAAC"}
|
package/dest/attributes.js
CHANGED
|
@@ -58,6 +58,7 @@ export const SIMULATOR_PHASE = 'aztec.simulator.phase';
|
|
|
58
58
|
export const TARGET_ADDRESS = 'aztec.address.target';
|
|
59
59
|
export const SENDER_ADDRESS = 'aztec.address.sender';
|
|
60
60
|
export const MANA_USED = 'aztec.mana.used';
|
|
61
|
+
export const TOTAL_INSTRUCTIONS = 'aztec.total_instructions';
|
|
61
62
|
/** Whether a sync process is the initial run, which is usually slower than iterative ones. */ export const INITIAL_SYNC = 'aztec.initial_sync';
|
|
62
63
|
/** Identifier for the tables in a world state DB */ export const WS_DB_DATA_TYPE = 'aztec.world_state.db_type';
|
|
63
64
|
/** Identifier for component database (e.g. archiver, tx pool) */ export const DB_DATA_TYPE = 'aztec.db_type';
|
package/dest/lmdb_metrics.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export declare class LmdbMetrics {
|
|
|
10
10
|
private dbMapSize;
|
|
11
11
|
private dbUsedSize;
|
|
12
12
|
private dbNumItems;
|
|
13
|
-
constructor(meter: Meter, attributes?: Partial<Record<"aztec.network_name" | "aztec.circuit.protocol_circuit_name" | "aztec.circuit.protocol_circuit_type" | "aztec.circuit.app_circuit_name" | "aztec.circuit.app_circuit_type" | "aztec.block.archive" | "aztec.block.number" | "aztec.slot.number" | "aztec.block.parent" | "aztec.block.candidate_txs_count" | "aztec.block.txs_count" | "aztec.block.size" | "aztec.epoch.size" | "aztec.block.proposer" | "aztec.epoch.number" | "aztec.tx.hash" | "aztec.ok" | "aztec.status" | "aztec.error_type" | "aztec.l1.tx_type" | "aztec.l1.sender" | "aztec.tx.phase_name" | "aztec.p2p.goodbye.reason" | "aztec.proving.job_type" | "aztec.proving.job_id" | "aztec.merkle_tree.name" | "aztec.rollup.prover_id" | "aztec.proof.timed_out" | "aztec.p2p.id" | "aztec.p2p.req_resp.protocol" | "aztec.p2p.req_resp.batch_requests_count" | "aztec.pool.name" | "aztec.sequencer.state" | "aztec.simulator.phase" | "aztec.address.target" | "aztec.address.sender" | "aztec.mana.used" | "aztec.initial_sync" | "aztec.world_state.db_type" | "aztec.db_type" | "aztec.revertibility" | "aztec.gas_dimension" | "aztec.world_state_request" | "nodejs.eventloop.state", import("@opentelemetry/api").AttributeValue>> | undefined, getStats?: LmdbStatsCallback | undefined);
|
|
13
|
+
constructor(meter: Meter, attributes?: Partial<Record<"aztec.network_name" | "aztec.circuit.protocol_circuit_name" | "aztec.circuit.protocol_circuit_type" | "aztec.circuit.app_circuit_name" | "aztec.circuit.app_circuit_type" | "aztec.block.archive" | "aztec.block.number" | "aztec.slot.number" | "aztec.block.parent" | "aztec.block.candidate_txs_count" | "aztec.block.txs_count" | "aztec.block.size" | "aztec.epoch.size" | "aztec.block.proposer" | "aztec.epoch.number" | "aztec.tx.hash" | "aztec.ok" | "aztec.status" | "aztec.error_type" | "aztec.l1.tx_type" | "aztec.l1.sender" | "aztec.tx.phase_name" | "aztec.p2p.goodbye.reason" | "aztec.proving.job_type" | "aztec.proving.job_id" | "aztec.merkle_tree.name" | "aztec.rollup.prover_id" | "aztec.proof.timed_out" | "aztec.p2p.id" | "aztec.p2p.req_resp.protocol" | "aztec.p2p.req_resp.batch_requests_count" | "aztec.pool.name" | "aztec.sequencer.state" | "aztec.simulator.phase" | "aztec.address.target" | "aztec.address.sender" | "aztec.mana.used" | "aztec.total_instructions" | "aztec.initial_sync" | "aztec.world_state.db_type" | "aztec.db_type" | "aztec.revertibility" | "aztec.gas_dimension" | "aztec.world_state_request" | "nodejs.eventloop.state", import("@opentelemetry/api").AttributeValue>> | undefined, getStats?: LmdbStatsCallback | undefined);
|
|
14
14
|
private recordDBMetrics;
|
|
15
15
|
}
|
|
16
16
|
//# sourceMappingURL=lmdb_metrics.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lmdb_metrics.d.ts","sourceRoot":"","sources":["../src/lmdb_metrics.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,KAAK,EAGX,MAAM,gBAAgB,CAAC;AAExB,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAE7G,qBAAa,WAAW;IAKI,OAAO,CAAC,UAAU,CAAC;IAAkB,OAAO,CAAC,QAAQ,CAAC;IAJhF,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,UAAU,CAAkB;gBAExB,KAAK,EAAE,KAAK,EAAU,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"lmdb_metrics.d.ts","sourceRoot":"","sources":["../src/lmdb_metrics.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,KAAK,EAGX,MAAM,gBAAgB,CAAC;AAExB,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAE7G,qBAAa,WAAW;IAKI,OAAO,CAAC,UAAU,CAAC;IAAkB,OAAO,CAAC,QAAQ,CAAC;IAJhF,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,UAAU,CAAkB;gBAExB,KAAK,EAAE,KAAK,EAAU,UAAU,CAAC,ysCAAgB,EAAU,QAAQ,CAAC,+BAAmB;IAmBnG,OAAO,CAAC,eAAe,CAQrB;CACH"}
|
package/dest/metrics.d.ts
CHANGED
|
@@ -59,6 +59,7 @@ export declare const L1_PUBLISHER_BLOB_INCLUSION_BLOCKS = "aztec.l1_publisher.bl
|
|
|
59
59
|
export declare const L1_PUBLISHER_BLOB_TX_SUCCESS = "aztec.l1_publisher.blob_tx_success";
|
|
60
60
|
export declare const L1_PUBLISHER_BLOB_TX_FAILURE = "aztec.l1_publisher.blob_tx_failure";
|
|
61
61
|
export declare const L1_PUBLISHER_BALANCE = "aztec.l1_publisher.balance";
|
|
62
|
+
export declare const L1_PUBLISHER_TX_TOTAL_FEE = "aztec.l1_publisher.tx_total_fee";
|
|
62
63
|
export declare const L1_BLOCK_HEIGHT = "aztec.l1.block_height";
|
|
63
64
|
export declare const L1_BALANCE_ETH = "aztec.l1.balance";
|
|
64
65
|
export declare const L1_GAS_PRICE_WEI = "aztec.l1.gas_price";
|
|
@@ -81,11 +82,15 @@ export declare const PUBLIC_PROCESSOR_TOTAL_GAS = "aztec.public_processor.total_
|
|
|
81
82
|
export declare const PUBLIC_PROCESSOR_TOTAL_GAS_HISTOGRAM = "aztec.public_processor.total_gas_histogram";
|
|
82
83
|
export declare const PUBLIC_PROCESSOR_GAS_RATE = "aztec.public_processor.gas_rate";
|
|
83
84
|
export declare const PUBLIC_PROCESSOR_TREE_INSERTION = "aztec.public_processor.tree_insertion";
|
|
85
|
+
export declare const PUBLIC_EXECUTOR_PREFIX = "aztec.public_executor.";
|
|
84
86
|
export declare const PUBLIC_EXECUTOR_SIMULATION_COUNT = "aztec.public_executor.simulation_count";
|
|
85
87
|
export declare const PUBLIC_EXECUTOR_SIMULATION_DURATION = "aztec.public_executor.simulation_duration";
|
|
86
88
|
export declare const PUBLIC_EXECUTOR_SIMULATION_MANA_PER_SECOND = "aztec.public_executor.simulation_mana_per_second";
|
|
87
|
-
export declare const
|
|
88
|
-
export declare const
|
|
89
|
+
export declare const PUBLIC_EXECUTOR_SIMULATION_MANA_USED = "aztec.public_executor.simulation_mana_used";
|
|
90
|
+
export declare const PUBLIC_EXECUTOR_SIMULATION_TOTAL_INSTRUCTIONS = "aztec.public_executor.simulation_total_instructions";
|
|
91
|
+
export declare const PUBLIC_EXECUTOR_TX_HASHING = "aztec.public_executor.tx_hashing";
|
|
92
|
+
export declare const PUBLIC_EXECUTOR_PRIVATE_EFFECTS_INSERTION = "aztec.public_executor.private_effects_insertion";
|
|
93
|
+
export declare const PUBLIC_EXECUTOR_SIMULATION_BYTECODE_SIZE = "aztec.public_executor.simulation_bytecode_size";
|
|
89
94
|
export declare const PROVING_ORCHESTRATOR_BASE_ROLLUP_INPUTS_DURATION = "aztec.proving_orchestrator.base_rollup.inputs_duration";
|
|
90
95
|
export declare const PROVING_QUEUE_JOB_SIZE = "aztec.proving_queue.job_size";
|
|
91
96
|
export declare const PROVING_QUEUE_SIZE = "aztec.proving_queue.size";
|
package/dest/metrics.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,+BAA+B,0CAA0C,CAAC;AACvF,eAAO,MAAM,mBAAmB,8BAA8B,CAAC;AAE/D,8CAA8C;AAC9C,eAAO,MAAM,2BAA2B,sCAAsC,CAAC;AAC/E,eAAO,MAAM,6BAA6B,wCAAwC,CAAC;AACnF,eAAO,MAAM,8BAA8B,yCAAyC,CAAC;AAErF,eAAO,MAAM,4BAA4B,8CAA8C,CAAC;AACxF,eAAO,MAAM,8BAA8B,gDAAgD,CAAC;AAC5F,eAAO,MAAM,+BAA+B,iDAAiD,CAAC;AAE9F,eAAO,MAAM,wBAAwB,mCAAmC,CAAC;AACzE,eAAO,MAAM,0BAA0B,qCAAqC,CAAC;AAC7E,eAAO,MAAM,0BAA0B,qCAAqC,CAAC;AAE7E,eAAO,MAAM,2BAA2B,sCAAsC,CAAC;AAC/E,eAAO,MAAM,kBAAkB,6BAA6B,CAAC;AAC7D,eAAO,MAAM,YAAY,uBAAuB,CAAC;AAEjD,eAAO,MAAM,gBAAgB,2BAA2B,CAAC;AACzD,eAAO,MAAM,eAAe,0BAA0B,CAAC;AACvD,eAAO,MAAM,YAAY,uBAAuB,CAAC;AACjD,eAAO,MAAM,WAAW,sBAAsB,CAAC;AAC/C,eAAO,MAAM,YAAY,uBAAuB,CAAC;AAEjD,eAAO,MAAM,0BAA0B,qCAAqC,CAAC;AAC7E,eAAO,MAAM,yBAAyB,oCAAoC,CAAC;AAE3E,eAAO,MAAM,sBAAsB,iCAAiC,CAAC;AACrE,eAAO,MAAM,yBAAyB,oCAAoC,CAAC;AAC3E,eAAO,MAAM,wBAAwB,mCAAmC,CAAC;AACzE,eAAO,MAAM,qBAAqB,gCAAgC,CAAC;AACnE,eAAO,MAAM,iBAAiB,4BAA4B,CAAC;AAC3D,eAAO,MAAM,2BAA2B,sCAAsC,CAAC;AAC/E,eAAO,MAAM,2BAA2B,sCAAsC,CAAC;AAC/E,eAAO,MAAM,oBAAoB,+BAA+B,CAAC;AAEjE,eAAO,MAAM,wBAAwB,mCAAmC,CAAC;AACzE,eAAO,MAAM,qBAAqB,gCAAgC,CAAC;AAEnE,eAAO,MAAM,0CAA0C,qDAAqD,CAAC;AAC7G,eAAO,MAAM,8BAA8B,yCAAyC,CAAC;AACrF,eAAO,MAAM,qCAAqC,gDAAgD,CAAC;AACnG,eAAO,MAAM,qBAAqB,gCAAgC,CAAC;AACnE,eAAO,MAAM,uBAAuB,kCAAkC,CAAC;AACvE,eAAO,MAAM,8BAA8B,yCAAyC,CAAC;AACrF,eAAO,MAAM,4BAA4B,uCAAuC,CAAC;AACjF,eAAO,MAAM,sCAAsC,iDAAiD,CAAC;AACrG,eAAO,MAAM,oCAAoC,0DAA0D,CAAC;AAE5G,eAAO,MAAM,sBAAsB,iCAAiC,CAAC;AACrE,eAAO,MAAM,qBAAqB,gCAAgC,CAAC;AACnE,eAAO,MAAM,wBAAwB,mCAAmC,CAAC;AACzE,eAAO,MAAM,mBAAmB,8BAA8B,CAAC;AAC/D,eAAO,MAAM,6BAA6B,wCAAwC,CAAC;AACnF,eAAO,MAAM,4BAA4B,uCAAuC,CAAC;AACjF,eAAO,MAAM,iCAAiC,4CAA4C,CAAC;AAC3F,eAAO,MAAM,iCAAiC,4CAA4C,CAAC;AAC3F,eAAO,MAAM,uBAAuB,kCAAkC,CAAC;AACvE,eAAO,MAAM,kCAAkC,6CAA6C,CAAC;AAC7F,eAAO,MAAM,4BAA4B,uCAAuC,CAAC;AACjF,eAAO,MAAM,4BAA4B,uCAAuC,CAAC;AACjF,eAAO,MAAM,oBAAoB,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"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"}
|
package/dest/metrics.js
CHANGED
|
@@ -57,6 +57,7 @@ export const L1_PUBLISHER_BLOB_INCLUSION_BLOCKS = 'aztec.l1_publisher.blob_inclu
|
|
|
57
57
|
export const L1_PUBLISHER_BLOB_TX_SUCCESS = 'aztec.l1_publisher.blob_tx_success';
|
|
58
58
|
export const L1_PUBLISHER_BLOB_TX_FAILURE = 'aztec.l1_publisher.blob_tx_failure';
|
|
59
59
|
export const L1_PUBLISHER_BALANCE = 'aztec.l1_publisher.balance';
|
|
60
|
+
export const L1_PUBLISHER_TX_TOTAL_FEE = 'aztec.l1_publisher.tx_total_fee';
|
|
60
61
|
export const L1_BLOCK_HEIGHT = 'aztec.l1.block_height';
|
|
61
62
|
export const L1_BALANCE_ETH = 'aztec.l1.balance';
|
|
62
63
|
export const L1_GAS_PRICE_WEI = 'aztec.l1.gas_price';
|
|
@@ -79,11 +80,15 @@ export const PUBLIC_PROCESSOR_TOTAL_GAS = 'aztec.public_processor.total_gas';
|
|
|
79
80
|
export const PUBLIC_PROCESSOR_TOTAL_GAS_HISTOGRAM = 'aztec.public_processor.total_gas_histogram';
|
|
80
81
|
export const PUBLIC_PROCESSOR_GAS_RATE = 'aztec.public_processor.gas_rate';
|
|
81
82
|
export const PUBLIC_PROCESSOR_TREE_INSERTION = 'aztec.public_processor.tree_insertion';
|
|
83
|
+
export const PUBLIC_EXECUTOR_PREFIX = 'aztec.public_executor.';
|
|
82
84
|
export const PUBLIC_EXECUTOR_SIMULATION_COUNT = 'aztec.public_executor.simulation_count';
|
|
83
85
|
export const PUBLIC_EXECUTOR_SIMULATION_DURATION = 'aztec.public_executor.simulation_duration';
|
|
84
86
|
export const PUBLIC_EXECUTOR_SIMULATION_MANA_PER_SECOND = 'aztec.public_executor.simulation_mana_per_second';
|
|
85
|
-
export const
|
|
86
|
-
export const
|
|
87
|
+
export const PUBLIC_EXECUTOR_SIMULATION_MANA_USED = 'aztec.public_executor.simulation_mana_used';
|
|
88
|
+
export const PUBLIC_EXECUTOR_SIMULATION_TOTAL_INSTRUCTIONS = 'aztec.public_executor.simulation_total_instructions';
|
|
89
|
+
export const PUBLIC_EXECUTOR_TX_HASHING = 'aztec.public_executor.tx_hashing';
|
|
90
|
+
export const PUBLIC_EXECUTOR_PRIVATE_EFFECTS_INSERTION = 'aztec.public_executor.private_effects_insertion';
|
|
91
|
+
export const PUBLIC_EXECUTOR_SIMULATION_BYTECODE_SIZE = 'aztec.public_executor.simulation_bytecode_size';
|
|
87
92
|
export const PROVING_ORCHESTRATOR_BASE_ROLLUP_INPUTS_DURATION = 'aztec.proving_orchestrator.base_rollup.inputs_duration';
|
|
88
93
|
export const PROVING_QUEUE_JOB_SIZE = 'aztec.proving_queue.job_size';
|
|
89
94
|
export const PROVING_QUEUE_SIZE = 'aztec.proving_queue.size';
|
|
@@ -97,18 +97,67 @@ export declare class OtelGauge<Labels extends LabelsGeneric = NoLabels> implemen
|
|
|
97
97
|
* Resets the gauge to initial state
|
|
98
98
|
*/
|
|
99
99
|
reset(): void;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Implementation of a Histogram collector
|
|
103
|
+
*/
|
|
104
|
+
export declare class OtelHistogram<Labels extends LabelsGeneric = NoLabels> implements IHistogram<Labels> {
|
|
105
|
+
private logger;
|
|
106
|
+
private labelNames;
|
|
107
|
+
private histogram;
|
|
108
|
+
constructor(logger: Logger, meter: Meter, name: string, help: string, buckets?: number[], labelNames?: Array<keyof Labels>);
|
|
109
|
+
/**
|
|
110
|
+
* Starts a timer and returns a function that when called will record the time elapsed
|
|
111
|
+
* @param labels - Optional labels for the observation
|
|
112
|
+
*/
|
|
113
|
+
startTimer(labels?: Labels): () => void;
|
|
114
|
+
/**
|
|
115
|
+
* Observes a value
|
|
116
|
+
* @param value - Value to observe
|
|
117
|
+
*/
|
|
118
|
+
observe(value: number): void;
|
|
119
|
+
/**
|
|
120
|
+
* Observes a value with labels
|
|
121
|
+
* @param labels - Labels object
|
|
122
|
+
* @param value - Value to observe
|
|
123
|
+
*/
|
|
124
|
+
observe(labels: Labels, value: number): void;
|
|
125
|
+
reset(): void;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Implementation of an AvgMinMax collector
|
|
129
|
+
*/
|
|
130
|
+
export declare class OtelAvgMinMax<Labels extends LabelsGeneric = NoLabels> implements IAvgMinMax<Labels> {
|
|
131
|
+
private logger;
|
|
132
|
+
private labelNames;
|
|
133
|
+
private gauges;
|
|
134
|
+
private currentValues;
|
|
135
|
+
private labeledValues;
|
|
136
|
+
constructor(logger: Logger, meter: Meter, name: string, help: string, labelNames?: Array<keyof Labels>);
|
|
137
|
+
/**
|
|
138
|
+
* Sets the values for calculating avg, min, max
|
|
139
|
+
* @param values - Array of values
|
|
140
|
+
*/
|
|
141
|
+
set(values: number[]): void;
|
|
100
142
|
/**
|
|
101
|
-
*
|
|
102
|
-
* @param labels - Labels object
|
|
103
|
-
* @
|
|
143
|
+
* Sets the values for calculating avg, min, max with labels
|
|
144
|
+
* @param labels - Labels object
|
|
145
|
+
* @param values - Array of values
|
|
104
146
|
*/
|
|
105
|
-
|
|
147
|
+
set(labels: Labels, values: number[]): void;
|
|
148
|
+
/**
|
|
149
|
+
* Resets all stored values
|
|
150
|
+
*/
|
|
151
|
+
reset(): void;
|
|
106
152
|
/**
|
|
107
|
-
*
|
|
108
|
-
* @param
|
|
109
|
-
* @
|
|
153
|
+
* General function to observe an aggregation
|
|
154
|
+
* @param result - Observer result
|
|
155
|
+
* @param aggregateFn - Function that calculates the aggregation
|
|
110
156
|
*/
|
|
111
|
-
private
|
|
157
|
+
private observeAggregation;
|
|
158
|
+
private observeAvg;
|
|
159
|
+
private observeMin;
|
|
160
|
+
private observeMax;
|
|
112
161
|
}
|
|
113
162
|
/**
|
|
114
163
|
* Otel metrics Adapter
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prom_otel_adapter.d.ts","sourceRoot":"","sources":["../src/prom_otel_adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"prom_otel_adapter.d.ts","sourceRoot":"","sources":["../src/prom_otel_adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAGlE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,KAAK,EAAa,KAAK,EAAgC,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtG;;GAEG;AACH,KAAK,QAAQ,GAAG,MAAM,CAAC;AACvB,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAChC,MAAM,MAAM,eAAe,GAAG,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAExD,oBAAY,aAAa;IACvB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED,KAAK,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACtC,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;AACrD,KAAK,SAAS,CAAC,MAAM,SAAS,aAAa,IAAI,OAAO,CAAC,MAAM,MAAM,EAAE,MAAM,CAAC,CAAC;AAC7E,UAAU,SAAS,CAAC,MAAM,SAAS,aAAa;IAC9C,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;CAChC;AAED,UAAU,MAAM,CAAC,MAAM,SAAS,aAAa,GAAG,QAAQ;IACtD,GAAG,EAAE,QAAQ,SAAS,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACnG,GAAG,EAAE,QAAQ,SAAS,MAAM,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAEjG,OAAO,CAAC,IAAI,IAAI,CAAC;IACjB,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;CAChD;AAED,UAAU,UAAU,CAAC,MAAM,SAAS,aAAa,GAAG,QAAQ;IAC1D,UAAU,IAAI,MAAM,IAAI,CAAC;IAEzB,OAAO,EAAE,QAAQ,SAAS,MAAM,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAErG,KAAK,IAAI,IAAI,CAAC;CACf;AAED,UAAU,UAAU,CAAC,MAAM,SAAS,aAAa,GAAG,QAAQ;IAC1D,GAAG,EAAE,QAAQ,SAAS,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CACxG;AAED,MAAM,MAAM,WAAW,CAAC,MAAM,SAAS,aAAa,IAAI;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,CAAC,QAAQ,SAAS,MAAM,GACxB;IAAE,UAAU,CAAC,EAAE,KAAK,CAAA;CAAE,GACtB;IAAE,UAAU,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;CAAE,CAAC,CAAC;AAEtE,MAAM,MAAM,eAAe,CAAC,MAAM,SAAS,aAAa,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG;IAChF,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,eAAe,CAAC,MAAM,SAAS,aAAa,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;AAEhF,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,MAAM,SAAS,aAAa,GAAG,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5F,SAAS,CAAC,MAAM,SAAS,aAAa,GAAG,QAAQ,EAAE,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACxG,SAAS,CAAC,MAAM,SAAS,aAAa,GAAG,QAAQ,EAAE,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;CACzG;AAED;;;;;;;;GAQG;AAEH,qBAAa,SAAS,CAAC,MAAM,SAAS,aAAa,GAAG,QAAQ,CAAE,YAAW,MAAM,CAAC,MAAM,CAAC;IAerF,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,UAAU;IAlBpB,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,UAAU,CAA2B;IAE7C,OAAO,CAAC,QAAQ,CAAwB;IACxC,IAAI,OAAO,IAAI,MAAM,IAAI,CAExB;IACD,IAAI,OAAO,CAAC,EAAE,EAAE,MAAM,IAAI,EAEzB;gBAGS,MAAM,EAAE,MAAM,EACtB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACJ,UAAU,GAAE,KAAK,CAAC,MAAM,MAAM,CAAM;IAU9C;;;OAGG;IACH,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI;IAI9C,iBAAiB,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI;IAuBpC;;;;OAIG;IACH,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IACzB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAkBzC;;;;OAIG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IACxB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAYxC;;;OAGG;IACH,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAY1B;;OAEG;IACH,KAAK,IAAI,IAAI;CAId;AAED;;GAEG;AACH,qBAAa,aAAa,CAAC,MAAM,SAAS,aAAa,GAAG,QAAQ,CAAE,YAAW,UAAU,CAAC,MAAM,CAAC;IAI7F,OAAO,CAAC,MAAM;IAKd,OAAO,CAAC,UAAU;IARpB,OAAO,CAAC,SAAS,CAAY;gBAGnB,MAAM,EAAE,MAAM,EACtB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAAM,EAAO,EACd,UAAU,GAAE,KAAK,CAAC,MAAM,MAAM,CAAM;IAQ9C;;;OAGG;IACH,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,IAAI;IAiBvC;;;OAGG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAC5B;;;;OAIG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAU5C,KAAK,IAAI,IAAI;CAId;AAED;;GAEG;AACH,qBAAa,aAAa,CAAC,MAAM,SAAS,aAAa,GAAG,QAAQ,CAAE,YAAW,UAAU,CAAC,MAAM,CAAC;IAW7F,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,UAAU;IAdpB,OAAO,CAAC,MAAM,CAIZ;IAEF,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,aAAa,CAAoC;gBAG/C,MAAM,EAAE,MAAM,EACtB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACJ,UAAU,GAAE,KAAK,CAAC,MAAM,MAAM,CAAM;IAqB9C;;;OAGG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAC3B;;;;OAIG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAY3C;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAiB1B,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,UAAU;CAGnB;AAwCD;;;;GAIG;AACH,qBAAa,kBAAmB,SAAQ,QAAS,YAAW,eAAe;IAKvE,OAAO,CAAC,MAAM;IAJhB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;gBAG5B,eAAe,EAAE,eAAe,EACxB,MAAM,GAAE,MAAuD;IAMzE,KAAK,CAAC,MAAM,SAAS,aAAa,GAAG,QAAQ,EAAE,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IAUlG,SAAS,CAAC,MAAM,SAAS,aAAa,GAAG,QAAQ,EAAE,aAAa,EAAE,eAAe,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC;IAW9G,SAAS,CAAC,MAAM,SAAS,aAAa,GAAG,QAAQ,EAAE,aAAa,EAAE,eAAe,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC;CAS/G"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createLogger } from '@aztec/foundation/log';
|
|
2
|
+
import { Timer } from '@aztec/foundation/timer';
|
|
2
3
|
import { Registry } from 'prom-client';
|
|
3
4
|
export var MessageSource = /*#__PURE__*/ function(MessageSource) {
|
|
4
5
|
MessageSource["forward"] = "forward";
|
|
@@ -59,7 +60,7 @@ export var MessageSource = /*#__PURE__*/ function(MessageSource) {
|
|
|
59
60
|
return;
|
|
60
61
|
}
|
|
61
62
|
for (const [labelStr, value] of this.labeledValues.entries()){
|
|
62
|
-
const labels =
|
|
63
|
+
const labels = parseLabelsSafely(labelStr, this.logger);
|
|
63
64
|
if (labels) {
|
|
64
65
|
result.observe(value, labels);
|
|
65
66
|
}
|
|
@@ -71,7 +72,7 @@ export var MessageSource = /*#__PURE__*/ function(MessageSource) {
|
|
|
71
72
|
return;
|
|
72
73
|
}
|
|
73
74
|
if (labelsOrValue) {
|
|
74
|
-
|
|
75
|
+
validateLabels(labelsOrValue, this.labelNames, 'Gauge');
|
|
75
76
|
const labelKey = JSON.stringify(labelsOrValue);
|
|
76
77
|
const currentValue = this.labeledValues.get(labelKey) ?? 0;
|
|
77
78
|
this.labeledValues.set(labelKey, currentValue + (value ?? 1));
|
|
@@ -84,7 +85,7 @@ export var MessageSource = /*#__PURE__*/ function(MessageSource) {
|
|
|
84
85
|
this.currentValue = labelsOrValue;
|
|
85
86
|
return;
|
|
86
87
|
}
|
|
87
|
-
|
|
88
|
+
validateLabels(labelsOrValue, this.labelNames, 'Gauge');
|
|
88
89
|
const labelKey = JSON.stringify(labelsOrValue);
|
|
89
90
|
this.labeledValues.set(labelKey, value);
|
|
90
91
|
}
|
|
@@ -93,7 +94,7 @@ export var MessageSource = /*#__PURE__*/ function(MessageSource) {
|
|
|
93
94
|
* @param labels - Optional labels object
|
|
94
95
|
*/ dec(labels) {
|
|
95
96
|
if (labels) {
|
|
96
|
-
|
|
97
|
+
validateLabels(labels, this.labelNames, 'Gauge');
|
|
97
98
|
const labelKey = JSON.stringify(labels);
|
|
98
99
|
const currentValue = this.labeledValues.get(labelKey) ?? 0;
|
|
99
100
|
this.labeledValues.set(labelKey, currentValue - 1);
|
|
@@ -107,58 +108,157 @@ export var MessageSource = /*#__PURE__*/ function(MessageSource) {
|
|
|
107
108
|
this.currentValue = 0;
|
|
108
109
|
this.labeledValues.clear();
|
|
109
110
|
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Implementation of a Histogram collector
|
|
114
|
+
*/ export class OtelHistogram {
|
|
115
|
+
logger;
|
|
116
|
+
labelNames;
|
|
117
|
+
histogram;
|
|
118
|
+
constructor(logger, meter, name, help, buckets = [], labelNames = []){
|
|
119
|
+
this.logger = logger;
|
|
120
|
+
this.labelNames = labelNames;
|
|
121
|
+
this.histogram = meter.createHistogram(name, {
|
|
122
|
+
description: help,
|
|
123
|
+
advice: buckets.length ? {
|
|
124
|
+
explicitBucketBoundaries: buckets
|
|
125
|
+
} : undefined
|
|
126
|
+
});
|
|
127
|
+
}
|
|
110
128
|
/**
|
|
111
|
-
*
|
|
112
|
-
* @param labels -
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
throw new Error('Gauge was initialized without labels support');
|
|
129
|
+
* Starts a timer and returns a function that when called will record the time elapsed
|
|
130
|
+
* @param labels - Optional labels for the observation
|
|
131
|
+
*/ startTimer(labels) {
|
|
132
|
+
if (labels) {
|
|
133
|
+
validateLabels(labels, this.labelNames, 'Histogram');
|
|
117
134
|
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
135
|
+
const timer = new Timer();
|
|
136
|
+
return ()=>{
|
|
137
|
+
// Use timer.s() here to get the duration in seconds since this is only currently used by gossipsub_heartbeat_duration_seconds
|
|
138
|
+
const duration = timer.s();
|
|
139
|
+
if (labels) {
|
|
140
|
+
this.observe(labels, duration);
|
|
141
|
+
} else {
|
|
142
|
+
this.observe(duration);
|
|
121
143
|
}
|
|
122
|
-
}
|
|
144
|
+
};
|
|
123
145
|
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
return JSON.parse(labelStr);
|
|
131
|
-
} catch {
|
|
132
|
-
this.logger.error(`Failed to parse label string: ${labelStr}`);
|
|
133
|
-
return null;
|
|
146
|
+
observe(labelsOrValue, value) {
|
|
147
|
+
if (typeof labelsOrValue === 'number') {
|
|
148
|
+
this.histogram.record(labelsOrValue);
|
|
149
|
+
} else {
|
|
150
|
+
validateLabels(labelsOrValue, this.labelNames, 'Histogram');
|
|
151
|
+
this.histogram.record(value, labelsOrValue);
|
|
134
152
|
}
|
|
135
153
|
}
|
|
154
|
+
reset() {
|
|
155
|
+
// OpenTelemetry histograms cannot be reset, but we implement the interface
|
|
156
|
+
this.logger.silent('OpenTelemetry histograms cannot be fully reset');
|
|
157
|
+
}
|
|
136
158
|
}
|
|
137
159
|
/**
|
|
138
|
-
*
|
|
139
|
-
*/ class
|
|
160
|
+
* Implementation of an AvgMinMax collector
|
|
161
|
+
*/ export class OtelAvgMinMax {
|
|
140
162
|
logger;
|
|
141
|
-
|
|
163
|
+
labelNames;
|
|
164
|
+
gauges;
|
|
165
|
+
currentValues;
|
|
166
|
+
labeledValues;
|
|
167
|
+
constructor(logger, meter, name, help, labelNames = []){
|
|
142
168
|
this.logger = logger;
|
|
169
|
+
this.labelNames = labelNames;
|
|
170
|
+
this.currentValues = [];
|
|
171
|
+
this.labeledValues = new Map();
|
|
172
|
+
// Create three separate gauges for avg, min, and max
|
|
173
|
+
this.gauges = {
|
|
174
|
+
avg: meter.createObservableGauge(`${name}_avg`, {
|
|
175
|
+
description: `${help} (average)`
|
|
176
|
+
}),
|
|
177
|
+
min: meter.createObservableGauge(`${name}_min`, {
|
|
178
|
+
description: `${help} (minimum)`
|
|
179
|
+
}),
|
|
180
|
+
max: meter.createObservableGauge(`${name}_max`, {
|
|
181
|
+
description: `${help} (maximum)`
|
|
182
|
+
})
|
|
183
|
+
};
|
|
184
|
+
// Register callbacks for each gauge
|
|
185
|
+
this.gauges.avg.addCallback(this.observeAvg.bind(this));
|
|
186
|
+
this.gauges.min.addCallback(this.observeMin.bind(this));
|
|
187
|
+
this.gauges.max.addCallback(this.observeMax.bind(this));
|
|
143
188
|
}
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
189
|
+
set(labelsOrValues, values) {
|
|
190
|
+
if (Array.isArray(labelsOrValues)) {
|
|
191
|
+
this.currentValues = labelsOrValues;
|
|
192
|
+
return;
|
|
193
|
+
} else {
|
|
194
|
+
validateLabels(labelsOrValues, this.labelNames, 'AvgMinMax');
|
|
195
|
+
const labelKey = JSON.stringify(labelsOrValues);
|
|
196
|
+
this.labeledValues.set(labelKey, values || []);
|
|
197
|
+
}
|
|
147
198
|
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
199
|
+
/**
|
|
200
|
+
* Resets all stored values
|
|
201
|
+
*/ reset() {
|
|
202
|
+
this.currentValues = [];
|
|
203
|
+
this.labeledValues.clear();
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* General function to observe an aggregation
|
|
207
|
+
* @param result - Observer result
|
|
208
|
+
* @param aggregateFn - Function that calculates the aggregation
|
|
209
|
+
*/ observeAggregation(result, aggregateFn) {
|
|
210
|
+
// Observe unlabeled values
|
|
211
|
+
if (this.currentValues.length > 0) {
|
|
212
|
+
result.observe(aggregateFn(this.currentValues));
|
|
213
|
+
}
|
|
214
|
+
// Observe labeled values
|
|
215
|
+
for (const [labelStr, values] of this.labeledValues.entries()){
|
|
216
|
+
if (values.length > 0) {
|
|
217
|
+
const labels = parseLabelsSafely(labelStr, this.logger);
|
|
218
|
+
if (labels) {
|
|
219
|
+
result.observe(aggregateFn(values), labels);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
observeAvg(result) {
|
|
225
|
+
this.observeAggregation(result, (arr)=>arr.reduce((sum, val)=>sum + val, 0) / arr.length);
|
|
226
|
+
}
|
|
227
|
+
observeMin(result) {
|
|
228
|
+
this.observeAggregation(result, (arr)=>Math.min.apply(null, arr));
|
|
229
|
+
}
|
|
230
|
+
observeMax(result) {
|
|
231
|
+
this.observeAggregation(result, (arr)=>Math.max.apply(null, arr));
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Validates that provided labels match the expected schema
|
|
236
|
+
* @param labels - Labels object to validate
|
|
237
|
+
* @param labelNames - Array of allowed label names
|
|
238
|
+
* @param metricType - Type of metric for error message ('Gauge', 'Histogram', 'AvgMinMax')
|
|
239
|
+
* @throws Error if invalid labels are provided
|
|
240
|
+
*/ function validateLabels(labels, labelNames, metricType) {
|
|
241
|
+
if (labelNames.length === 0) {
|
|
242
|
+
throw new Error(`${metricType} was initialized without labels support`);
|
|
243
|
+
}
|
|
244
|
+
for (const key of Object.keys(labels)){
|
|
245
|
+
if (!labelNames.includes(key)) {
|
|
246
|
+
throw new Error(`Invalid label key: ${key}`);
|
|
247
|
+
}
|
|
151
248
|
}
|
|
152
249
|
}
|
|
153
250
|
/**
|
|
154
|
-
*
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
251
|
+
* Safely parses label string back to object
|
|
252
|
+
* @param labelStr - Stringified labels object
|
|
253
|
+
* @param logger - Logger instance for error reporting
|
|
254
|
+
* @returns Labels object or null if parsing fails
|
|
255
|
+
*/ function parseLabelsSafely(labelStr, logger) {
|
|
256
|
+
try {
|
|
257
|
+
return JSON.parse(labelStr);
|
|
258
|
+
} catch {
|
|
259
|
+
logger.error(`Failed to parse label string: ${labelStr}`);
|
|
260
|
+
return null;
|
|
261
|
+
}
|
|
162
262
|
}
|
|
163
263
|
/**
|
|
164
264
|
* Otel metrics Adapter
|
|
@@ -175,9 +275,9 @@ export var MessageSource = /*#__PURE__*/ function(MessageSource) {
|
|
|
175
275
|
return new OtelGauge(this.logger, this.meter, configuration.name, configuration.help, configuration.labelNames);
|
|
176
276
|
}
|
|
177
277
|
histogram(configuration) {
|
|
178
|
-
return new
|
|
278
|
+
return new OtelHistogram(this.logger, this.meter, configuration.name, configuration.help, configuration.buckets, configuration.labelNames);
|
|
179
279
|
}
|
|
180
280
|
avgMinMax(configuration) {
|
|
181
|
-
return new
|
|
281
|
+
return new OtelAvgMinMax(this.logger, this.meter, configuration.name, configuration.help, configuration.labelNames);
|
|
182
282
|
}
|
|
183
283
|
}
|
package/package.json
CHANGED
|
@@ -26,8 +26,8 @@
|
|
|
26
26
|
"!*.test.*"
|
|
27
27
|
],
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@aztec/foundation": "0.82.
|
|
30
|
-
"@aztec/stdlib": "0.82.
|
|
29
|
+
"@aztec/foundation": "0.82.3",
|
|
30
|
+
"@aztec/stdlib": "0.82.3",
|
|
31
31
|
"@opentelemetry/api": "^1.9.0",
|
|
32
32
|
"@opentelemetry/api-logs": "^0.55.0",
|
|
33
33
|
"@opentelemetry/core": "^1.28.0",
|
|
@@ -86,5 +86,5 @@
|
|
|
86
86
|
"../../foundation/src/jest/setup.mjs"
|
|
87
87
|
]
|
|
88
88
|
},
|
|
89
|
-
"version": "0.82.
|
|
89
|
+
"version": "0.82.3"
|
|
90
90
|
}
|
package/src/attributes.ts
CHANGED
|
@@ -96,6 +96,7 @@ export const SIMULATOR_PHASE = 'aztec.simulator.phase';
|
|
|
96
96
|
export const TARGET_ADDRESS = 'aztec.address.target';
|
|
97
97
|
export const SENDER_ADDRESS = 'aztec.address.sender';
|
|
98
98
|
export const MANA_USED = 'aztec.mana.used';
|
|
99
|
+
export const TOTAL_INSTRUCTIONS = 'aztec.total_instructions';
|
|
99
100
|
|
|
100
101
|
/** Whether a sync process is the initial run, which is usually slower than iterative ones. */
|
|
101
102
|
export const INITIAL_SYNC = 'aztec.initial_sync';
|
package/src/metrics.ts
CHANGED
|
@@ -70,6 +70,7 @@ export const L1_PUBLISHER_BLOB_INCLUSION_BLOCKS = 'aztec.l1_publisher.blob_inclu
|
|
|
70
70
|
export const L1_PUBLISHER_BLOB_TX_SUCCESS = 'aztec.l1_publisher.blob_tx_success';
|
|
71
71
|
export const L1_PUBLISHER_BLOB_TX_FAILURE = 'aztec.l1_publisher.blob_tx_failure';
|
|
72
72
|
export const L1_PUBLISHER_BALANCE = 'aztec.l1_publisher.balance';
|
|
73
|
+
export const L1_PUBLISHER_TX_TOTAL_FEE = 'aztec.l1_publisher.tx_total_fee';
|
|
73
74
|
|
|
74
75
|
export const L1_BLOCK_HEIGHT = 'aztec.l1.block_height';
|
|
75
76
|
export const L1_BALANCE_ETH = 'aztec.l1.balance';
|
|
@@ -97,11 +98,15 @@ export const PUBLIC_PROCESSOR_TOTAL_GAS_HISTOGRAM = 'aztec.public_processor.tota
|
|
|
97
98
|
export const PUBLIC_PROCESSOR_GAS_RATE = 'aztec.public_processor.gas_rate';
|
|
98
99
|
export const PUBLIC_PROCESSOR_TREE_INSERTION = 'aztec.public_processor.tree_insertion';
|
|
99
100
|
|
|
101
|
+
export const PUBLIC_EXECUTOR_PREFIX = 'aztec.public_executor.';
|
|
100
102
|
export const PUBLIC_EXECUTOR_SIMULATION_COUNT = 'aztec.public_executor.simulation_count';
|
|
101
103
|
export const PUBLIC_EXECUTOR_SIMULATION_DURATION = 'aztec.public_executor.simulation_duration';
|
|
102
104
|
export const PUBLIC_EXECUTOR_SIMULATION_MANA_PER_SECOND = 'aztec.public_executor.simulation_mana_per_second';
|
|
103
|
-
export const
|
|
104
|
-
export const
|
|
105
|
+
export const PUBLIC_EXECUTOR_SIMULATION_MANA_USED = 'aztec.public_executor.simulation_mana_used';
|
|
106
|
+
export const PUBLIC_EXECUTOR_SIMULATION_TOTAL_INSTRUCTIONS = 'aztec.public_executor.simulation_total_instructions';
|
|
107
|
+
export const PUBLIC_EXECUTOR_TX_HASHING = 'aztec.public_executor.tx_hashing';
|
|
108
|
+
export const PUBLIC_EXECUTOR_PRIVATE_EFFECTS_INSERTION = 'aztec.public_executor.private_effects_insertion';
|
|
109
|
+
export const PUBLIC_EXECUTOR_SIMULATION_BYTECODE_SIZE = 'aztec.public_executor.simulation_bytecode_size';
|
|
105
110
|
|
|
106
111
|
export const PROVING_ORCHESTRATOR_BASE_ROLLUP_INPUTS_DURATION =
|
|
107
112
|
'aztec.proving_orchestrator.base_rollup.inputs_duration';
|
package/src/prom_otel_adapter.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { type Logger, createLogger } from '@aztec/foundation/log';
|
|
2
|
+
import { Timer } from '@aztec/foundation/timer';
|
|
2
3
|
|
|
3
4
|
import { Registry } from 'prom-client';
|
|
4
5
|
|
|
5
|
-
import type { Meter, MetricsType, ObservableGauge, TelemetryClient } from './telemetry.js';
|
|
6
|
+
import type { Histogram, Meter, MetricsType, ObservableGauge, TelemetryClient } from './telemetry.js';
|
|
6
7
|
|
|
7
8
|
/**
|
|
8
9
|
* Types matching the gossipsub and libp2p services
|
|
@@ -125,7 +126,7 @@ export class OtelGauge<Labels extends LabelsGeneric = NoLabels> implements IGaug
|
|
|
125
126
|
}
|
|
126
127
|
|
|
127
128
|
for (const [labelStr, value] of this.labeledValues.entries()) {
|
|
128
|
-
const labels =
|
|
129
|
+
const labels = parseLabelsSafely(labelStr, this.logger);
|
|
129
130
|
if (labels) {
|
|
130
131
|
result.observe(value, labels);
|
|
131
132
|
}
|
|
@@ -146,7 +147,7 @@ export class OtelGauge<Labels extends LabelsGeneric = NoLabels> implements IGaug
|
|
|
146
147
|
}
|
|
147
148
|
|
|
148
149
|
if (labelsOrValue) {
|
|
149
|
-
|
|
150
|
+
validateLabels(labelsOrValue, this.labelNames, 'Gauge');
|
|
150
151
|
const labelKey = JSON.stringify(labelsOrValue);
|
|
151
152
|
const currentValue = this.labeledValues.get(labelKey) ?? 0;
|
|
152
153
|
this.labeledValues.set(labelKey, currentValue + (value ?? 1));
|
|
@@ -169,7 +170,7 @@ export class OtelGauge<Labels extends LabelsGeneric = NoLabels> implements IGaug
|
|
|
169
170
|
return;
|
|
170
171
|
}
|
|
171
172
|
|
|
172
|
-
|
|
173
|
+
validateLabels(labelsOrValue, this.labelNames, 'Gauge');
|
|
173
174
|
const labelKey = JSON.stringify(labelsOrValue);
|
|
174
175
|
this.labeledValues.set(labelKey, value!);
|
|
175
176
|
}
|
|
@@ -180,7 +181,7 @@ export class OtelGauge<Labels extends LabelsGeneric = NoLabels> implements IGaug
|
|
|
180
181
|
*/
|
|
181
182
|
dec(labels?: Labels): void {
|
|
182
183
|
if (labels) {
|
|
183
|
-
|
|
184
|
+
validateLabels(labels, this.labelNames, 'Gauge');
|
|
184
185
|
const labelKey = JSON.stringify(labels);
|
|
185
186
|
const currentValue = this.labeledValues.get(labelKey) ?? 0;
|
|
186
187
|
this.labeledValues.set(labelKey, currentValue - 1);
|
|
@@ -197,84 +198,215 @@ export class OtelGauge<Labels extends LabelsGeneric = NoLabels> implements IGaug
|
|
|
197
198
|
this.currentValue = 0;
|
|
198
199
|
this.labeledValues.clear();
|
|
199
200
|
}
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* Implementation of a Histogram collector
|
|
205
|
+
*/
|
|
206
|
+
export class OtelHistogram<Labels extends LabelsGeneric = NoLabels> implements IHistogram<Labels> {
|
|
207
|
+
private histogram: Histogram;
|
|
208
|
+
|
|
209
|
+
constructor(
|
|
210
|
+
private logger: Logger,
|
|
211
|
+
meter: Meter,
|
|
212
|
+
name: string,
|
|
213
|
+
help: string,
|
|
214
|
+
buckets: number[] = [],
|
|
215
|
+
private labelNames: Array<keyof Labels> = [],
|
|
216
|
+
) {
|
|
217
|
+
this.histogram = meter.createHistogram(name as MetricsType, {
|
|
218
|
+
description: help,
|
|
219
|
+
advice: buckets.length ? { explicitBucketBoundaries: buckets } : undefined,
|
|
220
|
+
});
|
|
221
|
+
}
|
|
200
222
|
|
|
201
223
|
/**
|
|
202
|
-
*
|
|
203
|
-
* @param labels -
|
|
204
|
-
* @throws Error if invalid labels are provided
|
|
224
|
+
* Starts a timer and returns a function that when called will record the time elapsed
|
|
225
|
+
* @param labels - Optional labels for the observation
|
|
205
226
|
*/
|
|
206
|
-
|
|
207
|
-
if (
|
|
208
|
-
|
|
227
|
+
startTimer(labels?: Labels): () => void {
|
|
228
|
+
if (labels) {
|
|
229
|
+
validateLabels(labels, this.labelNames, 'Histogram');
|
|
209
230
|
}
|
|
210
231
|
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
232
|
+
const timer = new Timer();
|
|
233
|
+
return () => {
|
|
234
|
+
// Use timer.s() here to get the duration in seconds since this is only currently used by gossipsub_heartbeat_duration_seconds
|
|
235
|
+
const duration = timer.s();
|
|
236
|
+
if (labels) {
|
|
237
|
+
this.observe(labels, duration);
|
|
238
|
+
} else {
|
|
239
|
+
this.observe(duration);
|
|
214
240
|
}
|
|
215
|
-
}
|
|
241
|
+
};
|
|
216
242
|
}
|
|
217
243
|
|
|
218
244
|
/**
|
|
219
|
-
*
|
|
220
|
-
* @param
|
|
221
|
-
|
|
245
|
+
* Observes a value
|
|
246
|
+
* @param value - Value to observe
|
|
247
|
+
*/
|
|
248
|
+
observe(value: number): void;
|
|
249
|
+
/**
|
|
250
|
+
* Observes a value with labels
|
|
251
|
+
* @param labels - Labels object
|
|
252
|
+
* @param value - Value to observe
|
|
222
253
|
*/
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
254
|
+
observe(labels: Labels, value: number): void;
|
|
255
|
+
observe(labelsOrValue: Labels | number, value?: number): void {
|
|
256
|
+
if (typeof labelsOrValue === 'number') {
|
|
257
|
+
this.histogram.record(labelsOrValue);
|
|
258
|
+
} else {
|
|
259
|
+
validateLabels(labelsOrValue, this.labelNames, 'Histogram');
|
|
260
|
+
this.histogram.record(value!, labelsOrValue);
|
|
229
261
|
}
|
|
230
262
|
}
|
|
263
|
+
|
|
264
|
+
reset(): void {
|
|
265
|
+
// OpenTelemetry histograms cannot be reset, but we implement the interface
|
|
266
|
+
this.logger.silent('OpenTelemetry histograms cannot be fully reset');
|
|
267
|
+
}
|
|
231
268
|
}
|
|
232
269
|
|
|
233
270
|
/**
|
|
234
|
-
*
|
|
271
|
+
* Implementation of an AvgMinMax collector
|
|
235
272
|
*/
|
|
236
|
-
class
|
|
273
|
+
export class OtelAvgMinMax<Labels extends LabelsGeneric = NoLabels> implements IAvgMinMax<Labels> {
|
|
274
|
+
private gauges: {
|
|
275
|
+
avg: ObservableGauge;
|
|
276
|
+
min: ObservableGauge;
|
|
277
|
+
max: ObservableGauge;
|
|
278
|
+
};
|
|
279
|
+
|
|
280
|
+
private currentValues: number[] = [];
|
|
281
|
+
private labeledValues: Map<string, number[]> = new Map();
|
|
282
|
+
|
|
237
283
|
constructor(
|
|
238
284
|
private logger: Logger,
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
285
|
+
meter: Meter,
|
|
286
|
+
name: string,
|
|
287
|
+
help: string,
|
|
288
|
+
private labelNames: Array<keyof Labels> = [],
|
|
289
|
+
) {
|
|
290
|
+
// Create three separate gauges for avg, min, and max
|
|
291
|
+
this.gauges = {
|
|
292
|
+
avg: meter.createObservableGauge(`${name}_avg` as MetricsType, {
|
|
293
|
+
description: `${help} (average)`,
|
|
294
|
+
}),
|
|
295
|
+
min: meter.createObservableGauge(`${name}_min` as MetricsType, {
|
|
296
|
+
description: `${help} (minimum)`,
|
|
297
|
+
}),
|
|
298
|
+
max: meter.createObservableGauge(`${name}_max` as MetricsType, {
|
|
299
|
+
description: `${help} (maximum)`,
|
|
300
|
+
}),
|
|
301
|
+
};
|
|
302
|
+
|
|
303
|
+
// Register callbacks for each gauge
|
|
304
|
+
this.gauges.avg.addCallback(this.observeAvg.bind(this));
|
|
305
|
+
this.gauges.min.addCallback(this.observeMin.bind(this));
|
|
306
|
+
this.gauges.max.addCallback(this.observeMax.bind(this));
|
|
253
307
|
}
|
|
254
308
|
|
|
309
|
+
/**
|
|
310
|
+
* Sets the values for calculating avg, min, max
|
|
311
|
+
* @param values - Array of values
|
|
312
|
+
*/
|
|
313
|
+
set(values: number[]): void;
|
|
314
|
+
/**
|
|
315
|
+
* Sets the values for calculating avg, min, max with labels
|
|
316
|
+
* @param labels - Labels object
|
|
317
|
+
* @param values - Array of values
|
|
318
|
+
*/
|
|
319
|
+
set(labels: Labels, values: number[]): void;
|
|
320
|
+
set(labelsOrValues: number[] | Labels, values?: number[]): void {
|
|
321
|
+
if (Array.isArray(labelsOrValues)) {
|
|
322
|
+
this.currentValues = labelsOrValues;
|
|
323
|
+
return;
|
|
324
|
+
} else {
|
|
325
|
+
validateLabels(labelsOrValues, this.labelNames, 'AvgMinMax');
|
|
326
|
+
const labelKey = JSON.stringify(labelsOrValues);
|
|
327
|
+
this.labeledValues.set(labelKey, values || []);
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
/**
|
|
332
|
+
* Resets all stored values
|
|
333
|
+
*/
|
|
255
334
|
reset(): void {
|
|
256
|
-
|
|
257
|
-
this.
|
|
335
|
+
this.currentValues = [];
|
|
336
|
+
this.labeledValues.clear();
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
/**
|
|
340
|
+
* General function to observe an aggregation
|
|
341
|
+
* @param result - Observer result
|
|
342
|
+
* @param aggregateFn - Function that calculates the aggregation
|
|
343
|
+
*/
|
|
344
|
+
private observeAggregation(result: any, aggregateFn: (arr: number[]) => number): void {
|
|
345
|
+
// Observe unlabeled values
|
|
346
|
+
if (this.currentValues.length > 0) {
|
|
347
|
+
result.observe(aggregateFn(this.currentValues));
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
// Observe labeled values
|
|
351
|
+
for (const [labelStr, values] of this.labeledValues.entries()) {
|
|
352
|
+
if (values.length > 0) {
|
|
353
|
+
const labels = parseLabelsSafely(labelStr, this.logger);
|
|
354
|
+
if (labels) {
|
|
355
|
+
result.observe(aggregateFn(values), labels);
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
private observeAvg(result: any): void {
|
|
362
|
+
this.observeAggregation(result, arr => arr.reduce((sum, val) => sum + val, 0) / arr.length);
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
private observeMin(result: any): void {
|
|
366
|
+
this.observeAggregation(result, arr => Math.min.apply(null, arr));
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
private observeMax(result: any): void {
|
|
370
|
+
this.observeAggregation(result, arr => Math.max.apply(null, arr));
|
|
258
371
|
}
|
|
259
372
|
}
|
|
260
373
|
|
|
261
374
|
/**
|
|
262
|
-
*
|
|
375
|
+
* Validates that provided labels match the expected schema
|
|
376
|
+
* @param labels - Labels object to validate
|
|
377
|
+
* @param labelNames - Array of allowed label names
|
|
378
|
+
* @param metricType - Type of metric for error message ('Gauge', 'Histogram', 'AvgMinMax')
|
|
379
|
+
* @throws Error if invalid labels are provided
|
|
263
380
|
*/
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
381
|
+
function validateLabels<Labels extends LabelsGeneric>(
|
|
382
|
+
labels: Labels,
|
|
383
|
+
labelNames: Array<keyof Labels>,
|
|
384
|
+
metricType: string,
|
|
385
|
+
): void {
|
|
386
|
+
if (labelNames.length === 0) {
|
|
387
|
+
throw new Error(`${metricType} was initialized without labels support`);
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
for (const key of Object.keys(labels)) {
|
|
391
|
+
if (!labelNames.includes(key as keyof Labels)) {
|
|
392
|
+
throw new Error(`Invalid label key: ${key}`);
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
/**
|
|
398
|
+
* Safely parses label string back to object
|
|
399
|
+
* @param labelStr - Stringified labels object
|
|
400
|
+
* @param logger - Logger instance for error reporting
|
|
401
|
+
* @returns Labels object or null if parsing fails
|
|
402
|
+
*/
|
|
403
|
+
function parseLabelsSafely<Labels extends LabelsGeneric>(labelStr: string, logger: Logger): Labels | null {
|
|
404
|
+
try {
|
|
405
|
+
return JSON.parse(labelStr) as Labels;
|
|
406
|
+
} catch {
|
|
407
|
+
logger.error(`Failed to parse label string: ${labelStr}`);
|
|
408
|
+
return null;
|
|
409
|
+
}
|
|
278
410
|
}
|
|
279
411
|
|
|
280
412
|
/**
|
|
@@ -304,7 +436,7 @@ export class OtelMetricsAdapter extends Registry implements MetricsRegister {
|
|
|
304
436
|
}
|
|
305
437
|
|
|
306
438
|
histogram<Labels extends LabelsGeneric = NoLabels>(configuration: HistogramConfig<Labels>): IHistogram<Labels> {
|
|
307
|
-
return new
|
|
439
|
+
return new OtelHistogram<Labels>(
|
|
308
440
|
this.logger,
|
|
309
441
|
this.meter,
|
|
310
442
|
configuration.name as MetricsType,
|
|
@@ -315,7 +447,7 @@ export class OtelMetricsAdapter extends Registry implements MetricsRegister {
|
|
|
315
447
|
}
|
|
316
448
|
|
|
317
449
|
avgMinMax<Labels extends LabelsGeneric = NoLabels>(configuration: AvgMinMaxConfig<Labels>): IAvgMinMax<Labels> {
|
|
318
|
-
return new
|
|
450
|
+
return new OtelAvgMinMax<Labels>(
|
|
319
451
|
this.logger,
|
|
320
452
|
this.meter,
|
|
321
453
|
configuration.name as MetricsType,
|