-
Notifications
You must be signed in to change notification settings - Fork 234
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: add OpenTelemetry to node #7102
Conversation
d4b6a21
to
ef39dbe
Compare
Benchmark resultsMetrics with a significant change:
Detailed resultsAll benchmarks are run on txs on the This benchmark source data is available in JSON format on S3 here. Proof generationEach column represents the number of threads used in proof generation.
L2 block published to L1Each column represents the number of txs on an L2 block published to L1.
L2 chain processingEach column represents the number of blocks on the L2 chain where each block has 8 txs.
Circuits statsStats on running time and I/O sizes collected for every kernel circuit run across all benchmarks.
Stats on running time collected for app circuits
AVM SimulationTime to simulate various public functions in the AVM.
Public DB AccessTime to access various public DBs.
Tree insertion statsThe duration to insert a fixed batch of leaves into each tree type.
MiscellaneousTransaction sizes based on how many contract classes are registered in the tx.
Transaction size based on fee payment method | Metric | | |
ef39dbe
to
4974c23
Compare
4974c23
to
39a5e84
Compare
) {} | ||
) { | ||
const meter = telemetry.getMeter('Archiver'); | ||
this.blockHeight = meter.createGauge(Metrics.ARCHIVER_BLOCK_HEIGHT, { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If the meter is Archiver
, is it redundant to call the gauge "ARCHIVER_"? Should/Could it be the case that components other than the Archiver want to use a more generic Metrics.BLOCK_HEIGHT
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍 makes sense to keep it generic.
Unforunatley the meter name isn't captured by Prometheus as an attribute. (the OTEL data model is hierarchical: the meter "archiver" owns the gauge but that relationship doens't make it into the prom data)
@@ -104,6 +106,7 @@ export class AztecNodeService implements AztecNode { | |||
protected readonly merkleTreesDb: AztecKVStore, | |||
private readonly prover: ProverClient | undefined, | |||
private txValidator: TxValidator, | |||
private telemetry: TelemetryClient, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just a thought: this reminds me of react prop-drilling. Might it be better for a global like this to have a global getter that returns a "real" or "no-op" client based on environment variables? Then components can request it ad-hoc in their constructors.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I had thought about it, but didn't implement it because we don't have other global instances. After drilling the instance in so many places, I think it makes sense to make it global
} | ||
|
||
public async stop() { | ||
await Promise.all([this.meterProvider.shutdown()]); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Does this also shut down the hostMetrics?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The host metrics does not expose a stop
method :(
39a5e84
to
f07fa02
Compare
@@ -89,6 +90,13 @@ export { deployAndInitializeTokenAndBridgeContracts } from '../shared/cross_chai | |||
|
|||
const { PXE_URL = '' } = process.env; | |||
|
|||
const telemetry = createAndStartTelemetryClient(getTelemetryConfig(), 'aztec-test'); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Where is the config for the e2e tests defined? As I understand, this is going to use the no-op client if collector is not defined, but then where do the stats go?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'll make it clearer (although if we switch to a global instance it might not be needed).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Did your design change? Should we move that design to implemented?
4f7d71c
to
f5f59f6
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just one comment
f5f59f6
to
4bd053f
Compare
ef264f4
to
9c283ab
Compare
9c283ab
to
2dbfa48
Compare
This PR adds OpenTelemetry to the monorepo and starts tracking the following metrics in the node: - resource usage (CPU, system memory) - block height - average block size (how many txs per block) - mempool status - time taken to generate the witness and prove the protocol circuits - time to simulate the circuits (only relevant if using mocked proofs) The witgen/proving time are using gauges rather than histograms because of a quirk with how often Prometheus scrapes the metrics vs how many proofs we generate of the same type. In PromQL recreating the histogram quantile requires looking at the rate of change of the individual buckets but if proving takes tens-of-seconds it doesn't change often enough so it ends up dividing by 0. Using a guage gives us instantaneous values, but we potentially lose data (e.g. if two proofs finish in the same scrape interval) and in the dashboard the numbers won't "decay" (meaning if for some reason the node stop producing blocks the proof duration will stay at the previous value). Three new components are added to the architecture: - an instance of the OpenTelemetry collector (aggregates metrics pushed by the node) - an instance of Prometheus to scrape to collector for data - an instance of Grafana to chart the data The top-level docker-compose has been updated to include these components under the `metrics` profile. To run the metrics stack: ``` $ docker compose --profile metrics up -d ``` Then e2e tests can be run with metrics being exported to Grafana: ``` OTEL_COLLECTOR_HOST=127.0.0.1:4318 yarn test e2e_block_building ``` Two Grafana dashboards are included with this PR. Node stats: ![image](https://github.com/AztecProtocol/aztec-packages/assets/3816165/0536ffde-934f-46de-b864-c8464925de4c) Protocol circuit stats: ![image](https://github.com/AztecProtocol/aztec-packages/assets/3816165/8e1e15ce-daaf-4d65-b5e8-a681335cac80)
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-package: 0.44.0</summary> ## [0.44.0](aztec-package-v0.43.0...aztec-package-v0.44.0) (2024-06-26) ### Features * Add OpenTelemetry to node ([#7102](#7102)) ([6bf2b72](6bf2b72)) * Devnet deployments ([#7024](#7024)) ([fa70876](fa70876)) * Track spans ([#7129](#7129)) ([924c3f8](924c3f8)) </details> <details><summary>barretenberg.js: 0.44.0</summary> ## [0.44.0](barretenberg.js-v0.43.0...barretenberg.js-v0.44.0) (2024-06-26) ### Bug Fixes * False decryption fix ([#7066](#7066)) ([48d9df4](48d9df4)) </details> <details><summary>aztec-packages: 0.44.0</summary> ## [0.44.0](aztec-packages-v0.43.0...aztec-packages-v0.44.0) (2024-06-26) ### ⚠ BREAKING CHANGES * make note_getter return BoundedVec instead of an Option array ([#7050](#7050)) * TXE ([#6985](#6985)) ### Features * Add macro impls for events ([#7081](#7081)) ([c13dd9f](c13dd9f)) * Add OpenTelemetry to node ([#7102](#7102)) ([6bf2b72](6bf2b72)) * Added prove_output_all flow for honk ([#6869](#6869)) ([7bd7c66](7bd7c66)) * **avm:** Add ECC ops to avm_proving_test ([#7058](#7058)) ([7f62a90](7f62a90)) * **avm:** Cpp msm changes ([#7056](#7056)) ([f9c8f20](f9c8f20)) * **avm:** Include bb-pilcom in monorepo ([#7098](#7098)) ([0442158](0442158)) * Constrain event encryption and unify note and event emit api ([#7171](#7171)) ([5c3772f](5c3772f)), closes [#7160](#7160) * Conventional lookups using log-deriv ([#7020](#7020)) ([6f1212f](6f1212f)) * Devnet deployments ([#7024](#7024)) ([fa70876](fa70876)) * Do not discard logs on revert since the kernel has pruned revertible logs. ([#7076](#7076)) ([366fb21](366fb21)), closes [#4712](#4712) * **docs:** Publish PDF of protocol specs + remove links to pages in item lists in protocol specs ([#6684](#6684)) ([367e3cf](367e3cf)) * Enable merge recursive verifier in Goblin recursive verifier ([#7182](#7182)) ([9b4f56c](9b4f56c)) * Flamegraph helper script ([#7077](#7077)) ([8630c8f](8630c8f)) * Full test skips public simulation ([#7186](#7186)) ([4c1997f](4c1997f)) * Make note_getter return BoundedVec instead of an Option array ([#7050](#7050)) ([f9ac0fc](f9ac0fc)) * **p2p:** More comprehensive peer management, dial retries, persistence fix ([#6953](#6953)) ([cdd1cbd](cdd1cbd)) * Private authwit with static call ([#7073](#7073)) ([9c52d47](9c52d47)) * Several updates in SMT verification module ([#7105](#7105)) ([41b21f1](41b21f1)) * Shplonk revival in ECCVM ([#7164](#7164)) ([34eb5a0](34eb5a0)) * Throwing errors in `BufferReader` when out of bounds ([#7149](#7149)) ([bf4a986](bf4a986)) * Track spans ([#7129](#7129)) ([924c3f8](924c3f8)) * TXE ([#6985](#6985)) ([109624f](109624f)) * TXE 2: Electric boogaloo ([#7154](#7154)) ([bb38246](bb38246)) ### Bug Fixes * **avm:** Fix unencryptedlog c++ deser ([#7194](#7194)) ([89a99af](89a99af)) * **avm:** Re-enable ext call test ([#7147](#7147)) ([33ccf1b](33ccf1b)) * **avm:** Reenable tag error sload ([#7153](#7153)) ([fd92d46](fd92d46)) * **avm:** Update codegen ([#7178](#7178)) ([1d29708](1d29708)) * Bug fixing bench prover test ([#7135](#7135)) ([13678be](13678be)), closes [#7080](#7080) * **ci:** Don't run npm_deploy l1-contracts ([#7187](#7187)) ([80d26d8](80d26d8)) * **ci:** Move osxcross from build image ([#7151](#7151)) ([7746363](7746363)) * Enable log filtering with the DEBUG variable ([#7150](#7150)) ([33798b6](33798b6)) * Export event selector and replace function selector with event selector where appropriate ([#7095](#7095)) ([fcc15fa](fcc15fa)), closes [#7089](#7089) * False decryption fix ([#7066](#7066)) ([48d9df4](48d9df4)) * Fix bug for a unit test in full proving mode repated to MSM ([#7104](#7104)) ([e37809b](e37809b)) ### Miscellaneous * `destroy_note(...)` optimization ([#7103](#7103)) ([0770011](0770011)) * Add avm team as codeowners to more repo files ([#7196](#7196)) ([9be0ad6](9be0ad6)) * **avm:** Remove avm prefix from pil and executor ([#7099](#7099)) ([b502fcd](b502fcd)) * **avm:** Renamings and comments ([#7128](#7128)) ([ed2f98e](ed2f98e)) * **avm:** Separate some fixed tables ([#7163](#7163)) ([1d4a9a2](1d4a9a2)) * **ci:** Add new e2e base target ([#7179](#7179)) ([26fc599](26fc599)) * Create workflow for full AVM tests ([#7051](#7051)) ([a0b9c4b](a0b9c4b)), closes [#6643](#6643) * **docs:** Fix migration notes ([#7195](#7195)) ([88efda0](88efda0)) * **docs:** Moving tutorials and quick starts around, spinning off codespaces page ([#6777](#6777)) ([1542fa6](1542fa6)) * Fix migration notes ([#7133](#7133)) ([14917d3](14917d3)) * Fix noir-projects dockerfile for CircleCI ([#7093](#7093)) ([52ce25d](52ce25d)) * Increase the timeout of the runner for full AVM workflow to 70 minutes ([#7183](#7183)) ([9aabc32](9aabc32)) * Indirects and read/write slices ([#7082](#7082)) ([d5e80ee](d5e80ee)) * Note hashes cleanup + optimization ([#7132](#7132)) ([edd6d3f](edd6d3f)) * Note hashing gate optimizations ([#7130](#7130)) ([81a2580](81a2580)) * **powdr:** Update to latest and add logging ([#7152](#7152)) ([f500f2e](f500f2e)) * Reads the return data ([#6669](#6669)) ([ef85542](ef85542)) * Refactor AVM simulator's side-effect tracing ([#7091](#7091)) ([9495413](9495413)) * Remove stray files ([#7158](#7158)) ([29398de](29398de)) * Remove unneeded public input folding ([#7094](#7094)) ([c30dc38](c30dc38)) * Replace relative paths to noir-protocol-circuits ([f7e4392](f7e4392)) * Replace relative paths to noir-protocol-circuits ([886f7b1](886f7b1)) * Replace relative paths to noir-protocol-circuits ([b1081f8](b1081f8)) * Replace relative paths to noir-protocol-circuits ([c0989eb](c0989eb)) * Replace relative paths to noir-protocol-circuits ([525bbe7](525bbe7)) * Replace relative paths to noir-protocol-circuits ([67bcd82](67bcd82)) * Take the PCS out of Zeromorph and refactor tests ([#7078](#7078)) ([e192678](e192678)) * Track avm proving time ([#7084](#7084)) ([59df722](59df722)) * Ultra flavor cleanup ([#7070](#7070)) ([77761c6](77761c6)) </details> <details><summary>barretenberg: 0.44.0</summary> ## [0.44.0](barretenberg-v0.43.0...barretenberg-v0.44.0) (2024-06-26) ### Features * Added prove_output_all flow for honk ([#6869](#6869)) ([7bd7c66](7bd7c66)) * **avm:** Add ECC ops to avm_proving_test ([#7058](#7058)) ([7f62a90](7f62a90)) * **avm:** Cpp msm changes ([#7056](#7056)) ([f9c8f20](f9c8f20)) * **avm:** Include bb-pilcom in monorepo ([#7098](#7098)) ([0442158](0442158)) * Conventional lookups using log-deriv ([#7020](#7020)) ([6f1212f](6f1212f)) * Enable merge recursive verifier in Goblin recursive verifier ([#7182](#7182)) ([9b4f56c](9b4f56c)) * Several updates in SMT verification module ([#7105](#7105)) ([41b21f1](41b21f1)) * Shplonk revival in ECCVM ([#7164](#7164)) ([34eb5a0](34eb5a0)) ### Bug Fixes * **avm:** Fix unencryptedlog c++ deser ([#7194](#7194)) ([89a99af](89a99af)) * **avm:** Re-enable ext call test ([#7147](#7147)) ([33ccf1b](33ccf1b)) * **avm:** Reenable tag error sload ([#7153](#7153)) ([fd92d46](fd92d46)) * **avm:** Update codegen ([#7178](#7178)) ([1d29708](1d29708)) * Bug fixing bench prover test ([#7135](#7135)) ([13678be](13678be)), closes [#7080](#7080) * Fix bug for a unit test in full proving mode repated to MSM ([#7104](#7104)) ([e37809b](e37809b)) ### Miscellaneous * **avm:** Remove avm prefix from pil and executor ([#7099](#7099)) ([b502fcd](b502fcd)) * **avm:** Renamings and comments ([#7128](#7128)) ([ed2f98e](ed2f98e)) * **avm:** Separate some fixed tables ([#7163](#7163)) ([1d4a9a2](1d4a9a2)) * Create workflow for full AVM tests ([#7051](#7051)) ([a0b9c4b](a0b9c4b)), closes [#6643](#6643) * Indirects and read/write slices ([#7082](#7082)) ([d5e80ee](d5e80ee)) * Reads the return data ([#6669](#6669)) ([ef85542](ef85542)) * Remove unneeded public input folding ([#7094](#7094)) ([c30dc38](c30dc38)) * Take the PCS out of Zeromorph and refactor tests ([#7078](#7078)) ([e192678](e192678)) * Ultra flavor cleanup ([#7070](#7070)) ([77761c6](77761c6)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-package: 0.44.0</summary> ## [0.44.0](AztecProtocol/aztec-packages@aztec-package-v0.43.0...aztec-package-v0.44.0) (2024-06-26) ### Features * Add OpenTelemetry to node ([#7102](AztecProtocol/aztec-packages#7102)) ([6bf2b72](AztecProtocol/aztec-packages@6bf2b72)) * Devnet deployments ([#7024](AztecProtocol/aztec-packages#7024)) ([fa70876](AztecProtocol/aztec-packages@fa70876)) * Track spans ([#7129](AztecProtocol/aztec-packages#7129)) ([924c3f8](AztecProtocol/aztec-packages@924c3f8)) </details> <details><summary>barretenberg.js: 0.44.0</summary> ## [0.44.0](AztecProtocol/aztec-packages@barretenberg.js-v0.43.0...barretenberg.js-v0.44.0) (2024-06-26) ### Bug Fixes * False decryption fix ([#7066](AztecProtocol/aztec-packages#7066)) ([48d9df4](AztecProtocol/aztec-packages@48d9df4)) </details> <details><summary>aztec-packages: 0.44.0</summary> ## [0.44.0](AztecProtocol/aztec-packages@aztec-packages-v0.43.0...aztec-packages-v0.44.0) (2024-06-26) ### ⚠ BREAKING CHANGES * make note_getter return BoundedVec instead of an Option array ([#7050](AztecProtocol/aztec-packages#7050)) * TXE ([#6985](AztecProtocol/aztec-packages#6985)) ### Features * Add macro impls for events ([#7081](AztecProtocol/aztec-packages#7081)) ([c13dd9f](AztecProtocol/aztec-packages@c13dd9f)) * Add OpenTelemetry to node ([#7102](AztecProtocol/aztec-packages#7102)) ([6bf2b72](AztecProtocol/aztec-packages@6bf2b72)) * Added prove_output_all flow for honk ([#6869](AztecProtocol/aztec-packages#6869)) ([7bd7c66](AztecProtocol/aztec-packages@7bd7c66)) * **avm:** Add ECC ops to avm_proving_test ([#7058](AztecProtocol/aztec-packages#7058)) ([7f62a90](AztecProtocol/aztec-packages@7f62a90)) * **avm:** Cpp msm changes ([#7056](AztecProtocol/aztec-packages#7056)) ([f9c8f20](AztecProtocol/aztec-packages@f9c8f20)) * **avm:** Include bb-pilcom in monorepo ([#7098](AztecProtocol/aztec-packages#7098)) ([0442158](AztecProtocol/aztec-packages@0442158)) * Constrain event encryption and unify note and event emit api ([#7171](AztecProtocol/aztec-packages#7171)) ([5c3772f](AztecProtocol/aztec-packages@5c3772f)), closes [#7160](AztecProtocol/aztec-packages#7160) * Conventional lookups using log-deriv ([#7020](AztecProtocol/aztec-packages#7020)) ([6f1212f](AztecProtocol/aztec-packages@6f1212f)) * Devnet deployments ([#7024](AztecProtocol/aztec-packages#7024)) ([fa70876](AztecProtocol/aztec-packages@fa70876)) * Do not discard logs on revert since the kernel has pruned revertible logs. ([#7076](AztecProtocol/aztec-packages#7076)) ([366fb21](AztecProtocol/aztec-packages@366fb21)), closes [#4712](AztecProtocol/aztec-packages#4712) * **docs:** Publish PDF of protocol specs + remove links to pages in item lists in protocol specs ([#6684](AztecProtocol/aztec-packages#6684)) ([367e3cf](AztecProtocol/aztec-packages@367e3cf)) * Enable merge recursive verifier in Goblin recursive verifier ([#7182](AztecProtocol/aztec-packages#7182)) ([9b4f56c](AztecProtocol/aztec-packages@9b4f56c)) * Flamegraph helper script ([#7077](AztecProtocol/aztec-packages#7077)) ([8630c8f](AztecProtocol/aztec-packages@8630c8f)) * Full test skips public simulation ([#7186](AztecProtocol/aztec-packages#7186)) ([4c1997f](AztecProtocol/aztec-packages@4c1997f)) * Make note_getter return BoundedVec instead of an Option array ([#7050](AztecProtocol/aztec-packages#7050)) ([f9ac0fc](AztecProtocol/aztec-packages@f9ac0fc)) * **p2p:** More comprehensive peer management, dial retries, persistence fix ([#6953](AztecProtocol/aztec-packages#6953)) ([cdd1cbd](AztecProtocol/aztec-packages@cdd1cbd)) * Private authwit with static call ([#7073](AztecProtocol/aztec-packages#7073)) ([9c52d47](AztecProtocol/aztec-packages@9c52d47)) * Several updates in SMT verification module ([#7105](AztecProtocol/aztec-packages#7105)) ([41b21f1](AztecProtocol/aztec-packages@41b21f1)) * Shplonk revival in ECCVM ([#7164](AztecProtocol/aztec-packages#7164)) ([34eb5a0](AztecProtocol/aztec-packages@34eb5a0)) * Throwing errors in `BufferReader` when out of bounds ([#7149](AztecProtocol/aztec-packages#7149)) ([bf4a986](AztecProtocol/aztec-packages@bf4a986)) * Track spans ([#7129](AztecProtocol/aztec-packages#7129)) ([924c3f8](AztecProtocol/aztec-packages@924c3f8)) * TXE ([#6985](AztecProtocol/aztec-packages#6985)) ([109624f](AztecProtocol/aztec-packages@109624f)) * TXE 2: Electric boogaloo ([#7154](AztecProtocol/aztec-packages#7154)) ([bb38246](AztecProtocol/aztec-packages@bb38246)) ### Bug Fixes * **avm:** Fix unencryptedlog c++ deser ([#7194](AztecProtocol/aztec-packages#7194)) ([89a99af](AztecProtocol/aztec-packages@89a99af)) * **avm:** Re-enable ext call test ([#7147](AztecProtocol/aztec-packages#7147)) ([33ccf1b](AztecProtocol/aztec-packages@33ccf1b)) * **avm:** Reenable tag error sload ([#7153](AztecProtocol/aztec-packages#7153)) ([fd92d46](AztecProtocol/aztec-packages@fd92d46)) * **avm:** Update codegen ([#7178](AztecProtocol/aztec-packages#7178)) ([1d29708](AztecProtocol/aztec-packages@1d29708)) * Bug fixing bench prover test ([#7135](AztecProtocol/aztec-packages#7135)) ([13678be](AztecProtocol/aztec-packages@13678be)), closes [#7080](AztecProtocol/aztec-packages#7080) * **ci:** Don't run npm_deploy l1-contracts ([#7187](AztecProtocol/aztec-packages#7187)) ([80d26d8](AztecProtocol/aztec-packages@80d26d8)) * **ci:** Move osxcross from build image ([#7151](AztecProtocol/aztec-packages#7151)) ([7746363](AztecProtocol/aztec-packages@7746363)) * Enable log filtering with the DEBUG variable ([#7150](AztecProtocol/aztec-packages#7150)) ([33798b6](AztecProtocol/aztec-packages@33798b6)) * Export event selector and replace function selector with event selector where appropriate ([#7095](AztecProtocol/aztec-packages#7095)) ([fcc15fa](AztecProtocol/aztec-packages@fcc15fa)), closes [#7089](AztecProtocol/aztec-packages#7089) * False decryption fix ([#7066](AztecProtocol/aztec-packages#7066)) ([48d9df4](AztecProtocol/aztec-packages@48d9df4)) * Fix bug for a unit test in full proving mode repated to MSM ([#7104](AztecProtocol/aztec-packages#7104)) ([e37809b](AztecProtocol/aztec-packages@e37809b)) ### Miscellaneous * `destroy_note(...)` optimization ([#7103](AztecProtocol/aztec-packages#7103)) ([0770011](AztecProtocol/aztec-packages@0770011)) * Add avm team as codeowners to more repo files ([#7196](AztecProtocol/aztec-packages#7196)) ([9be0ad6](AztecProtocol/aztec-packages@9be0ad6)) * **avm:** Remove avm prefix from pil and executor ([#7099](AztecProtocol/aztec-packages#7099)) ([b502fcd](AztecProtocol/aztec-packages@b502fcd)) * **avm:** Renamings and comments ([#7128](AztecProtocol/aztec-packages#7128)) ([ed2f98e](AztecProtocol/aztec-packages@ed2f98e)) * **avm:** Separate some fixed tables ([#7163](AztecProtocol/aztec-packages#7163)) ([1d4a9a2](AztecProtocol/aztec-packages@1d4a9a2)) * **ci:** Add new e2e base target ([#7179](AztecProtocol/aztec-packages#7179)) ([26fc599](AztecProtocol/aztec-packages@26fc599)) * Create workflow for full AVM tests ([#7051](AztecProtocol/aztec-packages#7051)) ([a0b9c4b](AztecProtocol/aztec-packages@a0b9c4b)), closes [#6643](AztecProtocol/aztec-packages#6643) * **docs:** Fix migration notes ([#7195](AztecProtocol/aztec-packages#7195)) ([88efda0](AztecProtocol/aztec-packages@88efda0)) * **docs:** Moving tutorials and quick starts around, spinning off codespaces page ([#6777](AztecProtocol/aztec-packages#6777)) ([1542fa6](AztecProtocol/aztec-packages@1542fa6)) * Fix migration notes ([#7133](AztecProtocol/aztec-packages#7133)) ([14917d3](AztecProtocol/aztec-packages@14917d3)) * Fix noir-projects dockerfile for CircleCI ([#7093](AztecProtocol/aztec-packages#7093)) ([52ce25d](AztecProtocol/aztec-packages@52ce25d)) * Increase the timeout of the runner for full AVM workflow to 70 minutes ([#7183](AztecProtocol/aztec-packages#7183)) ([9aabc32](AztecProtocol/aztec-packages@9aabc32)) * Indirects and read/write slices ([#7082](AztecProtocol/aztec-packages#7082)) ([d5e80ee](AztecProtocol/aztec-packages@d5e80ee)) * Note hashes cleanup + optimization ([#7132](AztecProtocol/aztec-packages#7132)) ([edd6d3f](AztecProtocol/aztec-packages@edd6d3f)) * Note hashing gate optimizations ([#7130](AztecProtocol/aztec-packages#7130)) ([81a2580](AztecProtocol/aztec-packages@81a2580)) * **powdr:** Update to latest and add logging ([#7152](AztecProtocol/aztec-packages#7152)) ([f500f2e](AztecProtocol/aztec-packages@f500f2e)) * Reads the return data ([#6669](AztecProtocol/aztec-packages#6669)) ([ef85542](AztecProtocol/aztec-packages@ef85542)) * Refactor AVM simulator's side-effect tracing ([#7091](AztecProtocol/aztec-packages#7091)) ([9495413](AztecProtocol/aztec-packages@9495413)) * Remove stray files ([#7158](AztecProtocol/aztec-packages#7158)) ([29398de](AztecProtocol/aztec-packages@29398de)) * Remove unneeded public input folding ([#7094](AztecProtocol/aztec-packages#7094)) ([c30dc38](AztecProtocol/aztec-packages@c30dc38)) * Replace relative paths to noir-protocol-circuits ([f7e4392](AztecProtocol/aztec-packages@f7e4392)) * Replace relative paths to noir-protocol-circuits ([886f7b1](AztecProtocol/aztec-packages@886f7b1)) * Replace relative paths to noir-protocol-circuits ([b1081f8](AztecProtocol/aztec-packages@b1081f8)) * Replace relative paths to noir-protocol-circuits ([c0989eb](AztecProtocol/aztec-packages@c0989eb)) * Replace relative paths to noir-protocol-circuits ([525bbe7](AztecProtocol/aztec-packages@525bbe7)) * Replace relative paths to noir-protocol-circuits ([67bcd82](AztecProtocol/aztec-packages@67bcd82)) * Take the PCS out of Zeromorph and refactor tests ([#7078](AztecProtocol/aztec-packages#7078)) ([e192678](AztecProtocol/aztec-packages@e192678)) * Track avm proving time ([#7084](AztecProtocol/aztec-packages#7084)) ([59df722](AztecProtocol/aztec-packages@59df722)) * Ultra flavor cleanup ([#7070](AztecProtocol/aztec-packages#7070)) ([77761c6](AztecProtocol/aztec-packages@77761c6)) </details> <details><summary>barretenberg: 0.44.0</summary> ## [0.44.0](AztecProtocol/aztec-packages@barretenberg-v0.43.0...barretenberg-v0.44.0) (2024-06-26) ### Features * Added prove_output_all flow for honk ([#6869](AztecProtocol/aztec-packages#6869)) ([7bd7c66](AztecProtocol/aztec-packages@7bd7c66)) * **avm:** Add ECC ops to avm_proving_test ([#7058](AztecProtocol/aztec-packages#7058)) ([7f62a90](AztecProtocol/aztec-packages@7f62a90)) * **avm:** Cpp msm changes ([#7056](AztecProtocol/aztec-packages#7056)) ([f9c8f20](AztecProtocol/aztec-packages@f9c8f20)) * **avm:** Include bb-pilcom in monorepo ([#7098](AztecProtocol/aztec-packages#7098)) ([0442158](AztecProtocol/aztec-packages@0442158)) * Conventional lookups using log-deriv ([#7020](AztecProtocol/aztec-packages#7020)) ([6f1212f](AztecProtocol/aztec-packages@6f1212f)) * Enable merge recursive verifier in Goblin recursive verifier ([#7182](AztecProtocol/aztec-packages#7182)) ([9b4f56c](AztecProtocol/aztec-packages@9b4f56c)) * Several updates in SMT verification module ([#7105](AztecProtocol/aztec-packages#7105)) ([41b21f1](AztecProtocol/aztec-packages@41b21f1)) * Shplonk revival in ECCVM ([#7164](AztecProtocol/aztec-packages#7164)) ([34eb5a0](AztecProtocol/aztec-packages@34eb5a0)) ### Bug Fixes * **avm:** Fix unencryptedlog c++ deser ([#7194](AztecProtocol/aztec-packages#7194)) ([89a99af](AztecProtocol/aztec-packages@89a99af)) * **avm:** Re-enable ext call test ([#7147](AztecProtocol/aztec-packages#7147)) ([33ccf1b](AztecProtocol/aztec-packages@33ccf1b)) * **avm:** Reenable tag error sload ([#7153](AztecProtocol/aztec-packages#7153)) ([fd92d46](AztecProtocol/aztec-packages@fd92d46)) * **avm:** Update codegen ([#7178](AztecProtocol/aztec-packages#7178)) ([1d29708](AztecProtocol/aztec-packages@1d29708)) * Bug fixing bench prover test ([#7135](AztecProtocol/aztec-packages#7135)) ([13678be](AztecProtocol/aztec-packages@13678be)), closes [#7080](AztecProtocol/aztec-packages#7080) * Fix bug for a unit test in full proving mode repated to MSM ([#7104](AztecProtocol/aztec-packages#7104)) ([e37809b](AztecProtocol/aztec-packages@e37809b)) ### Miscellaneous * **avm:** Remove avm prefix from pil and executor ([#7099](AztecProtocol/aztec-packages#7099)) ([b502fcd](AztecProtocol/aztec-packages@b502fcd)) * **avm:** Renamings and comments ([#7128](AztecProtocol/aztec-packages#7128)) ([ed2f98e](AztecProtocol/aztec-packages@ed2f98e)) * **avm:** Separate some fixed tables ([#7163](AztecProtocol/aztec-packages#7163)) ([1d4a9a2](AztecProtocol/aztec-packages@1d4a9a2)) * Create workflow for full AVM tests ([#7051](AztecProtocol/aztec-packages#7051)) ([a0b9c4b](AztecProtocol/aztec-packages@a0b9c4b)), closes [#6643](AztecProtocol/aztec-packages#6643) * Indirects and read/write slices ([#7082](AztecProtocol/aztec-packages#7082)) ([d5e80ee](AztecProtocol/aztec-packages@d5e80ee)) * Reads the return data ([#6669](AztecProtocol/aztec-packages#6669)) ([ef85542](AztecProtocol/aztec-packages@ef85542)) * Remove unneeded public input folding ([#7094](AztecProtocol/aztec-packages#7094)) ([c30dc38](AztecProtocol/aztec-packages@c30dc38)) * Take the PCS out of Zeromorph and refactor tests ([#7078](AztecProtocol/aztec-packages#7078)) ([e192678](AztecProtocol/aztec-packages@e192678)) * Ultra flavor cleanup ([#7070](AztecProtocol/aztec-packages#7070)) ([77761c6](AztecProtocol/aztec-packages@77761c6)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
This PR adds OpenTelemetry to the monorepo and starts tracking the following metrics in the node:
The witgen/proving time are using gauges rather than histograms because of a quirk with how often Prometheus scrapes the metrics vs how many proofs we generate of the same type. In PromQL recreating the histogram quantile requires looking at the rate of change of the individual buckets but if proving takes tens-of-seconds it doesn't change often enough so it ends up dividing by 0. Using a guage gives us instantaneous values, but we potentially lose data (e.g. if two proofs finish in the same scrape interval) and in the dashboard the numbers won't "decay" (meaning if for some reason the node stop producing blocks the proof duration will stay at the previous value).
Three new components are added to the architecture:
The top-level docker-compose has been updated to include these components under the
metrics
profile. To run the metrics stack:Then e2e tests can be run with metrics being exported to Grafana:
Two Grafana dashboards are included with this PR.
Node stats:
Protocol circuit stats: