Add ActiveMQ classic monitoring (#12109)

This commit is contained in:
Chen Ziyan 2024-04-18 12:32:59 +08:00 committed by GitHub
parent d71f858f2f
commit 7e978261fc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
31 changed files with 2321 additions and 3 deletions

View File

@ -650,6 +650,8 @@ jobs:
config: test/e2e-v2/cases/rocketmq/e2e.yaml
- name: ClickHouse
config: test/e2e-v2/cases/clickhouse/clickhouse-prometheus-endpoint/e2e.yaml
- name: ActiveMQ
config: test/e2e-v2/cases/activemq/e2e.yaml
- name: UI Menu BanyanDB
config: test/e2e-v2/cases/menu/banyandb/e2e.yaml

View File

@ -107,6 +107,9 @@
* Fix `Memory Swap Usage`/`Virtual Memory Usage` display with UI init.(Linux/Windows)
* Fix inaccurate APISIX metrics
* Fix inaccurate MongoDB Metrics.
* Support Apache ActiveMQ server monitoring.
* Add Service Hierarchy auto matching layer relationships (upper -> lower) as following:
- ACTIVEMQ -> K8S_SERVICE
#### UI
@ -166,5 +169,6 @@
* Remove `OpenTelemetry Exporter` support from meter doc, as this has been flagged as unmaintained on OTEL upstream.
* Add doc of one-line quick start script for different storage types.
* Add FAQ for `Why is Clickhouse or Loki or xxx not supported as a storage option?`.
* Add `SWIP-8 Support ActiveMQ Monitoring`.
All issues and pull requests are [here](https://github.com/apache/skywalking/milestone/202?closed=1)

View File

@ -0,0 +1,107 @@
# ActiveMQ classic monitoring
SkyWalking leverages jmx prometheus exporter for collecting metrics data from ActiveMQ classic. It leverages OpenTelemetry
Collector to transfer the metrics to
[OpenTelemetry receiver](opentelemetry-receiver.md) and into the [Meter System](./../../concepts-and-designs/meter.md).
## Data flow
1. ActiveMQ classic has extensive support for JMX to allow you to monitor and control the behavior of the broker via the JMX MBeans.
2. The [jmx prometheus exporter](https://github.com/prometheus/jmx_exporter) collects metrics data from ActiveMQ classic, this exporter is intended to be run as a Java Agent, exposing a HTTP server and serving metrics of the local JVM.
3. OpenTelemetry Collector fetches metrics from jmx prometheus exporter via Prometheus Receiver and pushes metrics to
SkyWalking OAP Server via OpenTelemetry gRPC exporter.
4. The SkyWalking OAP Server parses the expression with [MAL](../../concepts-and-designs/mal.md) to
filter/calculate/aggregate and store the results.
## Setup
1. [Enable JMX](https://activemq.apache.org/components/classic/documentation/jmx) in `activemq.xml`, the JMX remote port defaults to `1616`, you can change it through `ACTIVEMQ_SUNJMX_START`. The example for ActiveMQ configuration, refer
to [here](../../../../test/e2e-v2/cases/activemq/config/amq/activemq.xml).
2. Set up [jmx prometheus exporter](https://github.com/prometheus/jmx_exporter) which runs as a Java Agent(recommended) of ActiveMQ classic. If you work with docker, you also can set up [a single server](https://github.com/bitnami/containers/tree/main/bitnami/jmx-exporter) for exporter, refer
to [here](../../../../test/e2e-v2/cases/activemq/config/amq/config.yaml)(note the configuration of `includeObjectNames`).
3. Set up [OpenTelemetry Collector](https://opentelemetry.io/docs/collector/getting-started/#docker). The example for OpenTelemetry Collector configuration, refer
to [here](../../../../test/e2e-v2/cases/activemq/otel-collector-config.yaml).
4. Config SkyWalking [OpenTelemetry receiver](opentelemetry-receiver.md).
## ActiveMQ classic Monitoring
ActiveMQ classic monitoring provides multidimensional metrics monitoring of ActiveMQ Exporter as `Layer: ActiveMQ` `Service` in
the OAP. In each cluster, the broker is represented as `Instance` and the destination is represented as `Endpoint`.
### ActiveMQ Cluster Supported Metrics
| Monitoring Panel |Unit | Metric Name | Description | Data Source |
|--------------------------------------------|------------|-------------------------------------------------------------------------|---------------------------------------------------------------------------------------|-------------------------|
| System Load Average | Count | meter_activemq_cluster_system_load_average | The average system load, range:[0, 10000]. | JMX Prometheus Exporter |
| Thread Count | Count | meter_activemq_cluster_thread_count | Threads currently used by the JVM. | JMX Prometheus Exporter |
| Init Heap Memory Usage | Bytes | meter_activemq_cluster_heap_memory_usage_init | The initial amount of heap memory available. | JMX Prometheus Exporter |
| Committed Heap Memory Usage | Bytes | meter_activemq_cluster_heap_memory_usage_committed | The memory is guaranteed to be available for the JVM to use. | JMX Prometheus Exporter |
| Used Heap Memory Usage | Bytes | meter_activemq_cluster_heap_memory_usage_used | The amount of JVM heap memory currently in use. | JMX Prometheus Exporter |
| Max Heap Memory Usage | Bytes | meter_activemq_cluster_heap_memory_usage_max | The maximum possible size of the heap memory. | JMX Prometheus Exporter |
| GC G1 Old Collection Count | Count | meter_activemq_cluster_gc_g1_old_collection_count | The gc count of G1 Old Generation(JDK[9,17]). | JMX Prometheus Exporter |
| GC G1 Young Collection Count | Count | meter_activemq_cluster_gc_g1_young_collection_count | The gc count of G1 Young Generation(JDK[9,17]). | JMX Prometheus Exporter |
| GC G1 Old Collection Time | ms | meter_activemq_cluster_gc_g1_old_collection_time | The gc time spent in G1 Old Generation in milliseconds(JDK[9,17]). | JMX Prometheus Exporter |
| GC G1 Young Collection Time | ms | meter_activemq_cluster_gc_g1_young_collection_time | The gc time spent in G1 Young Generation in milliseconds(JDK[9,17]). | JMX Prometheus Exporter |
| GC Parallel Old Collection Count | Count | meter_activemq_cluster_gc_parallel_old_collection_count | The gc count of Parallel Old Generation(JDK[6,8]). | JMX Prometheus Exporter |
| GC Parallel Young Collection Count | Count | meter_activemq_cluster_gc_parallel_young_collection_count | The gc count of Parallel Young Generation(JDK[6,8]). | JMX Prometheus Exporter |
| GC Parallel Old Collection Time | ms | meter_activemq_cluster_gc_parallel_old_collection_time | The gc time spent in Parallel Old Generation in milliseconds(JDK[6,8]). | JMX Prometheus Exporter |
| GC Parallel Young Collection Time | ms | meter_activemq_cluster_gc_parallel_young_collection_time | The gc time spent in Parallel Young Generation in milliseconds(JDK[6,8]). | JMX Prometheus Exporter |
| Enqueue Rate | Count/s | meter_activemq_cluster_enqueue_rate | Number of messages that have been sent to the cluster per second(JDK[6,8]). | JMX Prometheus Exporter |
| Dequeue Rate | Count/s | meter_activemq_cluster_dequeue_rate | Number of messages that have been acknowledged or discarded on the cluster per second.| JMX Prometheus Exporter |
| Dispatch Rate | Count/s | meter_activemq_cluster_dispatch_rate | Number of messages that has been delivered to consumers per second. | JMX Prometheus Exporter |
| Expired Rate | Count/s | meter_activemq_cluster_expired_rate | Number of messages that have been expired per second. | JMX Prometheus Exporter |
| Average Enqueue Time | ms | meter_activemq_cluster_average_enqueue_time | The average time a message was held on this cluster. | JMX Prometheus Exporter |
| Max Enqueue Time | ms | meter_activemq_cluster_max_enqueue_time | The max time a message was held on this cluster. | JMX Prometheus Exporter |
### ActiveMQ Broker Supported Metrics
| Monitoring Panel |Unit | Metric Name | Description | Data Source |
|--------------------------------------------|-----------|-------------------------------------------------------------------------|----------------------------------------------------------------------------------------------- |-------------------------|
| Uptime | sec | meter_activemq_broker_uptime | Uptime of the broker in day. | JMX Prometheus Exporter |
| State | | meter_activemq_broker_state | If slave broker 1 else 0. | JMX Prometheus Exporter |
| Current Connentions | Count | meter_activemq_broker_current_connentions | The number of clients connected to the broker currently. | JMX Prometheus Exporter |
| Current Producer Count | Count | meter_activemq_broker_current_producer_count | The number of producers currently attached to the broker. | JMX Prometheus Exporter |
| Current Consumer Count | Count | meter_activemq_broker_current_consumer_count | The number of consumers consuming messages from the broker. | JMX Prometheus Exporter |
| Producer Count | Count | meter_activemq_broker_producer_count | Number of message producers active on destinations. | JMX Prometheus Exporter |
| Consumer Count | Count | meter_activemq_broker_consumer_count | Number of message consumers subscribed to destinations. | JMX Prometheus Exporter |
| Enqueue Count | Count | meter_activemq_broker_enqueue_count | The total number of messages sent to the broker. | JMX Prometheus Exporter |
| Dequeue Count | Count | meter_activemq_broker_dequeue_count | The total number of messages the broker has delivered to consumers. | JMX Prometheus Exporter |
| Enqueue Rate | Count/sec | meter_activemq_broker_enqueue_rate | The total number of messages sent to the broker per second. | JMX Prometheus Exporter |
| Dequeue Rate | Count/sec | meter_activemq_broker_dequeue_rate | The total number of messages the broker has delivered to consumers per second. | JMX Prometheus Exporter |
| Memory Percent Usage | % | meter_activemq_broker_memory_percent_usage | Percentage of configured memory used by the broker. | JMX Prometheus Exporter |
| Memory Usage | Bytes | meter_activemq_broker_memory_percent_usage | Memory used by undelivered messages in bytes. | JMX Prometheus Exporter |
| Memory Limit | Bytes | meter_activemq_broker_memory_limit | Memory limited used for holding undelivered messages before paging to temporary storage. | JMX Prometheus Exporter |
| Store Percent Usage | % | meter_activemq_broker_store_percent_usage | Percentage of available disk space used for persistent message storage. | JMX Prometheus Exporter |
| Store Limit | Bytes | meter_activemq_broker_store_limit | Disk limited used for persistent messages before producers are blocked. | JMX Prometheus Exporter |
| Temp Percent Usage | Bytes | meter_activemq_broker_temp_percent_usage | Percentage of available disk space used for non-persistent message storage. | JMX Prometheus Exporter |
| Temp Limit | Bytes | meter_activemq_broker_temp_limit | Disk limited used for non-persistent messages and temporary data before producers are blocked. | JMX Prometheus Exporter |
| Average Message Size | Bytes | meter_activemq_broker_average_message_size | Average message size on this broker. | JMX Prometheus Exporter |
| Max Message Size | Bytes | meter_activemq_broker_max_message_size | Max message size on this broker. | JMX Prometheus Exporter |
| Queue Size | Count | meter_activemq_broker_queue_size | Number of messages on this broker that have been dispatched but not acknowledged. | JMX Prometheus Exporter |
### ActiveMQ Destination Supported Metrics
| Monitoring Panel |Unit | Metric Name | Description | Data Source |
|--------------------------------------------|------------|-------------------------------------------------------------------------|-----------------------------------------------------------------------------------------|-------------------------|
| Producer Count | Count | meter_activemq_destination_producer_count | Number of producers attached to this destination. | JMX Prometheus Exporter |
| Consumer Count | Count | meter_activemq_destination_consumer_count | Number of consumers subscribed to this destination. | JMX Prometheus Exporter |
| Topic Consumer Count | Count | meter_activemq_destination_topic_consumer_count | Number of consumers subscribed to the topics. | JMX Prometheus Exporter |
| Queue Size | Count | meter_activemq_destination_queue_size | The number of messages that have not been acknowledged by a consumer. | JMX Prometheus Exporter |
| Memory Usage | Bytes | meter_activemq_destination_memory_usage | Memory used by undelivered messages in bytes. | JMX Prometheus Exporter |
| Memory Percent Usage | % | meter_activemq_destination_memory_percent_usage | Percentage of configured memory used by the destination. | JMX Prometheus Exporter |
| Enqueue Count | Count | meter_activemq_destination_enqueue_count | The number of messages sent to the destination. | JMX Prometheus Exporter |
| Dequeue Count | Count | meter_activemq_destination_dequeue_count | The number of messages the destination has delivered to consumers. | JMX Prometheus Exporter |
| Average Enqueue Time | ms | meter_activemq_destination_average_enqueue_time | The average time a message was held on this destination. | JMX Prometheus Exporter |
| Max Enqueue Time | ms | meter_activemq_destination_max_enqueue_time | The max time a message was held on this destination. | JMX Prometheus Exporter |
| Dispatch Count | Count | meter_activemq_destination_dispatch_count | Number of messages that has been delivered to consumers. | JMX Prometheus Exporter |
| Expired Count | Count | meter_activemq_destination_expired_count | Number of messages that have been expired. | JMX Prometheus Exporter |
| Inflight Count | Count | meter_activemq_destination_inflight_count | Number of messages that have been dispatched to but not acknowledged by consumers. | JMX Prometheus Exporter |
| Average Message Size | Bytes | meter_activemq_destination_average_message_size | Average message size on this destination. | JMX Prometheus Exporter |
| Max Message Size | Bytes | meter_activemq_destination_max_message_size | Max message size on this destination. | JMX Prometheus Exporter |
## Customizations
You can customize your own metrics/expression/dashboard panel.
The metrics definition and expression rules are found
in `otel-rules/activemq/activemq-cluster.yaml, otel-rules/activemq/activemq-broker.yaml, otel-rules/activemq/activemq-destination.yaml`.
The ActiveMQ dashboard panel configurations are found in `ui-initialized-templates/activemq`.

100
docs/en/swip/SWIP-8.md Normal file
View File

@ -0,0 +1,100 @@
# Support ActiveMQ classic Monitoring
## Motivation
[Apache ActiveMQ Classic](https://activemq.apache.org/components/classic/) is a popular and powerful open source messaging and Integration Patterns server. It supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features.
Now I want to add ActiveMQ Classic monitoring via the [OpenTelemetry Collector](https://opentelemetry.io/docs) which fetches metrics from [jmx prometheus exporter](https://github.com/prometheus/jmx_exporter) run as a Java Agent.
## Architecture Graph
There is no significant architecture-level change.
## Proposed Changes
`Apache ActiveMQ Classic` has extensive support for JMX to allow you to monitor and control the behavior of the broker via the JMX MBeans.
[Jmx prometheus exporter](https://github.com/prometheus/jmx_exporter) collects metrics data from ActiveMQ classic, this exporter is intended to be run as a Java Agent, exposing a HTTP server and serving metrics of the local JVM.
Using openTelemetry receiver to fetch these metrics to SkyWalking OAP server.
### ActiveMQ Cluster Supported Metrics
| Monitoring Panel |Unit | Metric Name | Description | Data Source |
|--------------------------------------------|------------|-------------------------------------------------------------------------|---------------------------------------------------------------------------------------|-------------------------|
| System Load Average | Count | meter_activemq_cluster_system_load_average | The average system load, range:[0, 10000]. | JMX Prometheus Exporter |
| Thread Count | Count | meter_activemq_cluster_thread_count | Threads currently used by the JVM. | JMX Prometheus Exporter |
| Init Heap Memory Usage | Bytes | meter_activemq_cluster_heap_memory_usage_init | The initial amount of heap memory available. | JMX Prometheus Exporter |
| Committed Heap Memory Usage | Bytes | meter_activemq_cluster_heap_memory_usage_committed | The memory is guaranteed to be available for the JVM to use. | JMX Prometheus Exporter |
| Used Heap Memory Usage | Bytes | meter_activemq_cluster_heap_memory_usage_used | The amount of JVM heap memory currently in use. | JMX Prometheus Exporter |
| Max Heap Memory Usage | Bytes | meter_activemq_cluster_heap_memory_usage_max | The maximum possible size of the heap memory. | JMX Prometheus Exporter |
| GC G1 Old Collection Count | Count | meter_activemq_cluster_gc_g1_old_collection_count | The gc count of G1 Old Generation(JDK[9,17]). | JMX Prometheus Exporter |
| GC G1 Young Collection Count | Count | meter_activemq_cluster_gc_g1_young_collection_count | The gc count of G1 Young Generation(JDK[9,17]). | JMX Prometheus Exporter |
| GC G1 Old Collection Time | ms | meter_activemq_cluster_gc_g1_old_collection_time | The gc time spent in G1 Old Generation in milliseconds(JDK[9,17]). | JMX Prometheus Exporter |
| GC G1 Young Collection Time | ms | meter_activemq_cluster_gc_g1_young_collection_time | The gc time spent in G1 Young Generation in milliseconds(JDK[9,17]). | JMX Prometheus Exporter |
| GC Parallel Old Collection Count | Count | meter_activemq_cluster_gc_parallel_old_collection_count | The gc count of Parallel Old Generation(JDK[6,8]). | JMX Prometheus Exporter |
| GC Parallel Young Collection Count | Count | meter_activemq_cluster_gc_parallel_young_collection_count | The gc count of Parallel Young Generation(JDK[6,8]). | JMX Prometheus Exporter |
| GC Parallel Old Collection Time | ms | meter_activemq_cluster_gc_parallel_old_collection_time | The gc time spent in Parallel Old Generation in milliseconds(JDK[6,8]). | JMX Prometheus Exporter |
| GC Parallel Young Collection Time | ms | meter_activemq_cluster_gc_parallel_young_collection_time | The gc time spent in Parallel Young Generation in milliseconds(JDK[6,8]). | JMX Prometheus Exporter |
| Enqueue Rate | Count/s | meter_activemq_cluster_enqueue_rate | Number of messages that have been sent to the cluster per second(JDK[6,8]). | JMX Prometheus Exporter |
| Dequeue Rate | Count/s | meter_activemq_cluster_dequeue_rate | Number of messages that have been acknowledged or discarded on the cluster per second.| JMX Prometheus Exporter |
| Dispatch Rate | Count/s | meter_activemq_cluster_dispatch_rate | Number of messages that has been delivered to consumers per second. | JMX Prometheus Exporter |
| Expired Rate | Count/s | meter_activemq_cluster_expired_rate | Number of messages that have been expired per second. | JMX Prometheus Exporter |
| Average Enqueue Time | ms | meter_activemq_cluster_average_enqueue_time | The average time a message was held on this cluster. | JMX Prometheus Exporter |
| Max Enqueue Time | ms | meter_activemq_cluster_max_enqueue_time | The max time a message was held on this cluster. | JMX Prometheus Exporter |
### ActiveMQ Broker Supported Metrics
| Monitoring Panel |Unit | Metric Name | Description | Data Source |
|--------------------------------------------|-----------|-------------------------------------------------------------------------|----------------------------------------------------------------------------------------------- |-------------------------|
| Uptime | sec | meter_activemq_broker_uptime | Uptime of the broker in day. | JMX Prometheus Exporter |
| State | | meter_activemq_broker_state | If slave broker 1 else 0. | JMX Prometheus Exporter |
| Current Connentions | Count | meter_activemq_broker_current_connentions | The number of clients connected to the broker currently. | JMX Prometheus Exporter |
| Current Producer Count | Count | meter_activemq_broker_current_producer_count | The number of producers currently attached to the broker. | JMX Prometheus Exporter |
| Current Consumer Count | Count | meter_activemq_broker_current_consumer_count | The number of consumers consuming messages from the broker. | JMX Prometheus Exporter |
| Producer Count | Count | meter_activemq_broker_producer_count | Number of message producers active on destinations. | JMX Prometheus Exporter |
| Consumer Count | Count | meter_activemq_broker_consumer_count | Number of message consumers subscribed to destinations. | JMX Prometheus Exporter |
| Enqueue Count | Count | meter_activemq_broker_enqueue_count | The total number of messages sent to the broker. | JMX Prometheus Exporter |
| Dequeue Count | Count | meter_activemq_broker_dequeue_count | The total number of messages the broker has delivered to consumers. | JMX Prometheus Exporter |
| Enqueue Rate | Count/sec | meter_activemq_broker_enqueue_rate | The total number of messages sent to the broker per second. | JMX Prometheus Exporter |
| Dequeue Rate | Count/sec | meter_activemq_broker_dequeue_rate | The total number of messages the broker has delivered to consumers per second. | JMX Prometheus Exporter |
| Memory Percent Usage | % | meter_activemq_broker_memory_percent_usage | Percentage of configured memory used by the broker. | JMX Prometheus Exporter |
| Memory Usage | Bytes | meter_activemq_broker_memory_percent_usage | Memory used by undelivered messages in bytes. | JMX Prometheus Exporter |
| Memory Limit | Bytes | meter_activemq_broker_memory_limit | Memory limited used for holding undelivered messages before paging to temporary storage. | JMX Prometheus Exporter |
| Store Percent Usage | % | meter_activemq_broker_store_percent_usage | Percentage of available disk space used for persistent message storage. | JMX Prometheus Exporter |
| Store Limit | Bytes | meter_activemq_broker_store_limit | Disk limited used for persistent messages before producers are blocked. | JMX Prometheus Exporter |
| Temp Percent Usage | Bytes | meter_activemq_broker_temp_percent_usage | Percentage of available disk space used for non-persistent message storage. | JMX Prometheus Exporter |
| Temp Limit | Bytes | meter_activemq_broker_temp_limit | Disk limited used for non-persistent messages and temporary data before producers are blocked. | JMX Prometheus Exporter |
| Average Message Size | Bytes | meter_activemq_broker_average_message_size | Average message size on this broker. | JMX Prometheus Exporter |
| Max Message Size | Bytes | meter_activemq_broker_max_message_size | Max message size on this broker. | JMX Prometheus Exporter |
| Queue Size | Count | meter_activemq_broker_queue_size | Number of messages on this broker that have been dispatched but not acknowledged. | JMX Prometheus Exporter |
### ActiveMQ Destination Supported Metrics
| Monitoring Panel |Unit | Metric Name | Description | Data Source |
|--------------------------------------------|------------|-------------------------------------------------------------------------|-----------------------------------------------------------------------------------------|-------------------------|
| Producer Count | Count | meter_activemq_destination_producer_count | Number of producers attached to this destination. | JMX Prometheus Exporter |
| Consumer Count | Count | meter_activemq_destination_consumer_count | Number of consumers subscribed to this destination. | JMX Prometheus Exporter |
| Topic Consumer Count | Count | meter_activemq_destination_topic_consumer_count | Number of consumers subscribed to the topics. | JMX Prometheus Exporter |
| Queue Size | Count | meter_activemq_destination_queue_size | The number of messages that have not been acknowledged by a consumer. | JMX Prometheus Exporter |
| Memory Usage | Bytes | meter_activemq_destination_memory_usage | Memory used by undelivered messages in bytes. | JMX Prometheus Exporter |
| Memory Percent Usage | % | meter_activemq_destination_memory_percent_usage | Percentage of configured memory used by the destination. | JMX Prometheus Exporter |
| Enqueue Count | Count | meter_activemq_destination_enqueue_count | The number of messages sent to the destination. | JMX Prometheus Exporter |
| Dequeue Count | Count | meter_activemq_destination_dequeue_count | The number of messages the destination has delivered to consumers. | JMX Prometheus Exporter |
| Average Enqueue Time | ms | meter_activemq_destination_average_enqueue_time | The average time a message was held on this destination. | JMX Prometheus Exporter |
| Max Enqueue Time | ms | meter_activemq_destination_max_enqueue_time | The max time a message was held on this destination. | JMX Prometheus Exporter |
| Dispatch Count | Count | meter_activemq_destination_dispatch_count | Number of messages that has been delivered to consumers. | JMX Prometheus Exporter |
| Expired Count | Count | meter_activemq_destination_expired_count | Number of messages that have been expired. | JMX Prometheus Exporter |
| Inflight Count | Count | meter_activemq_destination_inflight_count | Number of messages that have been dispatched to but not acknowledged by consumers. | JMX Prometheus Exporter |
| Average Message Size | Bytes | meter_activemq_destination_average_message_size | Average message size on this destination. | JMX Prometheus Exporter |
| Max Message Size | Bytes | meter_activemq_destination_max_message_size | Max message size on this destination. | JMX Prometheus Exporter |
## Imported Dependencies libs and their licenses.
No new dependency.
## Compatibility
no breaking changes.
## General usage docs

View File

@ -68,10 +68,11 @@ All accepted and proposed SWIPs can be found in [here](https://github.com/apache
## Known SWIPs
Next SWIP Number: 6
Next SWIP Number: 8
### Accepted SWIPs
- [SWIP-8 Support ActiveMQ Monitoring](SWIP-8.md)
- [SWIP-5 Support ClickHouse Monitoring](SWIP-5.md)
- [SWIP-4 Support available layers of service in the topology](SWIP-4.md)
- [SWIP-3 Support RocketMQ Monitoring](SWIP-3.md)

View File

@ -264,6 +264,8 @@ catalog:
path: "/en/setup/backend/backend-pulsar-monitoring"
- name: "RocketMQ"
path: "/en/setup/backend/backend-rocketmq-monitoring"
- name: "ActiveMQ"
path: "/en/setup/backend/backend-activemq-monitoring"
- name: "Self Observability"
catalog:
- name: "OAP self telemetry"

View File

@ -223,7 +223,12 @@ public enum Layer {
/**
* A high-performance, column-oriented SQL database management system (DBMS) for online analytical processing (OLAP).
*/
CLICKHOUSE(36, true);
CLICKHOUSE(36, true),
/**
* ActiveMQ is a popular open source, multi-protocol, Java-based message broker.
*/
ACTIVEMQ(37, true);
private final int value;
/**

View File

@ -74,6 +74,7 @@ public class UITemplateInitializer {
Layer.NGINX.name(),
Layer.ROCKETMQ.name(),
Layer.CLICKHOUSE.name(),
Layer.ACTIVEMQ.name(),
"custom"
};
private final UITemplateManagementService uiTemplateManagementService;

View File

@ -357,7 +357,7 @@ receiver-otel:
selector: ${SW_OTEL_RECEIVER:default}
default:
enabledHandlers: ${SW_OTEL_RECEIVER_ENABLED_HANDLERS:"otlp-metrics,otlp-logs"}
enabledOtelMetricsRules: ${SW_OTEL_RECEIVER_ENABLED_OTEL_METRICS_RULES:"apisix,nginx/*,k8s/*,istio-controlplane,vm,mysql/*,postgresql/*,oap,aws-eks/*,windows,aws-s3/*,aws-dynamodb/*,aws-gateway/*,redis/*,elasticsearch/*,rabbitmq/*,mongodb/*,kafka/*,pulsar/*,bookkeeper/*,rocketmq/*,clickhouse/*"}
enabledOtelMetricsRules: ${SW_OTEL_RECEIVER_ENABLED_OTEL_METRICS_RULES:"apisix,nginx/*,k8s/*,istio-controlplane,vm,mysql/*,postgresql/*,oap,aws-eks/*,windows,aws-s3/*,aws-dynamodb/*,aws-gateway/*,redis/*,elasticsearch/*,rabbitmq/*,mongodb/*,kafka/*,pulsar/*,bookkeeper/*,rocketmq/*,clickhouse/*,activemq/*"}
receiver-zipkin:
selector: ${SW_RECEIVER_ZIPKIN:-}

View File

@ -60,6 +60,9 @@ hierarchy:
PULSAR:
K8S_SERVICE: short-name
ACTIVEMQ:
K8S_SERVICE: short-name
VIRTUAL_DATABASE:
MYSQL: lower-short-name-with-fqdn
POSTGRESQL: lower-short-name-with-fqdn
@ -103,6 +106,7 @@ layer-levels:
RABBITMQ: 2
KAFKA: 2
PULSAR: 2
ACTIVEMQ: 2
MESH_DP: 1

View File

@ -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'])

View File

@ -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'])

View File

@ -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'])

View File

@ -0,0 +1,355 @@
[
{
"id": "ActiveMQ-Broker",
"configuration": {
"children": [
{
"x": 6,
"y": 0,
"w": 6,
"h": 9,
"i": "0",
"type": "Widget",
"expressions": [
"latest(meter_activemq_broker_state)"
],
"graph": {
"type": "Table",
"showTableValues": true,
"tableHeaderCol1": "",
"tableHeaderCol2": ""
},
"widget": {
"name": "SlaveBroker",
"title": "Slave Broker",
"tips": "If slave broker then 1 else 0"
}
},
{
"x": 0,
"y": 0,
"w": 6,
"h": 9,
"i": "1",
"type": "Widget",
"expressions": [
"latest(meter_activemq_broker_uptime)/1000/60/60"
],
"graph": {
"type": "Table",
"showTableValues": true,
"tableHeaderCol2": ""
},
"metricConfig": [
{
"unit": "day",
"label": "Uptime"
}
],
"widget": {
"name": "BrokerUptime",
"title": "Uptime",
"tips": "Uptime of the broker in day."
}
},
{
"x": 12,
"y": 0,
"w": 12,
"h": 9,
"i": "2",
"type": "Widget",
"expressions": [
"meter_activemq_broker_current_connentions"
],
"graph": {
"type": "Area",
"opacity": 0.4,
"showXAxis": true,
"showYAxis": true
},
"metricConfig": [
{
"label": "Connections"
}
],
"widget": {
"name": "Connections",
"title": "Connections",
"tips": "The number of clients connected to the broker currently."
}
},
{
"x": 12,
"y": 9,
"w": 6,
"h": 9,
"i": "3",
"type": "Widget",
"expressions": [
"aggregate_labels(meter_activemq_broker_producer_count,sum)"
],
"graph": {
"type": "Bar",
"showBackground": true
},
"widget": {
"name": "ProducerCount",
"title": "Increased Producer Count",
"tips": "The number of producers currently attached to the broker."
},
"metricConfig": [
{
"label": "Producer"
}
]
},
{
"x": 18,
"y": 9,
"w": 6,
"h": 9,
"i": "4",
"type": "Widget",
"expressions": [
"aggregate_labels(meter_activemq_broker_consumer_count,sum)"
],
"graph": {
"type": "Bar",
"showBackground": true
},
"widget": {
"name": "ConsumerCount",
"title": "Increased Consumer Count",
"tips": "The number of consumers consuming messages from the broker."
},
"metricConfig": [
{
"label": "Consumer"
}
]
},
{
"x": 0,
"y": 18,
"w": 12,
"h": 10,
"i": "5",
"type": "Widget",
"expressions": [
"aggregate_labels(meter_activemq_broker_enqueue_count,sum)",
"aggregate_labels(meter_activemq_broker_dequeue_count,sum)"
],
"graph": {
"type": "Area",
"opacity": 0.4,
"showXAxis": true,
"showYAxis": true
},
"metricConfig": [
{
"label": "Enqueue"
},
{
"label": "Dequeue"
}
],
"widget": {
"name": "EnqueueDequeueCount",
"title": "Enqueue/Dequeue Count",
"tips": "The total number of messages sent to the broker & The total number of messages the broker has delivered to consumers."
}
},
{
"x": 0,
"y": 28,
"w": 8,
"h": 11,
"i": "6",
"type": "Widget",
"expressions": [
"aggregate_labels(meter_activemq_broker_memory_usage,sum)/1024/1024"
],
"graph": {
"type": "Area",
"opacity": 0.4,
"showXAxis": true,
"showYAxis": true
},
"metricConfig": [
{
"label": "Memory Usage",
"unit": "MB"
}
],
"widget": {
"name": "MemoryUsage",
"title": "Memory Usage(MB)",
"tips": "Memory used by undelivered messages in the broker."
}
},
{
"x": 8,
"y": 28,
"w": 8,
"h": 11,
"i": "7",
"type": "Widget",
"expressions": [
"aggregate_labels(meter_activemq_broker_memory_limit,sum)/1024/1024/1024",
"aggregate_labels(meter_activemq_broker_store_limit,sum)/1024/1024/1024",
"aggregate_labels(meter_activemq_broker_temp_limit,sum)/1024/1024/1024"
],
"metricConfig": [
{
"unit": "GB",
"label": "Memory Usage Limit"
},
{
"label": "Store Usage Limit",
"unit": "GB"
},
{
"unit": "GB",
"label": "Temp Usage Limit"
}
],
"graph": {
"type": "Area",
"opacity": 0.4,
"showXAxis": true,
"showYAxis": true
},
"widget": {
"name": "UsageLimit",
"title": "Usage Limit(GB)",
"tips": "Disk limit for messages."
}
},
{
"x": 16,
"y": 28,
"w": 8,
"h": 11,
"i": "8",
"type": "Widget",
"expressions": [
"aggregate_labels(meter_activemq_broker_average_message_size,avg)",
"aggregate_labels(meter_activemq_broker_max_message_size,max)"
],
"metricConfig": [
{
"unit": "bytes",
"label": "Average Message Size"
},
{
"label": "Max Message Size",
"unit": "bytes"
}
],
"graph": {
"type": "Area",
"opacity": 0.4,
"showXAxis": true,
"showYAxis": true
},
"widget": {
"name": "MessageSize",
"title": "Message Size",
"tips": "Average/Max message size on this broker."
}
},
{
"x": 0,
"y": 9,
"w": 6,
"h": 9,
"i": "9",
"type": "Widget",
"expressions": [
"latest(aggregate_labels(meter_activemq_broker_current_producer_count,sum))"
],
"graph": {
"type": "Card",
"fontSize": 24,
"textAlign": "center",
"showUnit": true
},
"widget": {
"name": "CurrentProducerCount",
"title": "Current Producer Count",
"tips": "The number of producers currently attached to the broker."
},
"metricConfig": [
{
"label": "Current Producers"
}
]
},
{
"x": 6,
"y": 9,
"w": 6,
"h": 9,
"i": "10",
"type": "Widget",
"expressions": [
"latest(aggregate_labels(meter_activemq_broker_current_consumer_count,sum))"
],
"graph": {
"type": "Card",
"fontSize": 24,
"textAlign": "center",
"showUnit": true
},
"widget": {
"name": "CurrentConsumerCount",
"title": "Current Consumer Count",
"tips": "The number of consumers consuming messages from the broker."
},
"metricConfig": [
{
"label": "Current Consumers"
}
]
},
{
"x": 12,
"y": 18,
"w": 12,
"h": 10,
"i": "11",
"type": "Widget",
"expressions": [
"aggregate_labels(meter_activemq_broker_enqueue_rate,avg)",
"aggregate_labels(meter_activemq_broker_dequeue_rate,avg)"
],
"graph": {
"type": "Area",
"opacity": 0.4,
"showXAxis": true,
"showYAxis": true
},
"widget": {
"name": "EnqueueDequeueRate",
"title": "Enqueue/Dequeue Rate",
"tips": "Enqueue/Dequeue Rate per second."
},
"metricConfig": [
{
"label": "Enqueue"
},
{
"label": "Dequeue"
}
]
}
],
"layer": "ACTIVEMQ",
"entity": "ServiceInstance",
"name": "ActiveMQ-Broker",
"id": "ActiveMQ-Broker",
"isRoot": false
}
}
]

View File

@ -0,0 +1,509 @@
[
{
"id": "ActiveMQ-Cluster",
"configuration": {
"children": [
{
"x": 0,
"y": 0,
"w": 24,
"h": 42,
"i": "0",
"type": "Tab",
"children": [
{
"name": "Overview",
"children": [
{
"x": 0,
"y": 0,
"w": 12,
"h": 11,
"i": "0",
"type": "Widget",
"expressions": [
"meter_activemq_cluster_system_load_average/10000"
],
"graph": {
"type": "Bar",
"showBackground": true
},
"metricConfig": [
{
"label": "System Load Average"
}
],
"widget": {
"name": "SystemLoadAverage",
"title": "System Load Average",
"tips": "The average system load, range:[0, 100]."
}
},
{
"x": 12,
"y": 0,
"w": 12,
"h": 11,
"i": "1",
"type": "Widget",
"expressions": [
"meter_activemq_cluster_thread_count"
],
"graph": {
"type": "Area",
"opacity": 0.4,
"showXAxis": true,
"showYAxis": true
},
"widget": {
"name": "ThreadCount",
"title": "Thread Count",
"tips": "Threads currently used by the JVM."
},
"metricConfig": [
{
"label": "Thread Count"
}
]
},
{
"x": 0,
"y": 11,
"w": 4,
"h": 9,
"i": "2",
"type": "Widget",
"expressions": [
"latest(aggregate_labels(meter_activemq_cluster_heap_memory_usage_init,sum))/1024/1024"
],
"graph": {
"type": "Card",
"fontSize": 24,
"textAlign": "center",
"showUnit": true
},
"metricConfig": [
{
"unit": "MB",
"label": "Heap Memory(INIT)"
}
],
"widget": {
"name": "HeapMemoryInit",
"title": "Heap Memory(INIT)",
"tips": "The initial amount of heap memory available."
}
},
{
"x": 8,
"y": 11,
"w": 4,
"h": 9,
"i": "3",
"type": "Widget",
"expressions": [
"latest(aggregate_labels(meter_activemq_cluster_heap_memory_usage_max,sum))/1024/1024"
],
"graph": {
"type": "Card",
"fontSize": 24,
"textAlign": "center",
"showUnit": true
},
"metricConfig": [
{
"unit": "MB",
"label": "Heap Memory(MAX)"
}
],
"widget": {
"name": "HeapMemoryMax",
"title": "Heap Memory(MAX)",
"tips": "The maximum possible size of the heap memory."
}
},
{
"x": 4,
"y": 11,
"w": 4,
"h": 9,
"i": "4",
"type": "Widget",
"expressions": [
"latest(aggregate_labels(meter_activemq_cluster_heap_memory_usage_committed,sum))/1024/1024"
],
"graph": {
"type": "Card",
"fontSize": 24,
"textAlign": "center",
"showUnit": true
},
"metricConfig": [
{
"unit": "MB",
"label": "Heap Memory(COMMITTED)"
}
],
"widget": {
"name": "HeapMemoryCommitted",
"title": "Heap Memory(COMMITTED)",
"tips": "The memory is guaranteed to be available for the JVM to use."
}
},
{
"x": 12,
"y": 11,
"w": 12,
"h": 9,
"i": "5",
"type": "Widget",
"expressions": [
"meter_activemq_cluster_heap_memory_usage_used/1024/1024"
],
"graph": {
"type": "Area",
"opacity": 0.4,
"showXAxis": true,
"showYAxis": true
},
"metricConfig": [
{
"unit": "MB",
"label": "Heap Memory(USED)"
}
],
"widget": {
"name": "HeapMemoryUsed",
"title": "Heap Memory(USED)",
"tips": "The amount of JVM heap memory currently in use."
}
},
{
"x": 0,
"y": 31,
"w": 6,
"h": 11,
"i": "8",
"type": "Widget",
"expressions": [
"meter_activemq_cluster_enqueue_rate"
],
"graph": {
"type": "Area",
"opacity": 0.4,
"showXAxis": true,
"showYAxis": true
},
"widget": {
"name": "EnqueueRate",
"title": "Enqueue Count/s",
"tips": "Number of messages that have been sent to the cluster per second."
},
"metricConfig": [
{
"label": "Enqueue Rate"
}
]
},
{
"x": 6,
"y": 31,
"w": 6,
"h": 11,
"i": "9",
"type": "Widget",
"expressions": [
"meter_activemq_cluster_dequeue_rate"
],
"graph": {
"type": "Area",
"opacity": 0.4,
"showXAxis": true,
"showYAxis": true
},
"widget": {
"name": "DequeueRate",
"title": "Dequeue Count/s",
"tips": "Number of messages that have been acknowledged or discarded on the cluster per second."
},
"metricConfig": [
{
"label": "Dequeue Rate"
}
]
},
{
"x": 12,
"y": 31,
"w": 6,
"h": 11,
"i": "10",
"type": "Widget",
"expressions": [
"meter_activemq_cluster_dispatch_rate"
],
"graph": {
"type": "Area",
"opacity": 0.4,
"showXAxis": true,
"showYAxis": true
},
"widget": {
"name": "DispatchRate",
"title": "Dispatch Count/s",
"tips": "Number of messages that has been delivered to consumers per second."
},
"metricConfig": [
{
"label": "Dispatch Rate"
}
]
},
{
"x": 18,
"y": 31,
"w": 6,
"h": 11,
"i": "11",
"type": "Widget",
"expressions": [
"meter_activemq_cluster_expired_rate"
],
"graph": {
"type": "Area",
"opacity": 0.4,
"showXAxis": true,
"showYAxis": true
},
"widget": {
"name": "ExpiredRate",
"title": "Expired Count/s",
"tips": "Number of messages that have been expired per second."
},
"metricConfig": [
{
"label": "Expired Rate"
}
]
},
{
"x": 0,
"y": 42,
"w": 12,
"h": 12,
"i": "12",
"type": "Widget",
"expressions": [
"meter_activemq_cluster_average_enqueue_time/1000"
],
"graph": {
"type": "Area",
"opacity": 0.4,
"showXAxis": true,
"showYAxis": true
},
"widget": {
"name": "AverageEnqueueTime",
"title": "Average Enqueue Time(s)",
"tips": "The average time a message was held on this cluster."
},
"metricConfig": [
{
"label": "Max Enqueue Time",
"unit": "s"
}
]
},
{
"x": 6,
"y": 20,
"w": 6,
"h": 11,
"i": "13",
"type": "Widget",
"expressions": [
"view_as_seq(meter_activemq_cluster_gc_g1_old_collection_count,meter_activemq_cluster_gc_parallel_old_collection_count)"
],
"graph": {
"type": "Bar",
"showBackground": true
},
"widget": {
"name": "GCOldCollectionCount",
"title": "GC Old Collection Count",
"tips": "The GC count of Old Generation."
}
},
{
"x": 0,
"y": 20,
"w": 6,
"h": 11,
"i": "14",
"type": "Widget",
"expressions": [
"view_as_seq(meter_activemq_cluster_gc_g1_young_collection_count,meter_activemq_cluster_gc_parallel_young_collection_count)"
],
"graph": {
"type": "Bar",
"showBackground": true
},
"widget": {
"name": "GCYoungCollectionCount",
"title": "GC Young Collection Count",
"tips": "The GC count of Young Generation."
}
},
{
"x": 18,
"y": 20,
"w": 6,
"h": 11,
"i": "15",
"type": "Widget",
"expressions": [
"view_as_seq(meter_activemq_cluster_gc_g1_old_collection_time,meter_activemq_cluster_gc_parallel_old_collection_time)"
],
"graph": {
"type": "Area",
"opacity": 0.4,
"showXAxis": true,
"showYAxis": true
},
"widget": {
"name": "GCOldCollectionTime",
"title": "GC Old Collection Time(ms)",
"tips": "The GC time spent in Old Generation in milliseconds."
}
},
{
"x": 12,
"y": 20,
"w": 6,
"h": 11,
"i": "16",
"type": "Widget",
"expressions": [
"view_as_seq(meter_activemq_cluster_gc_g1_young_collection_time,meter_activemq_cluster_gc_parallel_young_collection_time)"
],
"graph": {
"type": "Area",
"opacity": 0.4,
"showXAxis": true,
"showYAxis": true
},
"widget": {
"name": "GCYoungCollectionTime",
"title": "GC Young Collection Time(ms)",
"tips": "The GC time spent in Young Generation in milliseconds."
}
},
{
"x": 12,
"y": 42,
"w": 12,
"h": 12,
"i": "17",
"type": "Widget",
"graph": {
"type": "Area",
"opacity": 0.4,
"showXAxis": true,
"showYAxis": true
},
"expressions": [
"meter_activemq_cluster_max_enqueue_time/1000"
],
"metricConfig": [
{
"label": "Max Enqueue Time",
"unit": "s"
}
],
"widget": {
"name": "MaxEnqueueTime",
"title": "Max Enqueue Time(s)",
"tips": "The max time a message was held on this cluster."
}
}
]
},
{
"name": "Broker",
"children": [
{
"x": 0,
"y": 0,
"w": 24,
"h": 30,
"i": "0",
"type": "Widget",
"graph": {
"type": "InstanceList",
"dashboardName": "ActiveMQ-Broker",
"fontSize": 12
}
}
]
},
{
"name": "Destination",
"children": [
{
"x": 0,
"y": 0,
"w": 15,
"h": 32,
"i": "0",
"type": "Widget",
"graph": {
"type": "EndpointList",
"dashboardName": "ActiveMQ-Destination",
"fontSize": 12
},
"metricConfig": [
{
"label": "Enqueue"
},
{
"label": "Dequeue"
}
],
"widget": {
"name": "DestinationList",
"title": "Destination List"
},
"expressions": []
},
{
"x": 15,
"y": 0,
"w": 9,
"h": 32,
"i": "1",
"type": "Widget",
"expressions": [
"top_n(meter_activemq_destination_topic_consumer_count,10,des)"
],
"graph": {
"type": "TopList",
"color": "purple"
},
"widget": {
"title": "Top10 Topic Consumer",
"tips": "Top10 Topic Consumer"
}
}
]
}
]
}
],
"layer": "ACTIVEMQ",
"entity": "Service",
"name": "ActiveMQ-Cluster",
"id": "ActiveMQ-Cluster",
"isRoot": false
}
}
]

View File

@ -0,0 +1,226 @@
[
{
"id": "ActiveMQ-Destination",
"configuration": {
"children": [
{
"x": 0,
"y": 0,
"w": 6,
"h": 11,
"i": "0",
"type": "Widget",
"expressions": [
"meter_activemq_destination_producer_count"
],
"graph": {
"type": "Line",
"step": false,
"smooth": false,
"showSymbol": true,
"showXAxis": true,
"showYAxis": true
},
"widget": {
"name": "ProducerCount",
"title": "Producer Count",
"tips": "Number of producers attached to this destination."
},
"metricConfig": [
{
"label": "Producer"
}
]
},
{
"x": 6,
"y": 0,
"w": 6,
"h": 11,
"i": "1",
"type": "Widget",
"expressions": [
"meter_activemq_destination_consumer_count"
],
"graph": {
"type": "Line",
"step": false,
"smooth": false,
"showSymbol": true,
"showXAxis": true,
"showYAxis": true
},
"widget": {
"name": "ConsumerCount",
"title": "Consumer Count",
"tips": "Number of consumers subscribed to this destination."
},
"metricConfig": [
{
"label": "Consumer"
}
]
},
{
"x": 0,
"y": 11,
"w": 12,
"h": 11,
"i": "3",
"type": "Widget",
"expressions": [
"meter_activemq_destination_queue_size"
],
"graph": {
"type": "Area",
"opacity": 0.4,
"showXAxis": true,
"showYAxis": true
},
"metricConfig": [
{
"label": "Queue Size"
}
],
"widget": {
"name": "QueueSize",
"title": "Queue Size",
"tips": "The number of messages that have not been acknowledged by a consumer."
}
},
{
"x": 12,
"y": 0,
"w": 12,
"h": 11,
"i": "4",
"type": "Widget",
"expressions": [
"meter_activemq_destination_memory_usage/1024/1024"
],
"graph": {
"type": "Area",
"opacity": 0.4,
"showXAxis": true,
"showYAxis": true
},
"metricConfig": [
{
"label": "Memory Usage",
"unit": "MB"
}
],
"widget": {
"name": "MemoyUsage",
"title": "Memoy Usage",
"tips": "Memory used by undelivered messages in bytes."
}
},
{
"x": 12,
"y": 11,
"w": 12,
"h": 11,
"i": "5",
"type": "Widget",
"expressions": [
"meter_activemq_destination_enqueue_count",
"meter_activemq_destination_dequeue_count",
"meter_activemq_destination_dispatch_count",
"meter_activemq_destination_expired_count",
"meter_activemq_destination_inflight_count"
],
"graph": {
"type": "Area",
"opacity": 0.4,
"showXAxis": true,
"showYAxis": true
},
"widget": {
"name": "MessageCount",
"title": "Message Count",
"tips": "The count of enqueue/dequeue/dispatch/expired/inflignt messages."
},
"metricConfig": [
{
"label": "Enqueue"
},
{
"label": "Dequeue"
},
{
"label": "Dispatch"
},
{
"label": "Expired"
},
{
"label": "Inflight"
}
]
},
{
"x": 0,
"y": 22,
"w": 12,
"h": 11,
"i": "7",
"type": "Widget",
"expressions": [
"meter_activemq_destination_average_enqueue_time/1000"
],
"graph": {
"type": "Area",
"opacity": 0.4,
"showXAxis": true,
"showYAxis": true
},
"metricConfig": [
{
"label": "Max Enqueue Time",
"unit": "s"
}
],
"widget": {
"name": "AverageEnqueueTime",
"title": "Average Enqueue Time(s)",
"tips": "The average time a message was held on this destination."
}
},
{
"x": 12,
"y": 22,
"w": 12,
"h": 11,
"i": "8",
"type": "Widget",
"expressions": [
"meter_activemq_destination_max_enqueue_time/1000"
],
"graph": {
"type": "Area",
"opacity": 0.4,
"showXAxis": true,
"showYAxis": true
},
"metricConfig": [
{
"unit": "s",
"label": "Max Enqueue Time"
}
],
"widget": {
"name": "MaxEnqueueTime",
"title": "Max Enqueue Time(s)",
"tips": "The max time a message was held on this destination."
}
}
],
"layer": "ACTIVEMQ",
"entity": "Endpoint",
"name": "ActiveMQ-Destination",
"id": "ActiveMQ-Destination",
"isRoot": false
}
}
]

View File

@ -0,0 +1,46 @@
[
{
"id": "ActiveMQ-Root",
"configuration": {
"children": [
{
"x": 0,
"y": 3,
"w": 24,
"h": 29,
"i": "0",
"type": "Widget",
"graph": {
"type": "ServiceList",
"dashboardName": "ActiveMQ-Cluster",
"fontSize": 12,
"showXAxis": false,
"showYAxis": false,
"showGroup": true
}
},
{
"x": 0,
"y": 0,
"w": 24,
"h": 3,
"i": "1",
"type": "Text",
"graph": {
"fontColor": "theme",
"backgroundColor": "theme",
"content": "Provide ActiveMQ monitoring through OpenTelemetry's Prometheus Receiver",
"fontSize": 14,
"textAlign": "left",
"url": "https://skywalking.apache.org/docs/main/next/en/setup/backend/backend-activemq-monitoring/"
}
}
],
"layer": "ACTIVEMQ",
"entity": "All",
"name": "ActiveMQ-Root",
"id": "ActiveMQ-Root",
"isRoot": true
}
}
]

View File

@ -218,6 +218,11 @@ menus:
description: Provide RocketMQ monitoring through OpenTelemetry's Prometheus Receiver.
documentLink: https://skywalking.apache.org/docs/main/next/en/setup/backend/backend-rocketmq-monitoring/
i18nKey: mq_rocketmq
- title: ActiveMQ
layer: ACTIVEMQ
description: Provide ActiveMQ monitoring through OpenTelemetry's Prometheus Receiver.
documentLink: https://skywalking.apache.org/docs/main/next/en/setup/backend/backend-activemq-monitoring/
i18nKey: mq_activemq
- title: Self Observability
icon: self_observability
description: Self Observability provides the observabilities for running components and servers from the SkyWalking ecosystem.

View File

@ -0,0 +1,133 @@
# 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 file is used to show how to write configuration files and can be used to test.
cases:
# service cases
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql service ls
expected: expected/service.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_cluster_system_load_average --service-name=activemq::activemq-cluster
expected: expected/metrics-has-value-label-serviceinstanceid.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_cluster_thread_count --service-name=activemq::activemq-cluster
expected: expected/metrics-has-value-label-serviceinstanceid.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_cluster_heap_memory_usage_init --service-name=activemq::activemq-cluster
expected: expected/metrics-has-value-label-serviceinstanceid.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_cluster_heap_memory_usage_committed --service-name=activemq::activemq-cluster
expected: expected/metrics-has-value-label-serviceinstanceid.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_cluster_heap_memory_usage_used --service-name=activemq::activemq-cluster
expected: expected/metrics-has-value-label-serviceinstanceid.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_cluster_heap_memory_usage_max --service-name=activemq::activemq-cluster
expected: expected/metrics-has-value-label-serviceinstanceid.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_cluster_gc_g1_old_collection_count --service-name=activemq::activemq-cluster
expected: expected/metrics-has-value-label-serviceinstanceid.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_cluster_gc_g1_young_collection_count --service-name=activemq::activemq-cluster
expected: expected/metrics-has-value-label-serviceinstanceid.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_cluster_gc_g1_old_collection_time --service-name=activemq::activemq-cluster
expected: expected/metrics-has-value-label-serviceinstanceid.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_cluster_gc_g1_young_collection_time --service-name=activemq::activemq-cluster
expected: expected/metrics-has-value-label-serviceinstanceid.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_cluster_enqueue_rate --service-name=activemq::activemq-cluster
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_cluster_dequeue_rate --service-name=activemq::activemq-cluster
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_cluster_dispatch_rate --service-name=activemq::activemq-cluster
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_cluster_expired_rate --service-name=activemq::activemq-cluster
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_cluster_average_enqueue_time --service-name=activemq::activemq-cluster
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_cluster_max_enqueue_time --service-name=activemq::activemq-cluster
expected: expected/metrics-has-value.yml
# instance cases
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql instance ls --service-name=activemq::activemq-cluster
expected: expected/instance.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_broker_uptime --service-name=activemq::activemq-cluster --instance-name=activemq-broker
expected: expected/metrics-has-value-label-serviceinstanceid.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_broker_state --service-name=activemq::activemq-cluster --instance-name=activemq-broker
expected: expected/metrics-has-value-label-serviceinstanceid.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_broker_current_connentions --service-name=activemq::activemq-cluster --instance-name=activemq-broker
expected: expected/metrics-has-value-label-serviceinstanceid.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_broker_current_producer_count --service-name=activemq::activemq-cluster --instance-name=activemq-broker
expected: expected/metrics-has-value-label-serviceinstanceid.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_broker_current_consumer_count --service-name=activemq::activemq-cluster --instance-name=activemq-broker
expected: expected/metrics-has-value-label-serviceinstanceid.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_broker_producer_count --service-name=activemq::activemq-cluster --instance-name=activemq-broker
expected: expected/metrics-has-value-label-serviceinstanceid.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_broker_consumer_count --service-name=activemq::activemq-cluster --instance-name=activemq-broker
expected: expected/metrics-has-value-label-serviceinstanceid.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_broker_enqueue_count --service-name=activemq::activemq-cluster --instance-name=activemq-broker
expected: expected/metrics-has-value-label-serviceinstanceid.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_broker_dequeue_count --service-name=activemq::activemq-cluster --instance-name=activemq-broker
expected: expected/metrics-has-value-label-serviceinstanceid.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_broker_enqueue_rate --service-name=activemq::activemq-cluster --instance-name=activemq-broker
expected: expected/metrics-has-value-label-serviceinstanceid.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_broker_dequeue_rate --service-name=activemq::activemq-cluster --instance-name=activemq-broker
expected: expected/metrics-has-value-label-serviceinstanceid.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_broker_memory_percent_usage --service-name=activemq::activemq-cluster --instance-name=activemq-broker
expected: expected/metrics-has-value-label-serviceinstanceid.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_broker_memory_usage --service-name=activemq::activemq-cluster --instance-name=activemq-broker
expected: expected/metrics-has-value-label-serviceinstanceid.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_broker_memory_limit --service-name=activemq::activemq-cluster --instance-name=activemq-broker
expected: expected/metrics-has-value-label-serviceinstanceid.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_broker_store_percent_usage --service-name=activemq::activemq-cluster --instance-name=activemq-broker
expected: expected/metrics-has-value-label-serviceinstanceid.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_broker_store_limit --service-name=activemq::activemq-cluster --instance-name=activemq-broker
expected: expected/metrics-has-value-label-serviceinstanceid.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_broker_temp_percent_usage --service-name=activemq::activemq-cluster --instance-name=activemq-broker
expected: expected/metrics-has-value-label-serviceinstanceid.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_broker_temp_limit --service-name=activemq::activemq-cluster --instance-name=activemq-broker
expected: expected/metrics-has-value-label-serviceinstanceid.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_broker_average_message_size --service-name=activemq::activemq-cluster --instance-name=activemq-broker
expected: expected/metrics-has-value-label-serviceinstanceid.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_broker_max_message_size --service-name=activemq::activemq-cluster --instance-name=activemq-broker
expected: expected/metrics-has-value-label-serviceinstanceid.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_broker_queue_size --service-name=activemq::activemq-cluster --instance-name=activemq-broker
expected: expected/metrics-has-value-label-destinationname.yml
# endpoint cases
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql endpoint ls --service-name=activemq::activemq-cluster
expected: expected/endpoint.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_destination_producer_count --service-name=activemq::activemq-cluster --endpoint-name=testQueue
expected: expected/metrics-has-value-label-destinationtype.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_destination_consumer_count --service-name=activemq::activemq-cluster --endpoint-name=testQueue
expected: expected/metrics-has-value-label-destinationtype.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_destination_topic_consumer_count --service-name=activemq::activemq-cluster --endpoint-name=testQueue
expected: expected/metrics-has-value.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_destination_queue_size --service-name=activemq::activemq-cluster --endpoint-name=testQueue
expected: expected/metrics-has-value-label-destinationtype.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_destination_memory_usage --service-name=activemq::activemq-cluster --endpoint-name=testQueue
expected: expected/metrics-has-value-label-destinationtype.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_destination_memory_percent_usage --service-name=activemq::activemq-cluster --endpoint-name=testQueue
expected: expected/metrics-has-value-label-destinationtype.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_destination_enqueue_count --service-name=activemq::activemq-cluster --endpoint-name=testQueue
expected: expected/metrics-has-value-label-destinationtype.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_destination_dequeue_count --service-name=activemq::activemq-cluster --endpoint-name=testQueue
expected: expected/metrics-has-value-label-destinationtype.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_destination_average_enqueue_time --service-name=activemq::activemq-cluster --endpoint-name=testQueue
expected: expected/metrics-has-value-label-destinationtype.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_destination_max_enqueue_time --service-name=activemq::activemq-cluster --endpoint-name=testQueue
expected: expected/metrics-has-value-label-destinationtype.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_destination_dispatch_count --service-name=activemq::activemq-cluster --endpoint-name=testQueue
expected: expected/metrics-has-value-label-destinationtype.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_destination_expired_count --service-name=activemq::activemq-cluster --endpoint-name=testQueue
expected: expected/metrics-has-value-label-destinationtype.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_destination_inflight_count --service-name=activemq::activemq-cluster --endpoint-name=testQueue
expected: expected/metrics-has-value-label-destinationtype.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_destination_average_message_size --service-name=activemq::activemq-cluster --endpoint-name=testQueue
expected: expected/metrics-has-value-label-destinationtype.yml
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_activemq_destination_max_message_size --service-name=activemq::activemq-cluster --endpoint-name=testQueue
expected: expected/metrics-has-value-label-destinationtype.yml

View File

@ -0,0 +1,130 @@
<!--
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.
-->
<!-- START SNIPPET: example -->
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">
<!-- Allows us to use system properties as variables in this configuration file -->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>file:${activemq.conf}/credentials.properties</value>
</property>
</bean>
<!--
The <broker> element is used to configure the ActiveMQ broker.
-->
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="${ACTIVEMQ_BROKER_NAME}" dataDirectory="${activemq.data}">
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry topic=">" >
<!-- The constantPendingMessageLimitStrategy is used to prevent
slow topic consumers to block producers and affect other consumers
by limiting the number of messages that are retained
For more information, see:
http://activemq.apache.org/slow-consumer-handling.html
-->
<pendingMessageLimitStrategy>
<constantPendingMessageLimitStrategy limit="1000"/>
</pendingMessageLimitStrategy>
</policyEntry>
</policyEntries>
</policyMap>
</destinationPolicy>
<!--
The managementContext is used to configure how ActiveMQ is exposed in
JMX. By default, ActiveMQ uses the MBean server that is started by
the JVM. For more information, see:
http://activemq.apache.org/jmx.html
-->
<managementContext>
<managementContext createConnector="false"/>
</managementContext>
<!--
Configure message persistence for the broker. The default persistence
mechanism is the KahaDB store (identified by the kahaDB tag).
For more information, see:
http://activemq.apache.org/persistence.html
-->
<persistenceAdapter>
<kahaDB directory="${activemq.data}/kahadb"/>
</persistenceAdapter>
<!--
The systemUsage controls the maximum amount of space the broker will
use before disabling caching and/or slowing down producers. For more information, see:
http://activemq.apache.org/producer-flow-control.html
-->
<systemUsage>
<systemUsage>
<memoryUsage>
<memoryUsage percentOfJvmHeap="70" />
</memoryUsage>
<storeUsage>
<storeUsage limit="100 gb"/>
</storeUsage>
<tempUsage>
<tempUsage limit="50 gb"/>
</tempUsage>
</systemUsage>
</systemUsage>
<!--
The transport connectors expose ActiveMQ over a given protocol to
clients and other brokers. For more information, see:
http://activemq.apache.org/configuring-transports.html
-->
<transportConnectors>
<!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
<transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
<transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
<transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
<transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
</transportConnectors>
<!-- destroy the spring context on shutdown to stop jetty -->
<shutdownHooks>
<bean xmlns="http://www.springframework.org/schema/beans" class="org.apache.activemq.hooks.SpringContextHook" />
</shutdownHooks>
</broker>
<!--
Enable web consoles, REST and Ajax APIs and demos
The web consoles requires by default login, you can disable this in the jetty.xml file
Take a look at ${ACTIVEMQ_HOME}/conf/jetty.xml for more details
-->
<import resource="jetty.xml"/>
</beans>
<!-- END SNIPPET: example -->

View File

@ -0,0 +1,34 @@
# 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.
---
startDelaySeconds: 10
hostPort: amq:1616
username: admin
password: activemq
ssl: false
lowercaseOutputName: false
lowercaseOutputLabelNames: false
includeObjectNames: ["org.apache.activemq:*","java.lang:type=OperatingSystem","java.lang:type=GarbageCollector,*","java.lang:type=Threading","java.lang:type=Runtime","java.lang:type=Memory","java.lang:name=*"]
excludeObjectNames: ["org.apache.activemq:type=ColumnFamily,*"]
autoExcludeObjectNameAttributes: true
excludeObjectNameAttributes:
"java.lang:type=OperatingSystem":
- "ObjectName"
"java.lang:type=Runtime":
- "ClassPath"
- "SystemProperties"
rules:
- pattern: ".*"

View File

@ -0,0 +1,100 @@
# 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.
version: "2.1"
services:
oap:
extends:
file: ../../script/docker-compose/base-compose.yml
service: oap
ports:
- "12800:12800"
networks:
- e2e
amq:
image: apache/activemq-classic:6.0.1
hostname: amq
ports:
- "61616:61616"
- "8161:8161"
expose:
- 1616
volumes:
- ./config/amq/activemq.xml:/opt/apache-activemq/conf/activemq.xml
environment:
ACTIVEMQ_SUNJMX_START: "-Dcom.sun.management.jmxremote.port=1616 -Dcom.sun.management.jmxremote.rmi.port=1616 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
ACTIVEMQ_BROKER_NAME: activemq-broker
healthcheck:
test: [ "CMD-SHELL", "curl --silent --fail localhost:8161 || exit 1" ]
interval: 15s
timeout: 10s
retries: 120
networks:
- e2e
amqexporter:
image: bitnami/jmx-exporter:0.20.0
hostname: amqexporter
volumes:
- ./config/amq/config.yaml:/opt/bitnami/jmx-exporter/example_configs/httpserver_sample_config.yml
expose:
- 5556
depends_on:
- amq
networks:
- e2e
amq-consumer-mock:
image: apache/activemq-classic:6.0.1
hostname: amq-consumer-mock
entrypoint: bash
command:
- -c
- "/opt/apache-activemq/bin/activemq consumer --brokerUrl tcp://amq:61616 --destination queue://testQueue --messageCount 10 --parallelThreads 2 && /opt/apache-activemq/bin/activemq consumer --brokerUrl tcp://amq:61616 --destination topic://testTopic --messageCount 10 --parallelThreads 2"
depends_on:
amq:
condition: service_healthy
networks:
- e2e
amq-producer-mock:
image: apache/activemq-classic:6.0.1
hostname: amq-producer-mock
entrypoint: bash
command:
- -c
- "/opt/apache-activemq/bin/activemq producer --brokerUrl tcp://amq:61616 --destination queue://testQueue --messageCount 50 --persistent true --message hello && /opt/apache-activemq/bin/activemq producer --brokerUrl tcp://amq:61616 --destination topic://testTopic --messageCount 50 --persistent true --message world"
depends_on:
- amq-consumer-mock
networks:
- e2e
otel-collector:
image: otel/opentelemetry-collector:${OTEL_COLLECTOR_VERSION}
networks:
- e2e
command: [ "--config=/etc/otel-collector-config.yaml" ]
volumes:
- ./otel-collector-config.yaml:/etc/otel-collector-config.yaml
expose:
- 55678
depends_on:
oap:
condition: service_healthy
networks:
e2e:

View File

@ -0,0 +1,37 @@
# 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 file is used to show how to write configuration files and can be used to test.
setup:
env: compose
file: docker-compose.yml
timeout: 20m
init-system-environment: ../../script/env
steps:
- name: set PATH
command: export PATH=/tmp/skywalking-infra-e2e/bin:$PATH
- name: install yq
command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
- name: install swctl
command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
verify:
retry:
count: 60
interval: 3s
cases:
- includes:
- ./activemq-cases.yaml

View File

@ -0,0 +1,21 @@
# 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.
{{- contains .}}
- id: {{ b64enc "activemq::activemq-cluster" }}.1_{{ b64enc "testQueue" }}
name: testQueue
- id: {{ b64enc "activemq::activemq-cluster" }}.1_{{ b64enc "testTopic" }}
name: testTopic
{{- end}}

View File

@ -0,0 +1,22 @@
# 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.
{{- contains . }}
- id: {{ notEmpty .id }}
name: activemq-broker
instanceuuid: {{ notEmpty .instanceuuid }}
attributes: []
language: UNKNOWN
{{- end }}

View File

@ -0,0 +1,35 @@
# 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.
type: TIME_SERIES_VALUES
results:
{{- contains .results }}
- metric:
labels:
{{- contains .metric.labels }}
- key: destinationName
value: {{ .value }}
{{- end}}
values:
{{- contains .values }}
- id: {{ notEmpty .id }}
value: {{ .value }}
traceid: null
- id: {{ notEmpty .id }}
value: null
traceid: null
{{- end}}
{{- end}}
error: null

View File

@ -0,0 +1,35 @@
# 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.
type: TIME_SERIES_VALUES
results:
{{- contains .results }}
- metric:
labels:
{{- contains .metric.labels }}
- key: destinationType
value: {{ .value }}
{{- end}}
values:
{{- contains .values }}
- id: {{ notEmpty .id }}
value: {{ .value }}
traceid: null
- id: {{ notEmpty .id }}
value: null
traceid: null
{{- end}}
{{- end}}
error: null

View File

@ -0,0 +1,35 @@
# 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.
type: TIME_SERIES_VALUES
results:
{{- contains .results }}
- metric:
labels:
{{- contains .metric.labels }}
- key: service_instance_id
value: {{ .value }}
{{- end}}
values:
{{- contains .values }}
- id: {{ notEmpty .id }}
value: {{ .value }}
traceid: null
- id: {{ notEmpty .id }}
value: null
traceid: null
{{- end}}
{{- end}}
error: null

View File

@ -0,0 +1,31 @@
# 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.
type: TIME_SERIES_VALUES
results:
{{- contains .results }}
- metric:
labels: []
values:
{{- contains .values }}
- id: {{ notEmpty .id }}
value: {{ .value }}
traceid: null
- id: {{ notEmpty .id }}
value: null
traceid: null
{{- end}}
{{- end}}
error: null

View File

@ -0,0 +1,24 @@
# 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.
{{- contains . }}
- id: {{ b64enc "activemq::activemq-cluster" }}.1
name: activemq::activemq-cluster
group: activemq
shortname: activemq-cluster
layers:
- ACTIVEMQ
normal: true
{{- end }}

View File

@ -0,0 +1,43 @@
# 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.
receivers:
prometheus:
config:
scrape_configs:
- job_name: "activemq-monitoring"
scrape_interval: 30s
static_configs:
- targets: ['amqexporter:5556']
labels:
cluster: activemq-cluster
exporters:
otlp:
endpoint: oap:11800
tls:
insecure: true
processors:
batch:
service:
pipelines:
metrics:
receivers:
- prometheus
processors:
- batch
exporters:
- otlp