-
Notifications
You must be signed in to change notification settings - Fork 131
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Co-authored-by: Sylvain Juge <[email protected]>
- Loading branch information
1 parent
e464516
commit f8c7cb4
Showing
5 changed files
with
251 additions
and
2 deletions.
There are no files selected for viewing
152 changes: 152 additions & 0 deletions
152
...Test/java/io/opentelemetry/contrib/jmxscraper/target_systems/ActiveMqIntegrationTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,152 @@ | ||
/* | ||
* Copyright The OpenTelemetry Authors | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
package io.opentelemetry.contrib.jmxscraper.target_systems; | ||
|
||
import static io.opentelemetry.contrib.jmxscraper.target_systems.MetricAssertions.assertGaugeWithAttributes; | ||
import static io.opentelemetry.contrib.jmxscraper.target_systems.MetricAssertions.assertSumWithAttributes; | ||
import static org.assertj.core.api.Assertions.entry; | ||
|
||
import io.opentelemetry.contrib.jmxscraper.JmxScraperContainer; | ||
import java.time.Duration; | ||
import org.testcontainers.containers.GenericContainer; | ||
import org.testcontainers.containers.wait.strategy.Wait; | ||
import org.testcontainers.images.builder.ImageFromDockerfile; | ||
|
||
public class ActiveMqIntegrationTest extends TargetSystemIntegrationTest { | ||
|
||
@Override | ||
protected GenericContainer<?> createTargetContainer(int jmxPort) { | ||
return new GenericContainer<>( | ||
new ImageFromDockerfile() | ||
.withDockerfileFromBuilder( | ||
builder -> builder.from("apache/activemq-classic:5.18.6").build())) | ||
.withEnv( | ||
"JAVA_TOOL_OPTIONS", | ||
"-Dcom.sun.management.jmxremote.port=" | ||
+ jmxPort | ||
+ " -Dcom.sun.management.jmxremote.rmi.port=" | ||
+ jmxPort | ||
+ " -Dcom.sun.management.jmxremote.ssl=false" | ||
+ " -Dcom.sun.management.jmxremote.authenticate=false") | ||
.withStartupTimeout(Duration.ofMinutes(2)) | ||
.waitingFor(Wait.forListeningPort()); | ||
} | ||
|
||
@Override | ||
protected JmxScraperContainer customizeScraperContainer(JmxScraperContainer scraper) { | ||
return scraper.withTargetSystem("activemq"); | ||
} | ||
|
||
@Override | ||
protected void verifyMetrics() { | ||
waitAndAssertMetrics( | ||
metric -> | ||
assertSumWithAttributes( | ||
metric, | ||
"activemq.consumer.count", | ||
"The number of consumers currently reading from the broker.", | ||
"consumers", | ||
/* isMonotonic= */ false, | ||
attrs -> | ||
attrs.containsOnly( | ||
entry("destination", "ActiveMQ.Advisory.MasterBroker"), | ||
entry("broker", "localhost"))), | ||
metric -> | ||
assertSumWithAttributes( | ||
metric, | ||
"activemq.producer.count", | ||
"The number of producers currently attached to the broker.", | ||
"producers", | ||
/* isMonotonic= */ false, | ||
attrs -> | ||
attrs.containsOnly( | ||
entry("destination", "ActiveMQ.Advisory.MasterBroker"), | ||
entry("broker", "localhost"))), | ||
metric -> | ||
assertSumWithAttributes( | ||
metric, | ||
"activemq.connection.count", | ||
"The total number of current connections.", | ||
"connections", | ||
/* isMonotonic= */ false, | ||
attrs -> attrs.containsOnly(entry("broker", "localhost"))), | ||
metric -> | ||
assertGaugeWithAttributes( | ||
metric, | ||
"activemq.memory.usage", | ||
"The percentage of configured memory used.", | ||
"%", | ||
attrs -> | ||
attrs.containsOnly( | ||
entry("destination", "ActiveMQ.Advisory.MasterBroker"), | ||
entry("broker", "localhost"))), | ||
metric -> | ||
assertGaugeWithAttributes( | ||
metric, | ||
"activemq.disk.store_usage", | ||
"The percentage of configured disk used for persistent messages.", | ||
"%", | ||
attrs -> attrs.containsOnly(entry("broker", "localhost"))), | ||
metric -> | ||
assertGaugeWithAttributes( | ||
metric, | ||
"activemq.disk.temp_usage", | ||
"The percentage of configured disk used for non-persistent messages.", | ||
"%", | ||
attrs -> attrs.containsOnly(entry("broker", "localhost"))), | ||
metric -> | ||
assertSumWithAttributes( | ||
metric, | ||
"activemq.message.current", | ||
"The current number of messages waiting to be consumed.", | ||
"messages", | ||
/* isMonotonic= */ false, | ||
attrs -> | ||
attrs.containsOnly( | ||
entry("destination", "ActiveMQ.Advisory.MasterBroker"), | ||
entry("broker", "localhost"))), | ||
metric -> | ||
assertSumWithAttributes( | ||
metric, | ||
"activemq.message.expired", | ||
"The total number of messages not delivered because they expired.", | ||
"messages", | ||
attrs -> | ||
attrs.containsOnly( | ||
entry("destination", "ActiveMQ.Advisory.MasterBroker"), | ||
entry("broker", "localhost"))), | ||
metric -> | ||
assertSumWithAttributes( | ||
metric, | ||
"activemq.message.enqueued", | ||
"The total number of messages received by the broker.", | ||
"messages", | ||
attrs -> | ||
attrs.containsOnly( | ||
entry("destination", "ActiveMQ.Advisory.MasterBroker"), | ||
entry("broker", "localhost"))), | ||
metric -> | ||
assertSumWithAttributes( | ||
metric, | ||
"activemq.message.dequeued", | ||
"The total number of messages delivered to consumers.", | ||
"messages", | ||
attrs -> | ||
attrs.containsOnly( | ||
entry("destination", "ActiveMQ.Advisory.MasterBroker"), | ||
entry("broker", "localhost"))), | ||
metric -> | ||
assertGaugeWithAttributes( | ||
metric, | ||
"activemq.message.wait_time.avg", | ||
"The average time a message was held on a destination.", | ||
"ms", | ||
attrs -> | ||
attrs.containsOnly( | ||
entry("destination", "ActiveMQ.Advisory.MasterBroker"), | ||
entry("broker", "localhost")))); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
--- | ||
rules: | ||
- beans: | ||
- org.apache.activemq:type=Broker,brokerName=*,destinationType=Queue,destinationName=* | ||
- org.apache.activemq:type=Broker,brokerName=*,destinationType=Topic,destinationName=* | ||
metricAttribute: | ||
destination: param(destinationName) | ||
broker: param(brokerName) | ||
prefix: activemq. | ||
mapping: | ||
ProducerCount: | ||
metric: producer.count | ||
# Unit name inherited from activemq.groovy file. | ||
# Will be updated to {} semconv notation when we switch to use original files from JMX Insights | ||
unit: "producers" | ||
type: updowncounter | ||
desc: The number of producers currently attached to the broker. | ||
ConsumerCount: | ||
metric: consumer.count | ||
# Unit name inherited from activemq.groovy file. | ||
# Will be updated to {} semconv notation when we switch to use original files from JMX Insights | ||
unit: "consumers" | ||
type: updowncounter | ||
desc: The number of consumers currently reading from the broker. | ||
MemoryPercentUsage: | ||
metric: memory.usage | ||
unit: "%" | ||
type: gauge | ||
desc: The percentage of configured memory used. | ||
QueueSize: | ||
metric: message.current | ||
# Unit name inherited from activemq.groovy file. | ||
# Will be updated to {} semconv notation when we switch to use original files from JMX Insights | ||
unit: "messages" | ||
type: updowncounter | ||
desc: The current number of messages waiting to be consumed. | ||
ExpiredCount: | ||
metric: message.expired | ||
# Unit name inherited from activemq.groovy file. | ||
# Will be updated to {} semconv notation when we switch to use original files from JMX Insights | ||
unit: "messages" | ||
type: counter | ||
desc: The total number of messages not delivered because they expired. | ||
EnqueueCount: | ||
metric: message.enqueued | ||
# Unit name inherited from activemq.groovy file. | ||
# Will be updated to {} semconv notation when we switch to use original files from JMX Insights | ||
unit: "messages" | ||
type: counter | ||
desc: The total number of messages received by the broker. | ||
DequeueCount: | ||
metric: message.dequeued | ||
# Unit name inherited from activemq.groovy file. | ||
# Will be updated to {} semconv notation when we switch to use original files from JMX Insights | ||
unit: "messages" | ||
type: counter | ||
desc: The total number of messages delivered to consumers. | ||
AverageEnqueueTime: | ||
metric: message.wait_time.avg | ||
unit: ms | ||
type: gauge | ||
desc: The average time a message was held on a destination. | ||
|
||
- bean: org.apache.activemq:type=Broker,brokerName=* | ||
metricAttribute: | ||
# minor divergence from activemq.groovy to capture broker name, making it closer to | ||
# the definition in JMX Insights | ||
broker: param(brokerName) | ||
prefix: activemq. | ||
unit: "%" | ||
type: gauge | ||
mapping: | ||
CurrentConnectionsCount: | ||
metric: connection.count | ||
type: updowncounter | ||
# Unit name inherited from activemq.groovy file. | ||
# Will be updated to {} semconv notation when we switch to use original files from JMX Insights | ||
unit: "connections" | ||
desc: The total number of current connections. | ||
StorePercentUsage: | ||
metric: disk.store_usage | ||
desc: The percentage of configured disk used for persistent messages. | ||
TempPercentUsage: | ||
metric: disk.temp_usage | ||
desc: The percentage of configured disk used for non-persistent messages. |