-
Notifications
You must be signed in to change notification settings - Fork 6.5k
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
Add ActiveMQ classic monitoring #12109
Merged
Merged
Changes from all commits
Commits
Show all changes
17 commits
Select commit
Hold shift + click to select a range
b28d8dd
revert skywalking-ui.
CzyerChen a8ba1ce
Merge branch 'master' into activemq-monitoring
wu-sheng cf943cb
Merge branch 'master' into activemq-monitoring
wu-sheng bfe6942
update backend-activemq-monitoring.md
CzyerChen 78ffe4f
Merge remote-tracking branch 'origin/activemq-monitoring' into active…
CzyerChen 312365b
update hierarchy-definition.yml & changes.md
CzyerChen 8f7f3bc
update SWIP
CzyerChen 50eac50
Merge branch 'master' into activemq-monitoring
wu-sheng 95617bc
Merge remote-tracking branch 'upstream/master' into activemq-monitoring
CzyerChen 3223307
update backend-activemq-monitoring.md
CzyerChen c48e94e
Merge remote-tracking branch 'origin/activemq-monitoring' into active…
CzyerChen d9238c9
update backend-activemq-monitoring.md
CzyerChen b4a1b16
Revert "update backend-activemq-monitoring.md"
CzyerChen 955064b
Merge branch 'master' into activemq-monitoring
wu-sheng 67673bd
update activemq-broker.json
CzyerChen 0de06dc
Merge remote-tracking branch 'upstream/master' into activemq-monitoring
CzyerChen 64cd0f1
Merge remote-tracking branch 'origin/activemq-monitoring' into active…
CzyerChen File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
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
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
97 changes: 97 additions & 0 deletions
97
oap-server/server-starter/src/main/resources/otel-rules/activemq/activemq-broker.yaml
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,97 @@ | ||
# Licensed to the Apache Software Foundation (ASF) under one or more | ||
# contributor license agreements. See the NOTICE file distributed with | ||
# this work for additional information regarding copyright ownership. | ||
# The ASF licenses this file to You under the Apache License, Version 2.0 | ||
# (the "License"); you may not use this file except in compliance with | ||
# the License. You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
|
||
# This will parse a textual representation of a duration. The formats | ||
# accepted are based on the ISO-8601 duration format {@code PnDTnHnMn.nS} | ||
# with days considered to be exactly 24 hours. | ||
# <p> | ||
# Examples: | ||
# <pre> | ||
# "PT20.345S" -- parses as "20.345 seconds" | ||
# "PT15M" -- parses as "15 minutes" (where a minute is 60 seconds) | ||
# "PT10H" -- parses as "10 hours" (where an hour is 3600 seconds) | ||
# "P2D" -- parses as "2 days" (where a day is 24 hours or 86400 seconds) | ||
# "P2DT3H4M" -- parses as "2 days, 3 hours and 4 minutes" | ||
# "P-6H3M" -- parses as "-6 hours and +3 minutes" | ||
# "-P6H3M" -- parses as "-6 hours and -3 minutes" | ||
# "-P-6H+3M" -- parses as "+6 hours and -3 minutes" | ||
# </pre> | ||
filter: "{ tags -> tags.job_name == 'activemq-monitoring' }" # The OpenTelemetry job name | ||
expSuffix: tag({tags -> tags.cluster = 'activemq::' + tags.cluster}).instance(['cluster'], ['brokerName'], Layer.ACTIVEMQ) | ||
metricPrefix: meter_activemq_broker | ||
metricsRules: | ||
# Uptime of the broker in day. | ||
- name: uptime | ||
exp: org_apache_activemq_Broker_UptimeMillis.max(['cluster','brokerName','service_instance_id']) | ||
# If slave broker 1 else 0. | ||
- name: state | ||
exp: org_apache_activemq_Broker_Slave.sum(['cluster','brokerName','service_instance_id']) | ||
# The number of clients connected to the broker currently. | ||
- name: current_connentions | ||
exp: org_apache_activemq_Broker_CurrentConnectionsCount.sum(['cluster','brokerName','service_instance_id']) | ||
# The number of producers currently attached to the broker. | ||
- name: current_producer_count | ||
exp: org_apache_activemq_Broker_ProducerCount.sum(['cluster','brokerName','service_instance_id']) | ||
# The number of consumers consuming messages from the broker. | ||
- name: current_consumer_count | ||
exp: org_apache_activemq_Broker_ConsumerCount.sum(['cluster','brokerName','service_instance_id']) | ||
# Number of message producers active on destinations. | ||
- name: producer_count | ||
exp: org_apache_activemq_Broker_TotalProducerCount.sum(['cluster','brokerName','service_instance_id']).increase("PT1M") | ||
# Number of message consumers subscribed to destinations. | ||
- name: consumer_count | ||
exp: org_apache_activemq_Broker_TotalConsumerCount.sum(['cluster','brokerName','service_instance_id']).increase("PT1M") | ||
# The total number of messages sent to the broker. | ||
- name: enqueue_count | ||
exp: org_apache_activemq_Broker_TotalEnqueueCount.sum(['cluster','brokerName','service_instance_id']).increase("PT1M") | ||
# The total number of messages the broker has delivered to consumers. | ||
- name: dequeue_count | ||
exp: org_apache_activemq_Broker_TotalDequeueCount.sum(['cluster','brokerName','service_instance_id']).increase("PT1M") | ||
# The total number of messages sent to the broker per second. | ||
- name: enqueue_rate | ||
exp: org_apache_activemq_Broker_TotalEnqueueCount.sum(['cluster','brokerName','service_instance_id']).rate("PT1M") | ||
# The total number of messages the broker has delivered to consumers per second. | ||
- name: dequeue_rate | ||
exp: org_apache_activemq_Broker_TotalDequeueCount.sum(['cluster','brokerName','service_instance_id']).rate("PT1M") | ||
# Percentage of configured memory used by the broker. | ||
- name: memory_percent_usage | ||
exp: org_apache_activemq_Broker_MemoryPercentUsage.sum(['cluster','brokerName','service_instance_id']) | ||
# Memory used by undelivered messages in bytes. | ||
- name: memory_usage | ||
exp: org_apache_activemq_Broker_MemoryUsageByteCount.sum(['cluster','brokerName','service_instance_id']) | ||
# Memory limited used for holding undelivered messages before paging to temporary storage. | ||
- name: memory_limit | ||
exp: org_apache_activemq_Broker_MemoryLimit.sum(['cluster','brokerName','service_instance_id']) | ||
# Percentage of available disk space used for persistent message storage. | ||
- name: store_percent_usage | ||
exp: org_apache_activemq_Broker_StorePercentUsage.sum(['cluster','brokerName','service_instance_id']) | ||
# Disk limited used for persistent messages before producers are blocked. | ||
- name: store_limit | ||
exp: org_apache_activemq_Broker_StoreLimit.sum(['cluster','brokerName','service_instance_id']) | ||
# Percentage of available disk space used for non-persistent message storage. | ||
- name: temp_percent_usage | ||
exp: org_apache_activemq_Broker_TempPercentUsage.sum(['cluster','brokerName','service_instance_id']) | ||
# Disk limited used for non-persistent messages and temporary data before producers are blocked. | ||
- name: temp_limit | ||
exp: org_apache_activemq_Broker_TempLimit.sum(['cluster','brokerName','service_instance_id']) | ||
# Average message size on this broker. | ||
- name: average_message_size | ||
exp: org_apache_activemq_Broker_AverageMessageSize.avg(['cluster','brokerName','service_instance_id']) | ||
# Max message size on this broker. | ||
- name: max_message_size | ||
exp: org_apache_activemq_Broker_MaxMessageSize.max(['cluster','brokerName','service_instance_id']) | ||
# Number of messages on this broker that have been dispatched but not acknowledged. | ||
- name: queue_size | ||
exp: org_apache_activemq_Broker_QueueSize.sum(['cluster','brokerName','destinationName']) |
95 changes: 95 additions & 0 deletions
95
oap-server/server-starter/src/main/resources/otel-rules/activemq/activemq-cluster.yaml
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,95 @@ | ||
# Licensed to the Apache Software Foundation (ASF) under one or more | ||
# contributor license agreements. See the NOTICE file distributed with | ||
# this work for additional information regarding copyright ownership. | ||
# The ASF licenses this file to You under the Apache License, Version 2.0 | ||
# (the "License"); you may not use this file except in compliance with | ||
# the License. You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
|
||
# This will parse a textual representation of a duration. The formats | ||
# accepted are based on the ISO-8601 duration format {@code PnDTnHnMn.nS} | ||
# with days considered to be exactly 24 hours. | ||
# <p> | ||
# Examples: | ||
# <pre> | ||
# "PT20.345S" -- parses as "20.345 seconds" | ||
# "PT15M" -- parses as "15 minutes" (where a minute is 60 seconds) | ||
# "PT10H" -- parses as "10 hours" (where an hour is 3600 seconds) | ||
# "P2D" -- parses as "2 days" (where a day is 24 hours or 86400 seconds) | ||
# "P2DT3H4M" -- parses as "2 days, 3 hours and 4 minutes" | ||
# "P-6H3M" -- parses as "-6 hours and +3 minutes" | ||
# "-P6H3M" -- parses as "-6 hours and -3 minutes" | ||
# "-P-6H+3M" -- parses as "+6 hours and -3 minutes" | ||
# </pre> | ||
|
||
filter: "{ tags -> tags.job_name == 'activemq-monitoring' }" # The OpenTelemetry job name | ||
expSuffix: tag({tags -> tags.cluster = 'activemq::' + tags.cluster}).service(['cluster'], Layer.ACTIVEMQ) | ||
metricPrefix: meter_activemq_cluster | ||
metricsRules: | ||
# The average system load, range:[0,10000]. | ||
- name: system_load_average | ||
exp: java_lang_OperatingSystem_SystemLoadAverage.avg(['cluster','service_instance_id'])*10000 | ||
# Threads currently used by the JVM. | ||
- name: thread_count | ||
exp: java_lang_Threading_ThreadCount.sum(['cluster','service_instance_id']) | ||
# The initial amount of heap memory available. | ||
- name: heap_memory_usage_init | ||
exp: java_lang_Memory_HeapMemoryUsage_init.sum(['cluster','service_instance_id']) | ||
# The memory is guaranteed to be available for the JVM to use. | ||
- name: heap_memory_usage_committed | ||
exp: java_lang_Memory_HeapMemoryUsage_committed.sum(['cluster','service_instance_id']) | ||
# The amount of JVM heap memory currently in use. | ||
- name: heap_memory_usage_used | ||
exp: java_lang_Memory_HeapMemoryUsage_used.sum(['cluster','service_instance_id']) | ||
# The maximum possible size of the heap memory. | ||
- name: heap_memory_usage_max | ||
exp: java_lang_Memory_HeapMemoryUsage_max.sum(['cluster','service_instance_id']) | ||
# The gc count of G1 Old Generation(JDK[9,17]). | ||
- name: gc_g1_old_collection_count | ||
exp: java_lang_G1_Old_Generation_CollectionCount.tagEqual('type','GarbageCollector').sum(['cluster','service_instance_id']).increase("PT1M") | ||
# The gc count of G1 Young Generation(JDK[9,17]). | ||
- name: gc_g1_young_collection_count | ||
exp: java_lang_G1_Young_Generation_CollectionCount.tagEqual('type','GarbageCollector').sum(['cluster','service_instance_id']).increase("PT1M") | ||
# The gc time spent in G1 Old Generation in milliseconds(JDK[9,17]). | ||
- name: gc_g1_old_collection_time | ||
exp: java_lang_G1_Old_Generation_CollectionTime.tagEqual('type','GarbageCollector').sum(['cluster','service_instance_id']).increase("PT1M") | ||
# The gc time spent in G1 Young Generation in milliseconds(JDK[9,17]). | ||
- name: gc_g1_young_collection_time | ||
exp: java_lang_G1_Young_Generation_CollectionTime.tagEqual('type','GarbageCollector').sum(['cluster','service_instance_id']).increase("PT1M") | ||
# The gc count of PS MarkSweep(JDK[6,8]). | ||
- name: gc_parallel_old_collection_count | ||
exp: java_lang_GarbageCollector_CollectionCount.tagEqual('name','PS MarkSweep').sum(['cluster','service_instance_id']).increase("PT1M") | ||
# The gc count of PS Scavenge(JDK[6,8]). | ||
- name: gc_parallel_young_collection_count | ||
exp: java_lang_GarbageCollector_CollectionCount.tagEqual('name','PS Scavenge').sum(['cluster','service_instance_id']).increase("PT1M") | ||
# The gc time spent in PS MarkSweep in milliseconds(JDK[6,8]). | ||
- name: gc_parallel_old_collection_time | ||
exp: java_lang_GarbageCollector_CollectionTime.tagEqual('name','PS MarkSweep').sum(['cluster','service_instance_id']).increase("PT1M") | ||
# The gc time spent in PS Scavenge in milliseconds(JDK[6,8]). | ||
- name: gc_parallel_young_collection_time | ||
exp: java_lang_GarbageCollector_CollectionTime.tagEqual('name','PS Scavenge').sum(['cluster','service_instance_id']).increase("PT1M") | ||
# Number of messages that have been sent to the broker per second. | ||
- name: enqueue_rate | ||
exp: org_apache_activemq_Broker_TotalEnqueueCount.sum((['cluster'])).rate("PT1M") | ||
# Number of messages that have been acknowledged or discarded on the broker per second. | ||
- name: dequeue_rate | ||
exp: org_apache_activemq_Broker_TotalDequeueCount.sum(['cluster']).rate("PT1M") | ||
# Number of messages that has been delivered to consumers per second. | ||
- name: dispatch_rate | ||
exp: org_apache_activemq_Broker_DispatchCount.sum(['cluster']).rate("PT1M") | ||
# Number of messages that have been expired per second. | ||
- name: expired_rate | ||
exp: org_apache_activemq_Broker_ExpiredCount.sum(['cluster']).rate("PT1M") | ||
# The average time a message was held on this cluster. | ||
- name: average_enqueue_time | ||
exp: org_apache_activemq_Broker_AverageEnqueueTime.avg(['cluster']) | ||
# The max time a message was held on this cluster. | ||
- name: max_enqueue_time | ||
exp: org_apache_activemq_Broker_MaxEnqueueTime.max(['cluster']) |
79 changes: 79 additions & 0 deletions
79
oap-server/server-starter/src/main/resources/otel-rules/activemq/activemq-destination.yaml
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,79 @@ | ||
# Licensed to the Apache Software Foundation (ASF) under one or more | ||
# contributor license agreements. See the NOTICE file distributed with | ||
# this work for additional information regarding copyright ownership. | ||
# The ASF licenses this file to You under the Apache License, Version 2.0 | ||
# (the "License"); you may not use this file except in compliance with | ||
# the License. You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
|
||
# This will parse a textual representation of a duration. The formats | ||
# accepted are based on the ISO-8601 duration format {@code PnDTnHnMn.nS} | ||
# with days considered to be exactly 24 hours. | ||
# <p> | ||
# Examples: | ||
# <pre> | ||
# "PT20.345S" -- parses as "20.345 seconds" | ||
# "PT15M" -- parses as "15 minutes" (where a minute is 60 seconds) | ||
# "PT10H" -- parses as "10 hours" (where an hour is 3600 seconds) | ||
# "P2D" -- parses as "2 days" (where a day is 24 hours or 86400 seconds) | ||
# "P2DT3H4M" -- parses as "2 days, 3 hours and 4 minutes" | ||
# "P-6H3M" -- parses as "-6 hours and +3 minutes" | ||
# "-P6H3M" -- parses as "-6 hours and -3 minutes" | ||
# "-P-6H+3M" -- parses as "+6 hours and -3 minutes" | ||
# </pre> | ||
filter: "{ tags -> tags.job_name == 'activemq-monitoring' }" # The OpenTelemetry job name | ||
expSuffix: tag({tags -> tags.cluster = 'activemq::' + tags.cluster}).endpoint(['cluster'], ['destinationName'], Layer.ACTIVEMQ) | ||
metricPrefix: meter_activemq_destination | ||
metricsRules: | ||
# Number of producers attached to this destination. | ||
- name: producer_count | ||
exp: org_apache_activemq_Broker_ProducerCount.sum(['cluster','destinationName','destinationType']) | ||
# Number of consumers subscribed to this destination. | ||
- name: consumer_count | ||
exp: org_apache_activemq_Broker_ConsumerCount.sum(['cluster','destinationName','destinationType']) | ||
# Number of consumers subscribed to the topics. | ||
- name: topic_consumer_count | ||
exp: org_apache_activemq_Broker_ConsumerCount.tagEqual('destinationType','Topic').sum(['cluster','destinationName']) | ||
# The number of messages that have not been acknowledged by a consumer. | ||
- name: queue_size | ||
exp: org_apache_activemq_Broker_QueueSize.sum(['cluster','destinationName','destinationType']) | ||
# Percentage of configured memory used by the destination. | ||
- name: memory_usage | ||
exp: org_apache_activemq_Broker_MemoryUsageByteCount.sum(['cluster','destinationName','destinationType']) | ||
# Percentage of configured memory used by the destination. | ||
- name: memory_percent_usage | ||
exp: org_apache_activemq_Broker_MemoryPercentUsage.sum(['cluster','destinationName','destinationType']) | ||
# The number of messages sent to the destination. | ||
- name: enqueue_count | ||
exp: org_apache_activemq_Broker_EnqueueCount.sum(['cluster','destinationName','destinationType']) | ||
# The number of messages the destination has delivered to consumers. | ||
- name: dequeue_count | ||
exp: org_apache_activemq_Broker_DequeueCount.sum(['cluster','destinationName','destinationType']) | ||
# The average time a message was held on this destination. | ||
- name: average_enqueue_time | ||
exp: org_apache_activemq_Broker_AverageEnqueueTime.sum(['cluster','destinationName','destinationType']) | ||
# The max time a message was held on this destination. | ||
- name: max_enqueue_time | ||
exp: org_apache_activemq_Broker_MaxEnqueueTime.sum(['cluster','destinationName','destinationType']) | ||
# Number of messages that has been delivered to consumers. | ||
- name: dispatch_count | ||
exp: org_apache_activemq_Broker_DispatchCount.sum(['cluster','destinationName','destinationType']) | ||
# Number of messages that have been expired. | ||
- name: expired_count | ||
exp: org_apache_activemq_Broker_ExpiredCount.sum(['cluster','destinationName','destinationType']) | ||
# Number of messages that have been dispatched to but not acknowledged by consumers. | ||
- name: inflight_count | ||
exp: org_apache_activemq_Broker_InFlightCount.sum(['cluster','destinationName','destinationType']) | ||
# Average message size on this destination. | ||
- name: average_message_size | ||
exp: org_apache_activemq_Broker_AverageMessageSize.avg(['cluster','destinationName','destinationType']) | ||
# Max message size on this destination. | ||
- name: max_message_size | ||
exp: org_apache_activemq_Broker_MaxMessageSize.max(['cluster','destinationName','destinationType']) |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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.
How about the virtual MQ with this? Is that proposal possible?