Upgrade Prometheus and Opentelemetry dependencies (#6422)

Signed-off-by: Fabio Di Fabio <fabio.difabio@consensys.net>
Co-authored-by: Stefan Pingel <16143240+pinges@users.noreply.github.com>
pull/6487/head
Fabio Di Fabio 10 months ago committed by GitHub
parent 06406ce108
commit a563cf23c1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 5
      CHANGELOG.md
  2. 392
      gradle/verification-metadata.xml
  3. 32
      gradle/versions.gradle
  4. 2
      metrics/core/build.gradle
  5. 3
      metrics/core/src/main/java/org/hyperledger/besu/metrics/opentelemetry/DebugMetricReader.java
  6. 16
      metrics/core/src/main/java/org/hyperledger/besu/metrics/opentelemetry/OpenTelemetrySystem.java
  7. 51
      metrics/core/src/main/java/org/hyperledger/besu/metrics/prometheus/PrometheusMetricsSystem.java
  8. 69
      metrics/core/src/test/java/org/hyperledger/besu/metrics/prometheus/PrometheusMetricsSystemTest.java

@ -3,6 +3,7 @@
## 24.1.2-SNAPSHOT ## 24.1.2-SNAPSHOT
### Breaking Changes ### Breaking Changes
- Following the OpenMetrics convention, the updated Prometheus client adds the `_total` suffix to every metrics of type counter, with the effect that some existing metrics have been renamed to have this suffix. If you are using the official Besu Grafana dashboard [(available here)](https://grafana.com/grafana/dashboards/16455-besu-full/), just update it to the latest revision, that accepts the old and the new name of the affected metrics. If you have a custom dashboards or use the metrics in other ways, then you need to manually update it to support the new naming.
- The `trace-filter` method in JSON-RPC API now has a default block range limit of 1000, adjustable with `--rpc-max-trace-filter-range` (thanks @alyokaz) [#6446](https://github.com/hyperledger/besu/pull/6446) - The `trace-filter` method in JSON-RPC API now has a default block range limit of 1000, adjustable with `--rpc-max-trace-filter-range` (thanks @alyokaz) [#6446](https://github.com/hyperledger/besu/pull/6446)
- Requesting the Ethereum Node Record (ENR) to acquire the fork id from bonded peers is now enabled by default, so the following change has been made [#5628](https://github.com/hyperledger/besu/pull/5628): - Requesting the Ethereum Node Record (ENR) to acquire the fork id from bonded peers is now enabled by default, so the following change has been made [#5628](https://github.com/hyperledger/besu/pull/5628):
- `--Xfilter-on-enr-fork-id` has been removed. To disable the feature use `--filter-on-enr-fork-id=false`. - `--Xfilter-on-enr-fork-id` has been removed. To disable the feature use `--filter-on-enr-fork-id=false`.
@ -12,6 +13,7 @@
### Deprecations ### Deprecations
### Additions and Improvements ### Additions and Improvements
- Upgrade Prometheus and Opentelemetry dependencies [#6422](https://github.com/hyperledger/besu/pull/6422)
- Add `OperationTracer.tracePrepareTransaction`, where the sender account has not yet been altered[#6453](https://github.com/hyperledger/besu/pull/6453) - Add `OperationTracer.tracePrepareTransaction`, where the sender account has not yet been altered[#6453](https://github.com/hyperledger/besu/pull/6453)
- Improve the high spec flag by limiting it to a few column families [#6354](https://github.com/hyperledger/besu/pull/6354) - Improve the high spec flag by limiting it to a few column families [#6354](https://github.com/hyperledger/besu/pull/6354)
- Log blob count when importing a block via Engine API [#6466](https://github.com/hyperledger/besu/pull/6466) - Log blob count when importing a block via Engine API [#6466](https://github.com/hyperledger/besu/pull/6466)
@ -30,7 +32,7 @@
- New `EXECUTION_HALTED` error returned if there is an error executing or simulating a transaction, with the reason for execution being halted. Replaces the generic `INTERNAL_ERROR` return code in certain cases which some applications may be checking for [#6343](https://github.com/hyperledger/besu/pull/6343) - New `EXECUTION_HALTED` error returned if there is an error executing or simulating a transaction, with the reason for execution being halted. Replaces the generic `INTERNAL_ERROR` return code in certain cases which some applications may be checking for [#6343](https://github.com/hyperledger/besu/pull/6343)
- The Besu Docker images with `openjdk-latest` tags since 23.10.3 were incorrectly using UID 1001 instead of 1000 for the container's `besu` user. The user now uses 1000 again. Containers created from or migrated to images using UID 1001 will need to chown their persistent database files to UID 1000 (thanks @h4l) [#6360](https://github.com/hyperledger/besu/pull/6360) - The Besu Docker images with `openjdk-latest` tags since 23.10.3 were incorrectly using UID 1001 instead of 1000 for the container's `besu` user. The user now uses 1000 again. Containers created from or migrated to images using UID 1001 will need to chown their persistent database files to UID 1000 (thanks @h4l) [#6360](https://github.com/hyperledger/besu/pull/6360)
- The deprecated `--privacy-onchain-groups-enabled` option has now been removed. Use the `--privacy-flexible-groups-enabled` option instead. [#6411](https://github.com/hyperledger/besu/pull/6411) - The deprecated `--privacy-onchain-groups-enabled` option has now been removed. Use the `--privacy-flexible-groups-enabled` option instead. [#6411](https://github.com/hyperledger/besu/pull/6411)
- The time that can be spent selecting transactions during block creation is not capped at 5 seconds for PoS and PoW networks, and for PoA networks, at 75% of the block period specified in the genesis, this to prevent possible DoS in case a single transaction is taking too long to execute, and to have a stable block production rate, but it could be a breaking change if an existing network used to have transactions that takes more time to executed that the newly introduced limit, if it is mandatory for these network to keep processing these long processing transaction, then the default value of `block-txs-selection-max-time` or `poa-block-txs-selection-max-time` needs to be tuned accordingly. [#6423](https://github.com/hyperledger/besu/pull/6423) - The time that can be spent selecting transactions during block creation is not capped at 5 seconds for PoS and PoW networks, and for PoA networks, at 75% of the block period specified in the genesis. This is to prevent possible DoS attacks in case a single transaction is taking too long to execute, and to have a stable block production rate. This could be a breaking change if an existing network needs to accept transactions that take more time to executed than the newly introduced limit. If it is mandatory for these networks to keep processing these long processing transaction, then the default value of `block-txs-selection-max-time` or `poa-block-txs-selection-max-time` needs to be tuned accordingly. [#6423](https://github.com/hyperledger/besu/pull/6423)
### Deprecations ### Deprecations
@ -63,6 +65,7 @@ Note, due to a CI race with the release job, the initial published version of 24
~~https://hyperledger.jfrog.io/artifactory/besu-binaries/besu/24.1.1/besu-24.1.1.zip / sha256 b6b64f939e0bb4937ce90fc647e0a7073ce3e359c10352b502059955070a60c6 ~~https://hyperledger.jfrog.io/artifactory/besu-binaries/besu/24.1.1/besu-24.1.1.zip / sha256 b6b64f939e0bb4937ce90fc647e0a7073ce3e359c10352b502059955070a60c6
https://hyperledger.jfrog.io/artifactory/besu-binaries/besu/24.1.1/besu-24.1.1.tar.gz / sha256 cfcae04c30769bf338b0740ac65870f9346d3469931bb46cdba3b2f65d311e7a~~ https://hyperledger.jfrog.io/artifactory/besu-binaries/besu/24.1.1/besu-24.1.1.tar.gz / sha256 cfcae04c30769bf338b0740ac65870f9346d3469931bb46cdba3b2f65d311e7a~~
## 24.1.0 ## 24.1.0
### Breaking Changes ### Breaking Changes

@ -1032,16 +1032,16 @@
<sha256 value="a84ad31e071ac64d9792cceef1bb3ea60bc2caa9eb94f3018737bc32ec8fffe2" origin="Generated by Gradle"/> <sha256 value="a84ad31e071ac64d9792cceef1bb3ea60bc2caa9eb94f3018737bc32ec8fffe2" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="com.google.protobuf" name="protobuf-bom" version="3.19.4">
<artifact name="protobuf-bom-3.19.4.pom">
<sha256 value="6e8029cc0474fc17a01cfe9e21167a0a33cb95807de893447d367d9e4298c4db" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.google.protobuf" name="protobuf-bom" version="3.22.0"> <component group="com.google.protobuf" name="protobuf-bom" version="3.22.0">
<artifact name="protobuf-bom-3.22.0.pom"> <artifact name="protobuf-bom-3.22.0.pom">
<sha256 value="c19eba1f4897afe5d5926d68e19f2c2986752e459cfa9c5925e57290d9217add" origin="Generated by Gradle"/> <sha256 value="c19eba1f4897afe5d5926d68e19f2c2986752e459cfa9c5925e57290d9217add" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="com.google.protobuf" name="protobuf-bom" version="3.23.4">
<artifact name="protobuf-bom-3.23.4.pom">
<sha256 value="aba9410f5ed7278126b8c046fbc74e7d0b2ba3cd18ac7a59d3bf0ffab0774f78" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.google.protobuf" name="protobuf-bom" version="3.24.0"> <component group="com.google.protobuf" name="protobuf-bom" version="3.24.0">
<artifact name="protobuf-bom-3.24.0.pom"> <artifact name="protobuf-bom-3.24.0.pom">
<sha256 value="3b0b372353011f2a7d7b167fe6dd769eb1b90870494f73e4b93654082f85250c" origin="Generated by Gradle"/> <sha256 value="3b0b372353011f2a7d7b167fe6dd769eb1b90870494f73e4b93654082f85250c" origin="Generated by Gradle"/>
@ -1055,11 +1055,6 @@
<sha256 value="0a6ea5df57d87e3042950525204310ba27581cf351d246a7eff2d21b7b4e1641" origin="Generated by Gradle"/> <sha256 value="0a6ea5df57d87e3042950525204310ba27581cf351d246a7eff2d21b7b4e1641" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="com.google.protobuf" name="protobuf-java" version="3.19.4">
<artifact name="protobuf-java-3.19.4.pom">
<sha256 value="77c8d851cc762882af58530d23fb4a618260c12df02b4703e6f4e3ddcc8b923e" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.google.protobuf" name="protobuf-java" version="3.22.0"> <component group="com.google.protobuf" name="protobuf-java" version="3.22.0">
<artifact name="protobuf-java-3.22.0.jar"> <artifact name="protobuf-java-3.22.0.jar">
<sha256 value="d3f7fad5fda34e11b7d975abf26331d0f955853f01d6d9b6dcdc7cd2d32251b6" origin="Generated by Gradle"/> <sha256 value="d3f7fad5fda34e11b7d975abf26331d0f955853f01d6d9b6dcdc7cd2d32251b6" origin="Generated by Gradle"/>
@ -1068,6 +1063,11 @@
<sha256 value="7ef79a4915167d42f785c1b16b60e48af15df3dd017289fa1e10e494e9eee3e3" origin="Generated by Gradle"/> <sha256 value="7ef79a4915167d42f785c1b16b60e48af15df3dd017289fa1e10e494e9eee3e3" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="com.google.protobuf" name="protobuf-java" version="3.23.4">
<artifact name="protobuf-java-3.23.4.pom">
<sha256 value="6deebe93fe6a35bab8fe926d6e617997a938ab0123175d0bd80edca6421ed20c" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.google.protobuf" name="protobuf-java" version="3.24.0"> <component group="com.google.protobuf" name="protobuf-java" version="3.24.0">
<artifact name="protobuf-java-3.24.0.jar"> <artifact name="protobuf-java-3.24.0.jar">
<sha256 value="60e27148de168286dd441fa66f96cc8d91b7672c8a5caad631f966f406b10071" origin="Generated by Gradle"/> <sha256 value="60e27148de168286dd441fa66f96cc8d91b7672c8a5caad631f966f406b10071" origin="Generated by Gradle"/>
@ -1089,16 +1089,16 @@
<sha256 value="25395819097bcac83a43eac8bc2a76681c85869ac9799111204d650d7df0c086" origin="Generated by Gradle"/> <sha256 value="25395819097bcac83a43eac8bc2a76681c85869ac9799111204d650d7df0c086" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="com.google.protobuf" name="protobuf-parent" version="3.19.4">
<artifact name="protobuf-parent-3.19.4.pom">
<sha256 value="835819ca9989ff1de6e5406edbf21f88124bb64e37d3a15f12ba8dbdc7a118c3" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.google.protobuf" name="protobuf-parent" version="3.22.0"> <component group="com.google.protobuf" name="protobuf-parent" version="3.22.0">
<artifact name="protobuf-parent-3.22.0.pom"> <artifact name="protobuf-parent-3.22.0.pom">
<sha256 value="1b0229a3bbfef37b025d0d8d7ab369393e7128dabb809023681d1ecccf789020" origin="Generated by Gradle"/> <sha256 value="1b0229a3bbfef37b025d0d8d7ab369393e7128dabb809023681d1ecccf789020" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="com.google.protobuf" name="protobuf-parent" version="3.23.4">
<artifact name="protobuf-parent-3.23.4.pom">
<sha256 value="43804e420ca2d5d9a4505707d5d301da0b28c28f946b12cc727378f3c8affb39" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.google.protobuf" name="protobuf-parent" version="3.24.0"> <component group="com.google.protobuf" name="protobuf-parent" version="3.24.0">
<artifact name="protobuf-parent-3.24.0.pom"> <artifact name="protobuf-parent-3.24.0.pom">
<sha256 value="226b7f704a9c865ecf778054f7611f0b2c17c6d8e3b6585d911f07d1255bd398" origin="Generated by Gradle"/> <sha256 value="226b7f704a9c865ecf778054f7611f0b2c17c6d8e3b6585d911f07d1255bd398" origin="Generated by Gradle"/>
@ -2112,212 +2112,223 @@
<sha256 value="b7087907920fc8a81534686b2f1a2b331127af97f015abbdb3786a51f3fa1e52" origin="Generated by Gradle"/> <sha256 value="b7087907920fc8a81534686b2f1a2b331127af97f015abbdb3786a51f3fa1e52" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="io.opentelemetry" name="opentelemetry-api" version="1.24.0"> <component group="io.opentelemetry" name="opentelemetry-api" version="1.33.0">
<artifact name="opentelemetry-api-1.24.0.jar"> <artifact name="opentelemetry-api-1.33.0.jar">
<sha256 value="f5ce6139cbc2c0d0597289b7b47eb4f15c158f2612237e7c4b363f0acf2f1285" origin="Generated by Gradle"/> <sha256 value="f3bf6f0ded42812cb41f88f7bfe5812e28f76b94679ff69ac4c2cc6aec12a267" origin="Generated by Gradle"/>
</artifact> </artifact>
<artifact name="opentelemetry-api-1.24.0.module"> <artifact name="opentelemetry-api-1.33.0.module">
<sha256 value="730f5e8245ceed1734504c7e77b64f278bcfca4ed52e4708a737110b4548c6d2" origin="Generated by Gradle"/> <sha256 value="9e099b3fb576b401b4f57bd77e5aa73522ae3216c1eb321827eca7c5f24aa786" origin="Generated by Gradle"/>
</artifact> </artifact>
<artifact name="opentelemetry-api-1.24.0.pom"> <artifact name="opentelemetry-api-1.33.0.pom">
<sha256 value="0206c397c81e115e880bf1577147dd616bb37f1affaa7d0805ee5eeac73e0b03" origin="Generated by Gradle"/> <sha256 value="b654431215d994c58612b959bad61933d912b8aaf3b5947bc322b82871eb1c90" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="io.opentelemetry" name="opentelemetry-api-events" version="1.24.0-alpha"> <component group="io.opentelemetry" name="opentelemetry-api-events" version="1.33.0-alpha">
<artifact name="opentelemetry-api-events-1.24.0-alpha.jar"> <artifact name="opentelemetry-api-events-1.33.0-alpha.jar">
<sha256 value="a72b79dc88c4d8a64d7128a863b51942b243ca3d3be1126ec3bb56c0a7f0286d" origin="Generated by Gradle"/> <sha256 value="27016923be7cf92568a8ad596797cf2ec00d242e775ffa7c3fb65bf15b268fba" origin="Generated by Gradle"/>
</artifact> </artifact>
<artifact name="opentelemetry-api-events-1.24.0-alpha.module"> <artifact name="opentelemetry-api-events-1.33.0-alpha.module">
<sha256 value="a9a0bb41ffb43c9867070dc314f9f50ac9e43e92a641029292b452089556bf8e" origin="Generated by Gradle"/> <sha256 value="f697e90078e109e544c50e0ba48a03fcd7021e1aefe04be24873c2d83da082e3" origin="Generated by Gradle"/>
</artifact> </artifact>
<artifact name="opentelemetry-api-events-1.24.0-alpha.pom"> <artifact name="opentelemetry-api-events-1.33.0-alpha.pom">
<sha256 value="dd058b5f91b1994854c7fd3fbeffcf6106dc0879df4fc17e71e8a8946aa17027" origin="Generated by Gradle"/> <sha256 value="dee9910342a8938660bd8bf701f4bb3a1fcf7e7fec954eb47f718daad04925cd" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="io.opentelemetry" name="opentelemetry-api-logs" version="1.24.0-alpha"> <component group="io.opentelemetry" name="opentelemetry-context" version="1.33.0">
<artifact name="opentelemetry-api-logs-1.24.0-alpha.jar"> <artifact name="opentelemetry-context-1.33.0.jar">
<sha256 value="1adf6036ae00ff5bc1db16d6b799c0f8a8814a0ecc97dc25d4fadf367d2a59cb" origin="Generated by Gradle"/> <sha256 value="8aa867f353036c6a8e8bf06ae2fec54658d8eafda82f857506ff934fd403048a" origin="Generated by Gradle"/>
</artifact> </artifact>
<artifact name="opentelemetry-api-logs-1.24.0-alpha.module"> <artifact name="opentelemetry-context-1.33.0.module">
<sha256 value="af69dda62eedd3ab37fc28744e72b6267e2484993b2062521612a7d34882f010" origin="Generated by Gradle"/> <sha256 value="80c4c22b936c53e2109fe49aea3bf7836cf542e03ecb10437901b6c9bfab97b9" origin="Generated by Gradle"/>
</artifact> </artifact>
<artifact name="opentelemetry-api-logs-1.24.0-alpha.pom"> <artifact name="opentelemetry-context-1.33.0.pom">
<sha256 value="6b4bfc0199862afc2e47135d6b65caf4f3a8a3133ad9cfdb0dc3fcbcebb95474" origin="Generated by Gradle"/> <sha256 value="b9214126890a09a72e50b936ea549427f35b3398ae3997dd98f77f2afc166d8d" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="io.opentelemetry" name="opentelemetry-context" version="1.24.0"> <component group="io.opentelemetry" name="opentelemetry-exporter-common" version="1.33.0">
<artifact name="opentelemetry-context-1.24.0.jar"> <artifact name="opentelemetry-exporter-common-1.33.0.jar">
<sha256 value="25d020f9a7bc085029484b38495a530368c06fb965e52772f19c14ed244b5db1" origin="Generated by Gradle"/> <sha256 value="6994594a72500848818091e99308caab93e6c961630512617860c5eee6373f9f" origin="Generated by Gradle"/>
</artifact> </artifact>
<artifact name="opentelemetry-context-1.24.0.module"> <artifact name="opentelemetry-exporter-common-1.33.0.module">
<sha256 value="b1dcdedca03707267cc34fe8b70ef5f8943116fd033c4ae22875136afa196e5d" origin="Generated by Gradle"/> <sha256 value="68dc72a5bb46f923ca6f26572dae141aba11b3282550956794466461efa46aa1" origin="Generated by Gradle"/>
</artifact> </artifact>
<artifact name="opentelemetry-context-1.24.0.pom"> <artifact name="opentelemetry-exporter-common-1.33.0.pom">
<sha256 value="4c0ea3675bf7fe3846864a2ff8cfcd8455eca6dd008b72544c6433600cbc910c" origin="Generated by Gradle"/> <sha256 value="c973c9160accfb54379ff115610dd7acb9bcc7dea527ec63a267cd5de7e8988a" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="io.opentelemetry" name="opentelemetry-exporter-common" version="1.24.0"> <component group="io.opentelemetry" name="opentelemetry-exporter-otlp" version="1.33.0">
<artifact name="opentelemetry-exporter-common-1.24.0.jar"> <artifact name="opentelemetry-exporter-otlp-1.33.0.jar">
<sha256 value="831e0b6eafd914b59dc428b957f10a648d04697dc94b3c876ba9da72012171c7" origin="Generated by Gradle"/> <sha256 value="42a6ce15bcec64c62dd8f5ad2163d969fd288b6babda82d160b42b9af37c0bcf" origin="Generated by Gradle"/>
</artifact> </artifact>
<artifact name="opentelemetry-exporter-common-1.24.0.module"> <artifact name="opentelemetry-exporter-otlp-1.33.0.module">
<sha256 value="3de9fa6d9367b7af22e82854bf46279f0a9af68341cb0729726f92f5de4df26c" origin="Generated by Gradle"/> <sha256 value="aed9e560982654684a9cfa5d1bc4d081b14081af227ef2fe619213fb98800a8c" origin="Generated by Gradle"/>
</artifact> </artifact>
<artifact name="opentelemetry-exporter-common-1.24.0.pom"> <artifact name="opentelemetry-exporter-otlp-1.33.0.pom">
<sha256 value="c4e303335636bff64394431b4dcfbe6073ee5fbf7555642f70f196a6a61f604b" origin="Generated by Gradle"/> <sha256 value="54deb0b519e4bb51e59d770a36692d698cb6896d5da440b81287daad7a823798" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="io.opentelemetry" name="opentelemetry-exporter-otlp" version="1.24.0"> <component group="io.opentelemetry" name="opentelemetry-exporter-otlp-common" version="1.33.0">
<artifact name="opentelemetry-exporter-otlp-1.24.0.jar"> <artifact name="opentelemetry-exporter-otlp-common-1.33.0.jar">
<sha256 value="2cc6768d94c0120e70a313d57f9d28141266692b2d185f11b8e187defcebf2a5" origin="Generated by Gradle"/> <sha256 value="5e1a2addbf961547f72c238a3ad285efa25466cfcd5012ec936113f18441442c" origin="Generated by Gradle"/>
</artifact> </artifact>
<artifact name="opentelemetry-exporter-otlp-1.24.0.module"> <artifact name="opentelemetry-exporter-otlp-common-1.33.0.module">
<sha256 value="dd1841c5986580652649082f9fa5217cac381dd2f09def28f6da3a5d3d24889e" origin="Generated by Gradle"/> <sha256 value="d22955dd46fe78d3625fa8d6d7d9f4433c60c2b431349bc0ed934aa5a8e6f181" origin="Generated by Gradle"/>
</artifact> </artifact>
<artifact name="opentelemetry-exporter-otlp-1.24.0.pom"> <artifact name="opentelemetry-exporter-otlp-common-1.33.0.pom">
<sha256 value="c2abb9ace7f4b37f3cde9732bfab23a8a4445ddc48a6a4383fb3e7c3dd60addb" origin="Generated by Gradle"/> <sha256 value="4fce8641864841f0e1890e8c708058ee49b0509b62576c24966d093c29944715" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="io.opentelemetry" name="opentelemetry-exporter-otlp-common" version="1.24.0"> <component group="io.opentelemetry" name="opentelemetry-exporter-sender-okhttp" version="1.33.0">
<artifact name="opentelemetry-exporter-otlp-common-1.24.0.jar"> <artifact name="opentelemetry-exporter-sender-okhttp-1.33.0.jar">
<sha256 value="c028b3311478b91f95d1d77fd37de6fc098023bf94acc43e94a35c20e0624f02" origin="Generated by Gradle"/> <sha256 value="e45cebc088bb4d74ba7eed9b3a5fbfe87149a9b7279badcab929da2b56f3dc42" origin="Generated by Gradle"/>
</artifact> </artifact>
<artifact name="opentelemetry-exporter-otlp-common-1.24.0.module"> <artifact name="opentelemetry-exporter-sender-okhttp-1.33.0.module">
<sha256 value="221721912320ccb82af25d16f5e2e64f5d0627d478ef5de534c232b4d54fe0ed" origin="Generated by Gradle"/> <sha256 value="f6f5314e7a7b71212ea182f231aebdfb88a1f3db98c89afd55d676f13cb5e7c1" origin="Generated by Gradle"/>
</artifact> </artifact>
<artifact name="opentelemetry-exporter-otlp-common-1.24.0.pom"> <artifact name="opentelemetry-exporter-sender-okhttp-1.33.0.pom">
<sha256 value="e835c77cca7dfe104ed830687dfc4be29f5ee055a8d79769005867ed35d4fd17" origin="Generated by Gradle"/> <sha256 value="260d2dd3560eb0539e91016a549ac1a66ede281e0356ba30a1f2d11a736b47b5" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="io.opentelemetry" name="opentelemetry-extension-trace-propagators" version="1.24.0"> <component group="io.opentelemetry" name="opentelemetry-extension-incubator" version="1.33.0-alpha">
<artifact name="opentelemetry-extension-trace-propagators-1.24.0.jar"> <artifact name="opentelemetry-extension-incubator-1.33.0-alpha.jar">
<sha256 value="f0739e636aefc387e0244980030a3f329e5db317b38acb4e223bd3570ab5ced7" origin="Generated by Gradle"/> <sha256 value="18123858e17f0aed3cb029562add36b47e1a302707fd2948ce2cb19f679863fc" origin="Generated by Gradle"/>
</artifact> </artifact>
<artifact name="opentelemetry-extension-trace-propagators-1.24.0.module"> <artifact name="opentelemetry-extension-incubator-1.33.0-alpha.module">
<sha256 value="28b3e1e32ee2176ceb18a59496b4660c9d1588161506dff3363e7d2f297a7fd2" origin="Generated by Gradle"/> <sha256 value="f4ccc20defb59e62fe0c4019eec78b69f596ad312ec62c65fe3f85c2d97c7472" origin="Generated by Gradle"/>
</artifact> </artifact>
<artifact name="opentelemetry-extension-trace-propagators-1.24.0.pom"> <artifact name="opentelemetry-extension-incubator-1.33.0-alpha.pom">
<sha256 value="cbcee23193627a9733cdd59750a9ff921334e4b5fa0f489a3ab9c44fa0ea6dac" origin="Generated by Gradle"/> <sha256 value="5c94be8af1793ec75f96ca6dc4b26a0c839057f25e444976eb6eec744363912b" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="io.opentelemetry" name="opentelemetry-sdk" version="1.24.0"> <component group="io.opentelemetry" name="opentelemetry-extension-trace-propagators" version="1.33.0">
<artifact name="opentelemetry-sdk-1.24.0.jar"> <artifact name="opentelemetry-extension-trace-propagators-1.33.0.jar">
<sha256 value="638b807dcbb32dbc47b46f5bf9256164fdd3296aa6a678895fae213fcc1d5236" origin="Generated by Gradle"/> <sha256 value="ae0015f893b54376238d6ab1e5796a2e531cd31b05ee0db391857cfb32c464ad" origin="Generated by Gradle"/>
</artifact> </artifact>
<artifact name="opentelemetry-sdk-1.24.0.module"> <artifact name="opentelemetry-extension-trace-propagators-1.33.0.module">
<sha256 value="bb90eb81fa4df9aaf1f3490efe64390b14f2a374b13bd2040830f74f57646564" origin="Generated by Gradle"/> <sha256 value="e31a07d40b15dcac41aa8d5151ce6beb3dd0663297682382a3f9a042d5cc767e" origin="Generated by Gradle"/>
</artifact> </artifact>
<artifact name="opentelemetry-sdk-1.24.0.pom"> <artifact name="opentelemetry-extension-trace-propagators-1.33.0.pom">
<sha256 value="71aa77a5dbaa098bab1a69ab67f22eec6df5bb4f0dc670c8c2a950432c6bcc03" origin="Generated by Gradle"/> <sha256 value="3b6930767b985bf6aa8e91d32d60f87e6b2a6d0805b7e11be7e59a9e712d74f4" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="io.opentelemetry" name="opentelemetry-sdk-common" version="1.24.0"> <component group="io.opentelemetry" name="opentelemetry-sdk" version="1.33.0">
<artifact name="opentelemetry-sdk-common-1.24.0.jar"> <artifact name="opentelemetry-sdk-1.33.0.jar">
<sha256 value="4241f3070db865b9b39843d9489cab9c89859464700a3172c1d16319f4678061" origin="Generated by Gradle"/> <sha256 value="8a9b32722e9732d4c22402e1351dbd4cec5131447f151b560a184a4680e67d84" origin="Generated by Gradle"/>
</artifact> </artifact>
<artifact name="opentelemetry-sdk-common-1.24.0.module"> <artifact name="opentelemetry-sdk-1.33.0.module">
<sha256 value="bd81047832102c9b5771e17f635e6718e0cadfe9d5b49917ada5cd2bf2285c46" origin="Generated by Gradle"/> <sha256 value="4080545b517ff1301a119b3a2fde611d622471d4df59cbf7be62bc8515bf8345" origin="Generated by Gradle"/>
</artifact> </artifact>
<artifact name="opentelemetry-sdk-common-1.24.0.pom"> <artifact name="opentelemetry-sdk-1.33.0.pom">
<sha256 value="4eb3cea039e2f9f1185370b0608466a7a568cacab1d2593bede94c79f26a8772" origin="Generated by Gradle"/> <sha256 value="f44002bae8885283b6bf40c17d555a161c5788bae8170715153a3531f36fa4c0" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="io.opentelemetry" name="opentelemetry-sdk-extension-autoconfigure" version="1.24.0-alpha"> <component group="io.opentelemetry" name="opentelemetry-sdk-common" version="1.33.0">
<artifact name="opentelemetry-sdk-extension-autoconfigure-1.24.0-alpha.jar"> <artifact name="opentelemetry-sdk-common-1.33.0.jar">
<sha256 value="55f544828cb2bf2ef1fc6557a198ed310159ff5cde1682891a868cb00d81812d" origin="Generated by Gradle"/> <sha256 value="b344a6d2d5f82c03615c7b84f2ea6b666a86ec1ae5da27121179d349579e811f" origin="Generated by Gradle"/>
</artifact> </artifact>
<artifact name="opentelemetry-sdk-extension-autoconfigure-1.24.0-alpha.module"> <artifact name="opentelemetry-sdk-common-1.33.0.module">
<sha256 value="5a7ed9a621f7e9bab5279a3005aba496f6767c941004561301e8498e25238443" origin="Generated by Gradle"/> <sha256 value="842758b04612906e436ca0d79bcd1926a35203ad64a3c1c58f00b55bf885c520" origin="Generated by Gradle"/>
</artifact> </artifact>
<artifact name="opentelemetry-sdk-extension-autoconfigure-1.24.0-alpha.pom"> <artifact name="opentelemetry-sdk-common-1.33.0.pom">
<sha256 value="d2cc1fe4e3071ead10aec02d9ed89c512444118e57742ccfe8e2b5a2f8a3440b" origin="Generated by Gradle"/> <sha256 value="2323727ba88877fc24fcad556bedebcf6fdc6e79de12095d39192653f313ae74" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="io.opentelemetry" name="opentelemetry-sdk-extension-autoconfigure-spi" version="1.24.0"> <component group="io.opentelemetry" name="opentelemetry-sdk-extension-autoconfigure" version="1.33.0">
<artifact name="opentelemetry-sdk-extension-autoconfigure-spi-1.24.0.jar"> <artifact name="opentelemetry-sdk-extension-autoconfigure-1.33.0.jar">
<sha256 value="51775a0f0fa297198d7a0b48dabf121246ecbb1e306dafb32e6a2e96d35f667b" origin="Generated by Gradle"/> <sha256 value="30d9368e3fd812b148b78460c55de4e3092931c1be40c935123f00bcd3bc86ed" origin="Generated by Gradle"/>
</artifact> </artifact>
<artifact name="opentelemetry-sdk-extension-autoconfigure-spi-1.24.0.module"> <artifact name="opentelemetry-sdk-extension-autoconfigure-1.33.0.module">
<sha256 value="dc0b5a57b3accfb5cc3298afb89626e8b5922b539d71c741e9953dac85463a85" origin="Generated by Gradle"/> <sha256 value="c4103e963e5d29fb12872364e139122cdf7e2d466a029a1d367ca4b10f3d642c" origin="Generated by Gradle"/>
</artifact> </artifact>
<artifact name="opentelemetry-sdk-extension-autoconfigure-spi-1.24.0.pom"> <artifact name="opentelemetry-sdk-extension-autoconfigure-1.33.0.pom">
<sha256 value="a81f378b83a6a033e4cffe01f709f558784562e818559b3f3ddb108b15c77d4e" origin="Generated by Gradle"/> <sha256 value="0bb34f75ab87b48d4bc8ab102c6d410301f0f1006ba6009fc09cd0eb035b6fd3" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="io.opentelemetry" name="opentelemetry-sdk-logs" version="1.24.0-alpha"> <component group="io.opentelemetry" name="opentelemetry-sdk-extension-autoconfigure-spi" version="1.33.0">
<artifact name="opentelemetry-sdk-logs-1.24.0-alpha.jar"> <artifact name="opentelemetry-sdk-extension-autoconfigure-spi-1.33.0.jar">
<sha256 value="9176e6a815e375281c7470af83da94e13c420cd014b4260741a9ae1859013582" origin="Generated by Gradle"/> <sha256 value="ed8e236e1ad56721ceed9df349b9b9b25f8fd8d603a1f8840ee517516894c736" origin="Generated by Gradle"/>
</artifact> </artifact>
<artifact name="opentelemetry-sdk-logs-1.24.0-alpha.module"> <artifact name="opentelemetry-sdk-extension-autoconfigure-spi-1.33.0.module">
<sha256 value="9447ab685fe8d286fcc6fa96b44d1c6a6d1b9289dec4b67374197abca42e7fce" origin="Generated by Gradle"/> <sha256 value="adf76be86e3a98c37d21802d60c4d923b2e898ddfd61293df336b9dcf60b8903" origin="Generated by Gradle"/>
</artifact> </artifact>
<artifact name="opentelemetry-sdk-logs-1.24.0-alpha.pom"> <artifact name="opentelemetry-sdk-extension-autoconfigure-spi-1.33.0.pom">
<sha256 value="028e2a6dae9c54407d55429695f0904081aeac508180473b32b976bc4d8a88ac" origin="Generated by Gradle"/> <sha256 value="9d2585328675955eb42171afc0827f771f811adc1aeb30f776abb24136dcdb5b" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="io.opentelemetry" name="opentelemetry-sdk-metrics" version="1.24.0"> <component group="io.opentelemetry" name="opentelemetry-sdk-logs" version="1.33.0">
<artifact name="opentelemetry-sdk-metrics-1.24.0.jar"> <artifact name="opentelemetry-sdk-logs-1.33.0.jar">
<sha256 value="fe1d79f8005ee86373faad0357fd616a9adf313deb5934eddf2cad19c91e6b57" origin="Generated by Gradle"/> <sha256 value="2e0be0791f28595388cf922c145ab7ad889395935b3b45c4ec606b7b5604116f" origin="Generated by Gradle"/>
</artifact> </artifact>
<artifact name="opentelemetry-sdk-metrics-1.24.0.module"> <artifact name="opentelemetry-sdk-logs-1.33.0.module">
<sha256 value="f5fbee426cb7b19241720fbf835bc52d95baf2008c2f9289c48237d9c5ca27a7" origin="Generated by Gradle"/> <sha256 value="7f23b2c886a7b2b02c4dd9ceb6636990f88f56453fc75507f1520ae4e799d68c" origin="Generated by Gradle"/>
</artifact> </artifact>
<artifact name="opentelemetry-sdk-metrics-1.24.0.pom"> <artifact name="opentelemetry-sdk-logs-1.33.0.pom">
<sha256 value="38261712e20e5688eb684eceea0eff5afb6f9ad4a157ce19feb0a611fcda1c0c" origin="Generated by Gradle"/> <sha256 value="d5c20b92621ef257c4540246ec4c4f82622018a8ca7ec58e292b055f32914e6a" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="io.opentelemetry" name="opentelemetry-sdk-trace" version="1.24.0"> <component group="io.opentelemetry" name="opentelemetry-sdk-metrics" version="1.33.0">
<artifact name="opentelemetry-sdk-trace-1.24.0.jar"> <artifact name="opentelemetry-sdk-metrics-1.33.0.jar">
<sha256 value="899264a4a0f7e9d52a4b89c3954a7fb012ce4b1b7ee6ac005e4f54e358c39ddf" origin="Generated by Gradle"/> <sha256 value="62fb0c0839538adf9b6976d352f06e46adc2a54e79043ff7934c1ae0fc114b4e" origin="Generated by Gradle"/>
</artifact> </artifact>
<artifact name="opentelemetry-sdk-trace-1.24.0.module"> <artifact name="opentelemetry-sdk-metrics-1.33.0.module">
<sha256 value="a83f6309318196d9e728bd80bcab863b6b479e51b844440d2ca918d66bae8b44" origin="Generated by Gradle"/> <sha256 value="3a2017325629e10956ca632abffbd9c298335a4e97957aa9c5b7f784a7645e85" origin="Generated by Gradle"/>
</artifact> </artifact>
<artifact name="opentelemetry-sdk-trace-1.24.0.pom"> <artifact name="opentelemetry-sdk-metrics-1.33.0.pom">
<sha256 value="b13e94b0867b30c5adc7006f0a44cea1e8d91114ff8cec6af6d49cb83ab36b73" origin="Generated by Gradle"/> <sha256 value="8865f9bddf48271e27a557de65fb8ca50f5d051774365e9eef54ca5d5299fedf" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="io.opentelemetry" name="opentelemetry-semconv" version="1.24.0-alpha"> <component group="io.opentelemetry" name="opentelemetry-sdk-trace" version="1.33.0">
<artifact name="opentelemetry-semconv-1.24.0-alpha.jar"> <artifact name="opentelemetry-sdk-trace-1.33.0.jar">
<sha256 value="c54d950f6bc84990df8388e912d63678744c0dd57c40b13a28f9579853157aa3" origin="Generated by Gradle"/> <sha256 value="dd9c2a5949263cc7777720090c11036221ddce4a5fa33d65d4bae47ba157178a" origin="Generated by Gradle"/>
</artifact>
<artifact name="opentelemetry-sdk-trace-1.33.0.module">
<sha256 value="d53fef85448e30640827e8fc7c15387ee28123491dea9aae2d98049bceb93137" origin="Generated by Gradle"/>
</artifact> </artifact>
<artifact name="opentelemetry-semconv-1.24.0-alpha.module"> <artifact name="opentelemetry-sdk-trace-1.33.0.pom">
<sha256 value="a0319662bad51cff113b4aa411ccbb5ae05b0ddeddfaef59e9d7c778853be9c1" origin="Generated by Gradle"/> <sha256 value="cb377b829d1aec2bd4fac58f1159ccc24ef29c61d7ca07677895219ad09eac5f" origin="Generated by Gradle"/>
</artifact> </artifact>
<artifact name="opentelemetry-semconv-1.24.0-alpha.pom"> </component>
<sha256 value="3db89611dab677538982b5ffacc70142ea22bec304ddf6d548f5b696269c22a4" origin="Generated by Gradle"/> <component group="io.opentelemetry.instrumentation" name="opentelemetry-instrumentation-api" version="1.32.0">
<artifact name="opentelemetry-instrumentation-api-1.32.0.jar">
<sha256 value="a8216037ec676d0d6568822e99cdb85a19259c8fdbc3a204f4acc81aa632948f" origin="Generated by Gradle"/>
</artifact>
<artifact name="opentelemetry-instrumentation-api-1.32.0.module">
<sha256 value="8a946e0554e5599fef1cda27566fece1f873889ee9a36555c9398e2fd79a6a2a" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="io.opentelemetry.instrumentation" name="opentelemetry-instrumentation-api" version="1.24.0"> <component group="io.opentelemetry.instrumentation" name="opentelemetry-instrumentation-api-semconv" version="1.32.0-alpha">
<artifact name="opentelemetry-instrumentation-api-1.24.0.jar"> <artifact name="opentelemetry-instrumentation-api-semconv-1.32.0-alpha.jar">
<sha256 value="1b60021970458e584c7f44e39c85ca4dafeafb496862f7b09a106450f8b27101" origin="Generated by Gradle"/> <sha256 value="69a6f2c9a6a4a2b15ad69493da7667f31c7ab85606827eb5b3abc6d1809d6f88" origin="Generated by Gradle"/>
</artifact> </artifact>
<artifact name="opentelemetry-instrumentation-api-1.24.0.module"> <artifact name="opentelemetry-instrumentation-api-semconv-1.32.0-alpha.module">
<sha256 value="ab4c4d28564a9d217782dbf30111dd00882c929076d1befdcb77466455ceba2e" origin="Generated by Gradle"/> <sha256 value="e51fc0ef4266f9d9d515be17a6dc84c7116d0a6398903ec52e062a235c677310" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="io.opentelemetry.instrumentation" name="opentelemetry-instrumentation-api-semconv" version="1.24.0-alpha"> <component group="io.opentelemetry.instrumentation" name="opentelemetry-okhttp-3.0" version="1.32.0-alpha">
<artifact name="opentelemetry-instrumentation-api-semconv-1.24.0-alpha.jar"> <artifact name="opentelemetry-okhttp-3.0-1.32.0-alpha.jar">
<sha256 value="a043f0085fb170a9d541abd8b0dc0d62393915d31af8a3944a65a3a313393477" origin="Generated by Gradle"/> <sha256 value="b37e6b115dd9eebb065ed83fd2068bea6b902fa9bf32de7906d407b44008f1f8" origin="Generated by Gradle"/>
</artifact> </artifact>
<artifact name="opentelemetry-instrumentation-api-semconv-1.24.0-alpha.module"> <artifact name="opentelemetry-okhttp-3.0-1.32.0-alpha.module">
<sha256 value="101fee856766be659b49b6301c9d4b8cf7c899c406986e3bd1a9fb0ecb88a2a6" origin="Generated by Gradle"/> <sha256 value="9e83826366bc6bb5ca32ace43eb6bef04cba8480dc3eb99db4e722e12f3da823" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="io.opentelemetry.instrumentation" name="opentelemetry-okhttp-3.0" version="1.24.0-alpha"> <component group="io.opentelemetry.proto" name="opentelemetry-proto" version="1.0.0-alpha">
<artifact name="opentelemetry-okhttp-3.0-1.24.0-alpha.jar"> <artifact name="opentelemetry-proto-1.0.0-alpha.jar">
<sha256 value="5a17d733cb02568d90f477aef9bed4bb634d212a698b87e4d2f19a26370ff50b" origin="Generated by Gradle"/> <sha256 value="b2a21e986b0d41193f8514c213ed79955afd17c8cdfe7bbb9e3d3e1a4512b56a" origin="Generated by Gradle"/>
</artifact> </artifact>
<artifact name="opentelemetry-okhttp-3.0-1.24.0-alpha.module"> <artifact name="opentelemetry-proto-1.0.0-alpha.module">
<sha256 value="6e2f0ee79254e486714e0f1a1926744ac180d5ebe979845eb8ca80005962fe0a" origin="Generated by Gradle"/> <sha256 value="9eba4d553eee302fc1121f9b2ef8cdc7c00d688ba787c2cf86005d1bff817ea1" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="io.opentelemetry.proto" name="opentelemetry-proto" version="0.19.0-alpha"> <component group="io.opentelemetry.semconv" name="opentelemetry-semconv" version="1.23.1-alpha">
<artifact name="opentelemetry-proto-0.19.0-alpha.jar"> <artifact name="opentelemetry-semconv-1.23.1-alpha.jar">
<sha256 value="3666ce35098ae1624d9d9606665386e6e30c3e647d700ee67480bbfd5533e41f" origin="Generated by Gradle"/> <sha256 value="ae8cace98274227cd4b04f1dacee9309a88f3208e2e2bd96df7f8d7d57fb7d4d" origin="Generated by Gradle"/>
</artifact> </artifact>
<artifact name="opentelemetry-proto-0.19.0-alpha.module"> <artifact name="opentelemetry-semconv-1.23.1-alpha.module">
<sha256 value="f13583a112d0e4572b77ba31897a3a4dbc993c1bd6a5483c75f8f71a64dd5eca" origin="Generated by Gradle"/> <sha256 value="9c05dd2969f821d1baac9d1f21dc292f3451bfb8caae578016fee6e1eb9019b4" origin="Generated by Gradle"/>
</artifact>
<artifact name="opentelemetry-semconv-1.23.1-alpha.pom">
<sha256 value="5e75ca376b135db6662142d5f99bbbdd274cc4cdf2729c486e4d6a0541b6b10c" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="io.opentracing" name="opentracing-api" version="0.33.0"> <component group="io.opentracing" name="opentracing-api" version="0.33.0">
@ -2423,25 +2434,20 @@
<sha256 value="722b55119097b04d711479dfb60dd54b27b5920a1aeb7702027c44a215ffc596" origin="Generated by Gradle"/> <sha256 value="722b55119097b04d711479dfb60dd54b27b5920a1aeb7702027c44a215ffc596" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="io.prometheus" name="parent" version="0.9.0"> <component group="io.prometheus" name="simpleclient" version="0.16.0">
<artifact name="parent-0.9.0.pom"> <artifact name="simpleclient-0.16.0.jar">
<sha256 value="d0a11b469235119373cc8653639b5c0ef151cef7ef24156bdb40e86d06cae6a5" origin="Generated by Gradle"/> <sha256 value="22c374f237f7bc4fdb1f0ec2da379c0ba00e69ad2ffe8b6ade543d73062d377f" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="io.prometheus" name="simpleclient" version="0.9.0">
<artifact name="simpleclient-0.9.0.jar">
<sha256 value="72d6dc49c023a4b3345d8a8a82d947ea24d07b1ad60cf57fee85a6f77b149a19" origin="Generated by Gradle"/>
</artifact> </artifact>
<artifact name="simpleclient-0.9.0.pom"> <artifact name="simpleclient-0.16.0.pom">
<sha256 value="af483cf712b579150db4840c099ffb2b8fc2f5e227897511523e707bab484e5c" origin="Generated by Gradle"/> <sha256 value="fec080d07ab15875d971c4ae81f951da61b5cff9991cf50e530ba8fca4770973" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="io.prometheus" name="simpleclient_common" version="0.9.0"> <component group="io.prometheus" name="simpleclient_common" version="0.16.0">
<artifact name="simpleclient_common-0.9.0.jar"> <artifact name="simpleclient_common-0.16.0.jar">
<sha256 value="97d404dca184d2a07817ccae2ef1df9fb34b84526c44cf2367ef0ba8031759c0" origin="Generated by Gradle"/> <sha256 value="eba6ec26ce7e40cbb8725e05fb83247a9f4f44945b9e7522e3375dde67b9f059" origin="Generated by Gradle"/>
</artifact> </artifact>
<artifact name="simpleclient_common-0.9.0.pom"> <artifact name="simpleclient_common-0.16.0.pom">
<sha256 value="09995ffae8df4a170fc991b7c30518afb4235d7bbdf7dc2757d73978509b2a90" origin="Generated by Gradle"/> <sha256 value="77f01109ce1507bd7443e2272737674b27524faacb0dcb96e3b8ede0b6ab9eb6" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="io.prometheus" name="simpleclient_guava" version="0.16.0"> <component group="io.prometheus" name="simpleclient_guava" version="0.16.0">
@ -2452,12 +2458,12 @@
<sha256 value="1d42aa72798870f20e997ae6c4d14ec3b26b3ef715602b2a8f32404e3657bdb1" origin="Generated by Gradle"/> <sha256 value="1d42aa72798870f20e997ae6c4d14ec3b26b3ef715602b2a8f32404e3657bdb1" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="io.prometheus" name="simpleclient_hotspot" version="0.9.0"> <component group="io.prometheus" name="simpleclient_hotspot" version="0.16.0">
<artifact name="simpleclient_hotspot-0.9.0.jar"> <artifact name="simpleclient_hotspot-0.16.0.jar">
<sha256 value="927fc7069f9a8ebd1a8420c3bb1675a957bd359b95e50664aa96e387d4b0a256" origin="Generated by Gradle"/> <sha256 value="134f156cfeb44cbd3864065806ef5db5543c68af578d1d7ee59283e2e9853f73" origin="Generated by Gradle"/>
</artifact> </artifact>
<artifact name="simpleclient_hotspot-0.9.0.pom"> <artifact name="simpleclient_hotspot-0.16.0.pom">
<sha256 value="349ffe987a81e6ed51d917cc12440821f026c716768641ba8866c383906facde" origin="Generated by Gradle"/> <sha256 value="d216937de723120fb7a4c88b92c5bea1911afb88ba76d0d48f1769ad85b675e9" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="io.prometheus" name="simpleclient_httpserver" version="0.15.0"> <component group="io.prometheus" name="simpleclient_httpserver" version="0.15.0">
@ -2468,12 +2474,41 @@
<sha256 value="0af7ff19c8dedb71418b6da24731d732f261b41da41a670c243ac31862d5fb6b" origin="Generated by Gradle"/> <sha256 value="0af7ff19c8dedb71418b6da24731d732f261b41da41a670c243ac31862d5fb6b" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="io.prometheus" name="simpleclient_pushgateway" version="0.9.0"> <component group="io.prometheus" name="simpleclient_pushgateway" version="0.16.0">
<artifact name="simpleclient_pushgateway-0.9.0.jar"> <artifact name="simpleclient_pushgateway-0.16.0.jar">
<sha256 value="1daadee769a2be810df4e29ea24c688ae0f3ad64dd9ccb1f7e74941a73f21aa4" origin="Generated by Gradle"/> <sha256 value="3277cf527702f21760073d4528fa247493a6de3116994dfd290d6bb677849d47" origin="Generated by Gradle"/>
</artifact>
<artifact name="simpleclient_pushgateway-0.16.0.pom">
<sha256 value="c6fa51afc562d31016c388efde34862d2e6c0f19db44de835f4e03f4579e6541" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="io.prometheus" name="simpleclient_tracer" version="0.16.0">
<artifact name="simpleclient_tracer-0.16.0.pom">
<sha256 value="3812bb22b95f81b4c3460e9e4e75c3ba72fa45e443a9fce5320842aabd0e99c2" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="io.prometheus" name="simpleclient_tracer_common" version="0.16.0">
<artifact name="simpleclient_tracer_common-0.16.0.jar">
<sha256 value="e84a784ac8e24f182ee62da80b6b5c8140774b75bfa4bf9cc3d3b8390db625f6" origin="Generated by Gradle"/>
</artifact>
<artifact name="simpleclient_tracer_common-0.16.0.pom">
<sha256 value="5f90075cecfcd11281de9ccb48968d1212b24670d684ffc840441a52ae875eff" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="io.prometheus" name="simpleclient_tracer_otel" version="0.16.0">
<artifact name="simpleclient_tracer_otel-0.16.0.jar">
<sha256 value="a2a84c59bef3796bb7f9c6f2ae8b7de8b905313ef28180ac3de7ff61dd68df3f" origin="Generated by Gradle"/>
</artifact> </artifact>
<artifact name="simpleclient_pushgateway-0.9.0.pom"> <artifact name="simpleclient_tracer_otel-0.16.0.pom">
<sha256 value="d79f02c4b9be5ea002f118c81989012cfe38136880df02ea796b440f14924262" origin="Generated by Gradle"/> <sha256 value="7eb979f1dc33e8be4e5ad1430e5409718a41783c26779ab3105260f6b436d046" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="io.prometheus" name="simpleclient_tracer_otel_agent" version="0.16.0">
<artifact name="simpleclient_tracer_otel_agent-0.16.0.jar">
<sha256 value="7ad2bb40df74a772d9f5445a3d03579b49d6b37a47d5e90f6cf3f59ecf41ad06" origin="Generated by Gradle"/>
</artifact>
<artifact name="simpleclient_tracer_otel_agent-0.16.0.pom">
<sha256 value="5528f85884354ae94d9bc06747e7f5892d092c0b55055ae7056668ea0ca1ce7c" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="io.reactivex.rxjava2" name="rxjava" version="2.2.2"> <component group="io.reactivex.rxjava2" name="rxjava" version="2.2.2">
@ -2816,19 +2851,6 @@
<sha256 value="9e0636486d1f2356a7f345b4df9bb95e5842f0ab26bd7615b07b7be99b3c870a" origin="Generated by Gradle"/> <sha256 value="9e0636486d1f2356a7f345b4df9bb95e5842f0ab26bd7615b07b7be99b3c870a" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="javax.xml.bind" name="jaxb-api" version="2.3.0">
<artifact name="jaxb-api-2.3.0.jar">
<sha256 value="883007989d373d19f352ba9792b25dec21dc7d0e205a710a93a3815101bb3d03" origin="Generated by Gradle"/>
</artifact>
<artifact name="jaxb-api-2.3.0.pom">
<sha256 value="466f6e7b9901e952ae1ad24f0e9494a5680961f04e42239b5ae64e8dcaf6297a" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="javax.xml.bind" name="jaxb-api-parent" version="2.3.0">
<artifact name="jaxb-api-parent-2.3.0.pom">
<sha256 value="76b7aac6413269d0bddb47b8b8e37bb3145789c9a9a42df80927aeb5aeeffb72" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="junit" name="junit" version="4.12"> <component group="junit" name="junit" version="4.12">
<artifact name="junit-4.12.jar"> <artifact name="junit-4.12.jar">
<sha256 value="59721f0805e223d84b90677887d9ff567dc534d7c502ca903c0c2b17f05c116a" origin="Generated by Gradle"/> <sha256 value="59721f0805e223d84b90677887d9ff567dc534d7c502ca903c0c2b17f05c116a" origin="Generated by Gradle"/>

@ -80,16 +80,16 @@ dependencyManagement {
dependency group: 'io.netty', name: 'netty-transport-native-kqueue', version:'4.1.104.Final', classifier: 'osx-x86_64' dependency group: 'io.netty', name: 'netty-transport-native-kqueue', version:'4.1.104.Final', classifier: 'osx-x86_64'
dependency 'io.netty:netty-transport-native-unix-common:4.1.104.Final' dependency 'io.netty:netty-transport-native-unix-common:4.1.104.Final'
dependency 'io.opentelemetry:opentelemetry-api:1.24.0' dependency 'io.opentelemetry:opentelemetry-api:1.33.0'
dependency 'io.opentelemetry:opentelemetry-exporter-otlp:1.24.0' dependency 'io.opentelemetry:opentelemetry-exporter-otlp:1.33.0'
dependency 'io.opentelemetry:opentelemetry-extension-trace-propagators:1.24.0' dependency 'io.opentelemetry:opentelemetry-extension-trace-propagators:1.33.0'
dependency 'io.opentelemetry.proto:opentelemetry-proto:0.19.0-alpha' dependency 'io.opentelemetry:opentelemetry-sdk-metrics:1.33.0'
dependency 'io.opentelemetry:opentelemetry-sdk-metrics:1.24.0' dependency 'io.opentelemetry:opentelemetry-sdk-trace:1.33.0'
dependency 'io.opentelemetry:opentelemetry-sdk-trace:1.24.0' dependency 'io.opentelemetry:opentelemetry-sdk:1.33.0'
dependency 'io.opentelemetry:opentelemetry-sdk:1.24.0' dependency 'io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:1.33.0'
dependency 'io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:1.24.0-alpha' dependency 'io.opentelemetry.instrumentation:opentelemetry-okhttp-3.0:1.32.0-alpha'
dependency 'io.opentelemetry:opentelemetry-semconv:1.24.0-alpha' dependency 'io.opentelemetry.proto:opentelemetry-proto:1.0.0-alpha'
dependency 'io.opentelemetry.instrumentation:opentelemetry-okhttp-3.0:1.24.0-alpha' dependency 'io.opentelemetry.semconv:opentelemetry-semconv:1.23.1-alpha'
dependency 'io.opentracing.contrib:opentracing-okhttp3:3.0.0' dependency 'io.opentracing.contrib:opentracing-okhttp3:3.0.0'
dependency 'io.opentracing:opentracing-api:0.33.0' dependency 'io.opentracing:opentracing-api:0.33.0'
@ -97,11 +97,13 @@ dependencyManagement {
dependency 'io.pkts:pkts-core:3.0.10' dependency 'io.pkts:pkts-core:3.0.10'
dependency 'io.prometheus:simpleclient:0.9.0' dependencySet(group: 'io.prometheus', version: '0.16.0') {
dependency 'io.prometheus:simpleclient_common:0.9.0' entry 'simpleclient'
dependency 'io.prometheus:simpleclient_hotspot:0.9.0' entry 'simpleclient_common'
dependency 'io.prometheus:simpleclient_pushgateway:0.9.0' entry 'simpleclient_hotspot'
dependency 'io.prometheus:simpleclient_guava:0.16.0' entry 'simpleclient_pushgateway'
entry 'simpleclient_guava'
}
dependency 'io.reactivex.rxjava2:rxjava:2.2.21' dependency 'io.reactivex.rxjava2:rxjava:2.2.21'

@ -48,11 +48,11 @@ dependencies {
implementation 'io.netty:netty-all' implementation 'io.netty:netty-all'
implementation 'io.opentelemetry:opentelemetry-api' implementation 'io.opentelemetry:opentelemetry-api'
implementation 'io.opentelemetry:opentelemetry-sdk' implementation 'io.opentelemetry:opentelemetry-sdk'
implementation 'io.opentelemetry:opentelemetry-semconv'
implementation 'io.opentelemetry:opentelemetry-sdk-trace' implementation 'io.opentelemetry:opentelemetry-sdk-trace'
implementation 'io.opentelemetry:opentelemetry-sdk-metrics' implementation 'io.opentelemetry:opentelemetry-sdk-metrics'
implementation 'io.opentelemetry:opentelemetry-exporter-otlp' implementation 'io.opentelemetry:opentelemetry-exporter-otlp'
implementation 'io.opentelemetry:opentelemetry-sdk-extension-autoconfigure' implementation 'io.opentelemetry:opentelemetry-sdk-extension-autoconfigure'
implementation 'io.opentelemetry.semconv:opentelemetry-semconv'
implementation 'io.prometheus:simpleclient' implementation 'io.prometheus:simpleclient'
implementation 'io.prometheus:simpleclient_common' implementation 'io.prometheus:simpleclient_common'

@ -22,7 +22,6 @@ import io.opentelemetry.sdk.metrics.data.AggregationTemporality;
import io.opentelemetry.sdk.metrics.data.MetricData; import io.opentelemetry.sdk.metrics.data.MetricData;
import io.opentelemetry.sdk.metrics.export.CollectionRegistration; import io.opentelemetry.sdk.metrics.export.CollectionRegistration;
import io.opentelemetry.sdk.metrics.export.MetricReader; import io.opentelemetry.sdk.metrics.export.MetricReader;
import io.opentelemetry.sdk.metrics.internal.export.MetricProducer;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
class DebugMetricReader implements MetricReader { class DebugMetricReader implements MetricReader {
@ -31,7 +30,7 @@ class DebugMetricReader implements MetricReader {
public DebugMetricReader() {} public DebugMetricReader() {}
public Collection<MetricData> getAllMetrics() { public Collection<MetricData> getAllMetrics() {
return MetricProducer.asMetricProducer(this.registration).collectAllMetrics(); return registration.collectAllMetrics();
} }
@Override @Override

@ -50,6 +50,7 @@ import io.opentelemetry.api.metrics.Meter;
import io.opentelemetry.api.trace.TracerProvider; import io.opentelemetry.api.trace.TracerProvider;
import io.opentelemetry.sdk.OpenTelemetrySdk; import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk; import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk;
import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdkBuilder;
import io.opentelemetry.sdk.common.CompletableResultCode; import io.opentelemetry.sdk.common.CompletableResultCode;
import io.opentelemetry.sdk.metrics.SdkMeterProvider; import io.opentelemetry.sdk.metrics.SdkMeterProvider;
import io.opentelemetry.sdk.metrics.data.DoublePointData; import io.opentelemetry.sdk.metrics.data.DoublePointData;
@ -61,7 +62,7 @@ import io.opentelemetry.sdk.metrics.data.PointData;
import io.opentelemetry.sdk.metrics.data.SummaryPointData; import io.opentelemetry.sdk.metrics.data.SummaryPointData;
import io.opentelemetry.sdk.resources.Resource; import io.opentelemetry.sdk.resources.Resource;
import io.opentelemetry.sdk.trace.SdkTracerProvider; import io.opentelemetry.sdk.trace.SdkTracerProvider;
import io.opentelemetry.semconv.resource.attributes.ResourceAttributes; import io.opentelemetry.semconv.ResourceAttributes;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -110,15 +111,18 @@ public class OpenTelemetrySystem implements ObservableMetricsSystem {
.merge( .merge(
Resource.create( Resource.create(
Attributes.builder().put(ResourceAttributes.SERVICE_NAME, jobName).build())); Attributes.builder().put(ResourceAttributes.SERVICE_NAME, jobName).build()));
AutoConfiguredOpenTelemetrySdk autoSdk = AutoConfiguredOpenTelemetrySdkBuilder autoSdkBuilder =
AutoConfiguredOpenTelemetrySdk.builder() AutoConfiguredOpenTelemetrySdk.builder()
.addMeterProviderCustomizer( .addMeterProviderCustomizer(
(provider, config) -> (provider, config) ->
provider.setResource(resource).registerMetricReader(debugMetricReader)) provider.setResource(resource).registerMetricReader(debugMetricReader))
.addTracerProviderCustomizer((provider, config) -> provider.setResource(resource)) .addTracerProviderCustomizer((provider, config) -> provider.setResource(resource));
.setResultAsGlobal(setAsGlobal)
.build(); if (setAsGlobal) {
OpenTelemetrySdk sdk = autoSdk.getOpenTelemetrySdk(); autoSdkBuilder.setResultAsGlobal();
}
OpenTelemetrySdk sdk = autoSdkBuilder.build().getOpenTelemetrySdk();
this.sdkMeterProvider = sdk.getSdkMeterProvider(); this.sdkMeterProvider = sdk.getSdkMeterProvider();
this.sdkTracerProvider = sdk.getSdkTracerProvider(); this.sdkTracerProvider = sdk.getSdkTracerProvider();
} }

@ -32,7 +32,6 @@ import java.util.Set;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.function.DoubleSupplier; import java.util.function.DoubleSupplier;
import java.util.function.Supplier; import java.util.function.Supplier;
import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSet;
@ -48,6 +47,7 @@ import io.prometheus.client.hotspot.GarbageCollectorExports;
import io.prometheus.client.hotspot.MemoryPoolsExports; import io.prometheus.client.hotspot.MemoryPoolsExports;
import io.prometheus.client.hotspot.StandardExports; import io.prometheus.client.hotspot.StandardExports;
import io.prometheus.client.hotspot.ThreadExports; import io.prometheus.client.hotspot.ThreadExports;
import io.vertx.core.impl.ConcurrentHashSet;
/** The Prometheus metrics system. */ /** The Prometheus metrics system. */
public class PrometheusMetricsSystem implements ObservableMetricsSystem { public class PrometheusMetricsSystem implements ObservableMetricsSystem {
@ -58,6 +58,7 @@ public class PrometheusMetricsSystem implements ObservableMetricsSystem {
cachedCounters = new ConcurrentHashMap<>(); cachedCounters = new ConcurrentHashMap<>();
private final Map<String, LabelledMetric<OperationTimer>> cachedTimers = private final Map<String, LabelledMetric<OperationTimer>> cachedTimers =
new ConcurrentHashMap<>(); new ConcurrentHashMap<>();
private final Set<String> totalSuffixedCounters = new ConcurrentHashSet<>();
private final Set<MetricCategory> enabledCategories; private final Set<MetricCategory> enabledCategories;
private final boolean timersEnabled; private final boolean timersEnabled;
@ -95,7 +96,7 @@ public class PrometheusMetricsSystem implements ObservableMetricsSystem {
final String name, final String name,
final String help, final String help,
final String... labelNames) { final String... labelNames) {
final String metricName = convertToPrometheusName(category, name); final String metricName = convertToPrometheusCounterName(category, name);
return cachedCounters.computeIfAbsent( return cachedCounters.computeIfAbsent(
metricName, metricName,
(k) -> { (k) -> {
@ -185,9 +186,7 @@ public class PrometheusMetricsSystem implements ObservableMetricsSystem {
category, key -> Collections.newSetFromMap(new ConcurrentHashMap<>())); category, key -> Collections.newSetFromMap(new ConcurrentHashMap<>()));
final List<String> newSamples = final List<String> newSamples =
metric.collect().stream() metric.collect().stream().map(metricFamilySamples -> metricFamilySamples.name).toList();
.map(metricFamilySamples -> metricFamilySamples.name)
.collect(Collectors.toList());
metrics.stream() metrics.stream()
.filter( .filter(
@ -230,6 +229,9 @@ public class PrometheusMetricsSystem implements ObservableMetricsSystem {
if (familySamples.type == Collector.Type.SUMMARY) { if (familySamples.type == Collector.Type.SUMMARY) {
return convertSummarySampleNamesToLabels(category, sample, familySamples); return convertSummarySampleNamesToLabels(category, sample, familySamples);
} }
if (familySamples.type == Collector.Type.COUNTER) {
return convertCounterNamesToLabels(category, sample, familySamples);
}
return new Observation( return new Observation(
category, category,
convertFromPrometheusName(category, sample.name), convertFromPrometheusName(category, sample.name),
@ -237,6 +239,20 @@ public class PrometheusMetricsSystem implements ObservableMetricsSystem {
sample.labelValues); sample.labelValues);
} }
private Observation convertCounterNamesToLabels(
final MetricCategory category, final Sample sample, final MetricFamilySamples familySamples) {
final List<String> labelValues = new ArrayList<>(sample.labelValues);
if (sample.name.endsWith("_created")) {
labelValues.add("created");
}
return new Observation(
category,
convertFromPrometheusCounterName(category, familySamples.name),
sample.value,
labelValues);
}
private Observation convertHistogramSampleNamesToLabels( private Observation convertHistogramSampleNamesToLabels(
final MetricCategory category, final Sample sample, final MetricFamilySamples familySamples) { final MetricCategory category, final Sample sample, final MetricFamilySamples familySamples) {
final List<String> labelValues = new ArrayList<>(sample.labelValues); final List<String> labelValues = new ArrayList<>(sample.labelValues);
@ -259,6 +275,8 @@ public class PrometheusMetricsSystem implements ObservableMetricsSystem {
labelValues.add("sum"); labelValues.add("sum");
} else if (sample.name.endsWith("_count")) { } else if (sample.name.endsWith("_count")) {
labelValues.add("count"); labelValues.add("count");
} else if (sample.name.endsWith("_created")) {
labelValues.add("created");
} else { } else {
labelValues.add(labelValues.size() - 1, "quantile"); labelValues.add(labelValues.size() - 1, "quantile");
} }
@ -280,11 +298,34 @@ public class PrometheusMetricsSystem implements ObservableMetricsSystem {
return prometheusPrefix(category) + name; return prometheusPrefix(category) + name;
} }
/**
* Convert to prometheus counter name. Prometheus adds a _total suffix to the name if not present,
* so we remember if the original name already has it, to be able to covert back correctly
*
* @param category the category
* @param name the name
* @return the name as string
*/
public String convertToPrometheusCounterName(final MetricCategory category, final String name) {
if (name.endsWith("_total")) {
totalSuffixedCounters.add(name);
}
return convertToPrometheusName(category, name);
}
private String convertFromPrometheusName(final MetricCategory category, final String metricName) { private String convertFromPrometheusName(final MetricCategory category, final String metricName) {
final String prefix = prometheusPrefix(category); final String prefix = prometheusPrefix(category);
return metricName.startsWith(prefix) ? metricName.substring(prefix.length()) : metricName; return metricName.startsWith(prefix) ? metricName.substring(prefix.length()) : metricName;
} }
private String convertFromPrometheusCounterName(
final MetricCategory category, final String metricName) {
final String unPrefixedName = convertFromPrometheusName(category, metricName);
return totalSuffixedCounters.contains(unPrefixedName + "_total")
? unPrefixedName + "_total"
: unPrefixedName;
}
private String prometheusPrefix(final MetricCategory category) { private String prometheusPrefix(final MetricCategory category) {
return category.getApplicationPrefix().orElse("") + category.getName() + "_"; return category.getApplicationPrefix().orElse("") + category.getName() + "_";
} }

@ -17,6 +17,7 @@ package org.hyperledger.besu.metrics.prometheus;
import static java.util.Arrays.asList; import static java.util.Arrays.asList;
import static java.util.Collections.emptyList; import static java.util.Collections.emptyList;
import static java.util.Collections.singletonList; import static java.util.Collections.singletonList;
import static java.util.function.Predicate.not;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.hyperledger.besu.metrics.BesuMetricCategory.DEFAULT_METRIC_CATEGORIES; import static org.hyperledger.besu.metrics.BesuMetricCategory.DEFAULT_METRIC_CATEGORIES;
@ -51,6 +52,11 @@ public class PrometheusMetricsSystemTest {
Comparator.<Observation, String>comparing(observation -> observation.getCategory().getName()) Comparator.<Observation, String>comparing(observation -> observation.getCategory().getName())
.thenComparing(Observation::getMetricName) .thenComparing(Observation::getMetricName)
.thenComparing((o1, o2) -> o1.getLabels().equals(o2.getLabels()) ? 0 : 1); .thenComparing((o1, o2) -> o1.getLabels().equals(o2.getLabels()) ? 0 : 1);
private static final Comparator<Observation> WITH_VALUES =
Comparator.<Observation, String>comparing(observation -> observation.getCategory().getName())
.thenComparing(Observation::getMetricName)
.thenComparing((o1, o2) -> o1.getLabels().equals(o2.getLabels()) ? 0 : 1)
.thenComparing((o1, o2) -> o1.getValue().equals(o2.getValue()) ? 0 : 1);
@BeforeEach @BeforeEach
public void resetGlobalOpenTelemetry() { public void resetGlobalOpenTelemetry() {
@ -66,11 +72,17 @@ public class PrometheusMetricsSystemTest {
counter.inc(); counter.inc();
assertThat(metricsSystem.streamObservations()) assertThat(metricsSystem.streamObservations())
.containsExactly(new Observation(PEERS, "connected", 1.0, emptyList())); .usingElementComparator(this::compareCounters)
.containsExactlyInAnyOrder(
new Observation(PEERS, "connected", 1.0, emptyList()),
new Observation(PEERS, "connected", null, List.of("created")));
counter.inc(); counter.inc();
assertThat(metricsSystem.streamObservations()) assertThat(metricsSystem.streamObservations())
.containsExactly(new Observation(PEERS, "connected", 2.0, emptyList())); .usingElementComparator(this::compareCounters)
.containsExactly(
new Observation(PEERS, "connected", 2.0, emptyList()),
new Observation(PEERS, "connected", null, List.of("created")));
} }
@Test @Test
@ -83,26 +95,36 @@ public class PrometheusMetricsSystemTest {
counter1.labels().inc(); counter1.labels().inc();
assertThat(metricsSystem.streamObservations()) assertThat(metricsSystem.streamObservations())
.containsExactly(new Observation(PEERS, "connected", 1.0, emptyList())); .usingElementComparator(this::compareCounters)
.containsExactly(
new Observation(PEERS, "connected", 1.0, emptyList()),
new Observation(PEERS, "connected", null, List.of("created")));
counter2.labels().inc(); counter2.labels().inc();
assertThat(metricsSystem.streamObservations()) assertThat(metricsSystem.streamObservations())
.containsExactly(new Observation(PEERS, "connected", 2.0, emptyList())); .usingElementComparator(this::compareCounters)
.containsExactly(
new Observation(PEERS, "connected", 2.0, emptyList()),
new Observation(PEERS, "connected", null, List.of("created")));
} }
@Test @Test
public void shouldCreateSeparateObservationsForEachCounterLabelValue() { public void shouldCreateSeparateObservationsForEachCounterLabelValue() {
final LabelledMetric<Counter> counter = final LabelledMetric<Counter> counter =
metricsSystem.createLabelledCounter(PEERS, "connected", "Some help string", "labelName"); metricsSystem.createLabelledCounter(
PEERS, "connected_total", "Some help string", "labelName");
counter.labels("value1").inc(); counter.labels("value1").inc();
counter.labels("value2").inc(); counter.labels("value2").inc();
counter.labels("value1").inc(); counter.labels("value1").inc();
assertThat(metricsSystem.streamObservations()) assertThat(metricsSystem.streamObservations())
.usingElementComparator(this::compareCounters)
.containsExactlyInAnyOrder( .containsExactlyInAnyOrder(
new Observation(PEERS, "connected", 2.0, singletonList("value1")), new Observation(PEERS, "connected_total", 2.0, singletonList("value1")),
new Observation(PEERS, "connected", 1.0, singletonList("value2"))); new Observation(PEERS, "connected_total", 1.0, singletonList("value2")),
new Observation(PEERS, "connected_total", null, List.of("value1", "created")),
new Observation(PEERS, "connected_total", null, List.of("value2", "created")));
} }
@Test @Test
@ -138,11 +160,18 @@ public class PrometheusMetricsSystemTest {
counter.inc(5); counter.inc(5);
assertThat(metricsSystem.streamObservations()) assertThat(metricsSystem.streamObservations())
.containsExactly(new Observation(PEERS, "connected", 5.0, emptyList())); .usingElementComparator(this::compareCounters)
.containsExactly(
new Observation(PEERS, "connected", 5.0, emptyList()),
new Observation(PEERS, "connected", null, List.of("created")));
counter.inc(6); counter.inc(6);
assertThat(metricsSystem.streamObservations()) assertThat(metricsSystem.streamObservations())
.containsExactly(new Observation(PEERS, "connected", 11.0, emptyList())); .usingDefaultElementComparator()
.usingElementComparator(this::compareCounters)
.containsExactly(
new Observation(PEERS, "connected", 11.0, emptyList()),
new Observation(PEERS, "connected", null, List.of("created")));
} }
@Test @Test
@ -162,7 +191,8 @@ public class PrometheusMetricsSystemTest {
new Observation(RPC, "request", null, asList("quantile", "0.99")), new Observation(RPC, "request", null, asList("quantile", "0.99")),
new Observation(RPC, "request", null, asList("quantile", "1.0")), new Observation(RPC, "request", null, asList("quantile", "1.0")),
new Observation(RPC, "request", null, singletonList("sum")), new Observation(RPC, "request", null, singletonList("sum")),
new Observation(RPC, "request", null, singletonList("count"))); new Observation(RPC, "request", null, singletonList("count")),
new Observation(RPC, "request", null, singletonList("created")));
} }
@Test @Test
@ -192,7 +222,8 @@ public class PrometheusMetricsSystemTest {
new Observation(RPC, "request", null, asList("method", "quantile", "0.99")), new Observation(RPC, "request", null, asList("method", "quantile", "0.99")),
new Observation(RPC, "request", null, asList("method", "quantile", "1.0")), new Observation(RPC, "request", null, asList("method", "quantile", "1.0")),
new Observation(RPC, "request", null, asList("method", "sum")), new Observation(RPC, "request", null, asList("method", "sum")),
new Observation(RPC, "request", null, asList("method", "count"))); new Observation(RPC, "request", null, asList("method", "count")),
new Observation(RPC, "request", null, asList("method", "created")));
} }
@Test @Test
@ -251,6 +282,8 @@ public class PrometheusMetricsSystemTest {
counterR.labels("op").inc(); counterR.labels("op").inc();
assertThat(localMetricSystem.streamObservations()) assertThat(localMetricSystem.streamObservations())
.usingRecursiveFieldByFieldElementComparator()
.filteredOn(not(this::isCreatedSample))
.containsExactly(new Observation(RPC, "name", 1.0, singletonList("op"))); .containsExactly(new Observation(RPC, "name", 1.0, singletonList("op")));
} }
@ -280,4 +313,18 @@ public class PrometheusMetricsSystemTest {
assertThat(localMetricSystem).isInstanceOf(PrometheusMetricsSystem.class); assertThat(localMetricSystem).isInstanceOf(PrometheusMetricsSystem.class);
} }
private boolean isCreatedSample(final Observation obs) {
// Simple client 0.10.0 add a _created sample to every counter, histogram and summary, that we
// may want to ignore
return obs.getLabels().contains("created");
}
private int compareCounters(final Observation obs1, final Observation obs2) {
// for created samples ignore values
if (obs1.getLabels().contains("created") && obs2.getLabels().contains("created")) {
return IGNORE_VALUES.compare(obs1, obs2);
}
return WITH_VALUES.compare(obs1, obs2);
}
} }

Loading…
Cancel
Save