This is an automated email from the ASF dual-hosted git repository.

wusheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking-website.git


The following commit(s) were added to refs/heads/master by this push:
     new bc74ce43d58 blog: ActiveMQ Monitoring CN and EN (#700)
bc74ce43d58 is described below

commit bc74ce43d58fa4f23ed5437f0ba7883f38245aa5
Author: Chen Ziyan <[email protected]>
AuthorDate: Fri Apr 19 08:40:25 2024 +0800

    blog: ActiveMQ Monitoring CN and EN (#700)
---
 .../activemq_broker_panel.png                      | Bin 0 -> 460532 bytes
 .../activemq_cluster_panel.png                     | Bin 0 -> 288611 bytes
 .../activemq_destination_panel.png                 | Bin 0 -> 271591 bytes
 .../activemq_logo.png                              | Bin 0 -> 10527 bytes
 .../index.md                                       | 225 +++++++++++++++++++++
 .../activemq_broker_panel.png                      | Bin 0 -> 460532 bytes
 .../activemq_cluster_panel.png                     | Bin 0 -> 288611 bytes
 .../activemq_destination_panel.png                 | Bin 0 -> 271591 bytes
 .../activemq_logo.png                              | Bin 0 -> 10527 bytes
 .../index.md                                       | 225 +++++++++++++++++++++
 10 files changed, 450 insertions(+)

diff --git 
a/content/blog/2024-04-19-monitoring-activemq-through-skywalking/activemq_broker_panel.png
 
b/content/blog/2024-04-19-monitoring-activemq-through-skywalking/activemq_broker_panel.png
new file mode 100644
index 00000000000..2bbc1f2a461
Binary files /dev/null and 
b/content/blog/2024-04-19-monitoring-activemq-through-skywalking/activemq_broker_panel.png
 differ
diff --git 
a/content/blog/2024-04-19-monitoring-activemq-through-skywalking/activemq_cluster_panel.png
 
b/content/blog/2024-04-19-monitoring-activemq-through-skywalking/activemq_cluster_panel.png
new file mode 100644
index 00000000000..eda70159776
Binary files /dev/null and 
b/content/blog/2024-04-19-monitoring-activemq-through-skywalking/activemq_cluster_panel.png
 differ
diff --git 
a/content/blog/2024-04-19-monitoring-activemq-through-skywalking/activemq_destination_panel.png
 
b/content/blog/2024-04-19-monitoring-activemq-through-skywalking/activemq_destination_panel.png
new file mode 100644
index 00000000000..ef0088233f5
Binary files /dev/null and 
b/content/blog/2024-04-19-monitoring-activemq-through-skywalking/activemq_destination_panel.png
 differ
diff --git 
a/content/blog/2024-04-19-monitoring-activemq-through-skywalking/activemq_logo.png
 
b/content/blog/2024-04-19-monitoring-activemq-through-skywalking/activemq_logo.png
new file mode 100644
index 00000000000..808a32e9f9b
Binary files /dev/null and 
b/content/blog/2024-04-19-monitoring-activemq-through-skywalking/activemq_logo.png
 differ
diff --git 
a/content/blog/2024-04-19-monitoring-activemq-through-skywalking/index.md 
b/content/blog/2024-04-19-monitoring-activemq-through-skywalking/index.md
new file mode 100644
index 00000000000..a4ceff5d673
--- /dev/null
+++ b/content/blog/2024-04-19-monitoring-activemq-through-skywalking/index.md
@@ -0,0 +1,225 @@
+---
+title: "Monitoring ActiveMQ through SkyWalking"
+date: 2024-04-19
+author: Ziyan Chen
+description: "This article will demonstrate the usage of the new ActiveMQ 
monitoring dashboard."
+tags:
+- ActiveMQ
+---
+
+![icon](activemq_logo.png)
+
+## Introduction
+
+[Apache ActiveMQ Classic](https://activemq.apache.org/components/classic/) is 
a popular and powerful open-source messaging and integration pattern server. 
Founded in 2004, it has evolved into a mature and widely used open-source 
messaging middleware that complies with the `Java Message Service (JMS)`.
+Today, with its stability and wide range of feature support, it still has a 
certain number of users of `small and medium-sized` enterprises. It‘s 
high-performance version [Apache 
Artemis](https://activemq.apache.org/components/artemis/) is developing rapidly 
and is also attracting attention from users of ActiveMQ.
+
+ActiveMQ has broad support for [JMX (Java Management 
Extensions)](https://docs.oracle.com/javase/tutorial/jmx/overview/index.html), 
allowing to be monitored through `JMX MBean`.
+After enabling JMX, you can use JAVA's built-in `jconsole` or `VisualVM` to 
view the metrics. In addition, some Collector components can also be used to 
convert `JMX-style` data into `Prometheus-style` data, which is suitable for 
more tools.
+
+[OpenTelemetry](https://opentelemetry.io/) as an industry-recognized, 
standardized solution that provides consistent and interoperable telemetry data 
collection, transmission, and analysis capabilities for distributed systems, 
and is also used here for data collection and transmission.
+Although it can directly accept `JMX` type data, the JMX indicators for 
collecting ActiveMQ are not in the standard library, and some versions are 
incompatible, so this article adopts two steps: convert `JMX data` into 
`Prometheus-style` indicator data, and then use OpenTelemetry to scrape `HTTP` 
endpoint data.
+
+[SkyWalking](https://skywalking.apache.org/) as a one-stop distributed system 
monitoring solution, it accepts metrics from `ActiveMQ` and provides a basic 
monitoring dashboard.
+
+## Deployment
+
+Please set up the following services:
+
+1. [SkyWalking OAP, v10.0+](https://github.com/apache/skywalking).
+2. [ActiveMQ 
v6.0.X+](https://activemq.apache.org/components/classic/download/).
+3. [JMX Exporter 
v0.20.0](https://github.com/prometheus/jmx_exporter/releases). If using docker, 
refer 
[bitnami/jmx-exporter](https://github.com/bitnami/containers/tree/main/bitnami/jmx-exporter).
+4. [OpenTelmetry-Collector 
v0.92.0](https://github.com/open-telemetry/opentelemetry-collector-contrib).
+
+### Preparation
+
+The following describes how to deploy ActiveMQ with 2 single-node brokers and 
SkyWalking OAP with one single node. JMX Exporter runs in agent mode 
(recommended).
+
+### Configuration
+
+1. [Enable 
JMX](https://activemq.apache.org/components/classic/documentation/jmx) in 
ActiveMQ, the JMX remote port defaults to `1616`, you can change it through 
`ACTIVEMQ_SUNJMX_START`.
+2. Set up the exporter:
+   1. [Recommended] If run exporter in `agent mode`, need to append the 
startup parameter 
`-DACTIVEMQ_OPTS=-javaagent:{activemqPath}/bin/jmx_prometheus_javaagent-0.20.0.jar=2345:{activemqPath}/conf/config.yaml`
 in ActiveMQ env, then exporter server starts at the same time.
+   2. If run exporter in `single server`, [refer 
here](https://github.com/prometheus/jmx_exporter/tree/release-0.20.0?tab=readme-ov-file#running-the-standalone-http-server)
 to deploy the server alone.
+   3. `2345` is open HTTP port that can be customized. JMX's metrics can be 
queried through `http://localhost:2345/metrics`.
+
+example of `docker-compose.yml` with agent exporter for ActiveMQ:
+
+```yml
+version: '3.8'
+services: 
+  amq1:
+    image: apache/activemq-classic:latest
+    container_name: amq1
+    hostname: amq1
+    volumes:
+      - ~/activemq1/conf/activemq.xml:/opt/apache-activemq/conf/activemq.xml
+      - 
~/activemq1/bin/jmx_prometheus_javaagent-0.20.0.jar:/opt/apache-activemq/bin/jmx_prometheus_javaagent-0.20.0.jar
+      - ~/activemq1/conf/config.yaml:/opt/apache-activemq/conf/config.yaml
+    ports:
+      - "61616:61616"
+      - "8161:8161"
+      - "2345:2345"
+    environment:
+      ACTIVEMQ_OPTS: 
"-javaagent:/opt/apache-activemq/bin/jmx_prometheus_javaagent-0.20.0.jar=2345:/opt/apache-activemq/conf/config.yaml"
+      ACTIVEMQ_BROKER_NAME: broker-1
+    networks:
+      - amqtest    
+  amq2:
+    image: apache/activemq-classic:latest
+    container_name: amq2
+    hostname: amq2
+    volumes:
+      - ~/activemq2/conf/activemq.xml:/opt/apache-activemq/conf/activemq.xml
+      - 
~/activemq2/bin/jmx_prometheus_javaagent-0.20.0.jar:/opt/apache-activemq/bin/jmx_prometheus_javaagent-0.20.0.jar
+      - ~/activemq2/conf/config.yaml:/opt/apache-activemq/conf/config.yaml     
 
+    ports:
+      - "61617:61616" 
+      - "8162:8161"
+      - "2346:2346"      
+    environment:
+      ACTIVEMQ_OPTS: 
"-javaagent:/opt/apache-activemq/bin/jmx_prometheus_javaagent-0.20.0.jar=2346:/opt/apache-activemq/conf/config.yaml"
+      ACTIVEMQ_BROKER_NAME: broker-2 
+    networks:
+      - amqtest
+  otel-collector1:
+    image: otel/opentelemetry-collector:latest
+    container_name: otel-collector1
+    command: [ "--config=/etc/otel-collector-config.yaml" ]
+    volumes:
+      - ./otel-collector-config1.yaml:/etc/otel-collector-config.yaml
+    depends_on:
+      - amq1
+    networks:
+      - amqtest 
+  otel-collector2:
+    image: otel/opentelemetry-collector:latest
+    container_name: otel-collector2
+    command: [ "--config=/etc/otel-collector-config.yaml" ]
+    volumes:
+      - ./otel-collector-config2.yaml:/etc/otel-collector-config.yaml
+    depends_on:
+      - amq2
+    networks:
+      - amqtest            
+networks:
+  amqtest:
+```
+
+example of `otel-collector-config.yaml` for OpenTelemetry:
+
+```yaml
+receivers:
+  prometheus:
+    config:
+     scrape_configs:
+       - job_name: 'activemq-monitoring'
+         scrape_interval: 30s
+         static_configs:
+           - targets: ['amq1:2345']
+             labels:
+               cluster: activemq-broker1
+
+processors:
+  batch:
+ 
+exporters:
+  otlp:
+    endpoint: oap:11800
+    tls:
+      insecure: true
+service:
+  pipelines:
+    metrics:
+      receivers:
+      - prometheus
+      processors:
+      - batch
+      exporters:
+      - otlp
+```
+
+example of `config.yaml` for ActiveMQ Exporter:
+
+```yaml
+---
+startDelaySeconds: 10
+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: ".*"    
+```
+
+### Steps
+
+1. Start `ActiveMQ`, and the Exporter(agent) and the service start at the same 
time.
+2. Start `SkyWalking OAP` and `SkyWalking UI`.
+3. Start `OpenTelmetry-Collector`.
+
+After completed, node metrics will be captured and pushed to SkyWalking.
+
+## Metrics
+
+Monitoring metrics involve in `Cluster Metrics`, `Broker Metrics`, and 
`Destination Metrics`.
+
+- Cluster Metrics: including memory usage, rates of write/read, and 
average/max duration of write.
+- Broker Metrics: including node state, number of connections, number of 
producers/consumers, and rate of write/read under the broker. Depending on the 
cluster mode, one cluster may include one or more brokers.
+- Destination Metrics: including number of producers/consumers, messages in 
different states, queues, and enqueue duration in a queue/topic.
+
+### Cluster Metrics
+
+![activemq_cluster_panel](./activemq_cluster_panel.png)
+
+- System Load: range in [0, 100].
+- Thread Count: the number of threads currently used by the JVM.
+- Heap Memory: capacity of heap memory.
+- GC: memory of ActiveMQ is managed by Java's garbage collection (GC) process.
+- Enqueue/Dequeue/Dispatch/Expired Rate: growth rate of messages in different 
states.
+- Average/Max Enqueue Time: time taken to join the queue.
+
+### Broker Metrics
+
+![activemq_broker_panel](./activemq_broker_panel.png)
+
+- Uptime: duration of the node.
+- State: 1 = slave node, 0 = master node.
+- Current Connentions: number of connections.
+- Current Producer/Consumer Count: number of current producers/consumers.
+- Increased Producer/Consumer Count: number of increased producers/consumers.
+- Enqueue/Dequeue Count: number of enqueue and dequeue.
+- Enqueue/Dequeue Rate: rate of enqueue and dequeue.
+- Memory Percent Usage: amount of memory space used by undelivered messages.
+- Store Percent Usage: space used by pending persistent messages.
+- Temp Percent Usage: space used by non-persistent messages.  
+- Average/Max Message Size: number of messages.
+- Queue Size: number of messages in the queue.
+
+### Destination Metrics
+
+![activemq_destination_panel](./activemq_destination_panel.png)
+
+- Produser/Consumer Count: number of producers/Consumers.
+- Queue Size: unacknowledged messages of the queue.
+- Memory usage: usage of memory.
+- Enqueue/Dequeue/Dispatch/Expired/Inflight Count: number of messages in 
different states.
+- Average/Max Message Size: number of messages.
+- Average/Max Enqueue Time: time taken to join the queue.
+
+## Reference
+
+- [ActiveMQ Classic 
clustering](https://activemq.apache.org/components/classic/documentation/clustering)
+- [JMX Exporter 
Configuration](https://github.com/prometheus/jmx_exporter/tree/release-0.20.0#Configuration)
+- [JMX Exporter-Running the Standalone HTTP 
Server](https://github.com/prometheus/jmx_exporter/tree/release-0.20.0)
+- [OpenTelemetry Collector Contrib 
Jmxreceiver](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/jmxreceiver)
diff --git 
a/content/zh/2024-04-19-monitoring-activemq-through-skywalking/activemq_broker_panel.png
 
b/content/zh/2024-04-19-monitoring-activemq-through-skywalking/activemq_broker_panel.png
new file mode 100644
index 00000000000..2bbc1f2a461
Binary files /dev/null and 
b/content/zh/2024-04-19-monitoring-activemq-through-skywalking/activemq_broker_panel.png
 differ
diff --git 
a/content/zh/2024-04-19-monitoring-activemq-through-skywalking/activemq_cluster_panel.png
 
b/content/zh/2024-04-19-monitoring-activemq-through-skywalking/activemq_cluster_panel.png
new file mode 100644
index 00000000000..eda70159776
Binary files /dev/null and 
b/content/zh/2024-04-19-monitoring-activemq-through-skywalking/activemq_cluster_panel.png
 differ
diff --git 
a/content/zh/2024-04-19-monitoring-activemq-through-skywalking/activemq_destination_panel.png
 
b/content/zh/2024-04-19-monitoring-activemq-through-skywalking/activemq_destination_panel.png
new file mode 100644
index 00000000000..ef0088233f5
Binary files /dev/null and 
b/content/zh/2024-04-19-monitoring-activemq-through-skywalking/activemq_destination_panel.png
 differ
diff --git 
a/content/zh/2024-04-19-monitoring-activemq-through-skywalking/activemq_logo.png
 
b/content/zh/2024-04-19-monitoring-activemq-through-skywalking/activemq_logo.png
new file mode 100644
index 00000000000..808a32e9f9b
Binary files /dev/null and 
b/content/zh/2024-04-19-monitoring-activemq-through-skywalking/activemq_logo.png
 differ
diff --git 
a/content/zh/2024-04-19-monitoring-activemq-through-skywalking/index.md 
b/content/zh/2024-04-19-monitoring-activemq-through-skywalking/index.md
new file mode 100644
index 00000000000..807a3dd06c3
--- /dev/null
+++ b/content/zh/2024-04-19-monitoring-activemq-through-skywalking/index.md
@@ -0,0 +1,225 @@
+---
+title: "使用 SkyWalking 监控 ActiveMQ"
+date: 2024-04-19
+author: "陈子妍"
+description: "本文将演示 ActiveMQ 监控面板的使用。"
+tags:
+- ActiveMQ
+---
+
+![icon](activemq_logo.png)
+
+## 引言
+
+[Apache ActiveMQ Classic](https://activemq.apache.org/components/classic/) 
是一个流行且功能强大的开源消息传递和集成模式服务器。始于2004年,逐渐发展成为了一个成熟且广泛使用的开源消息中间件,符合Java消息服务(JMS)规范。
+发展至今,凭借其稳定性和广泛的特性支持,仍然拥有一定数量的中小型企业的使用者。其高性能版本 [Apache 
Artemis](https://activemq.apache.org/components/artemis/) 目前处于快速发展阶段,也受到了 
ActiveMQ 现有使用者的关注。
+
+ActiveMQ 对 [JMX(Java Management 
Extensions)](https://docs.oracle.com/javase/tutorial/jmx/overview/index.html) 
有广泛的支持,允许通过 JMX MBean 监视和控制代理的行为。
+开启JMX之后,就可以使用 JAVA 自带的 `jconsole` 工具或者 `VisualVM` 等工具直观查看指标。此外也可以通过一些 
Collector 组件,将 JMX 风格的数据转换为 prometheus 风格的数据,适配更多查询与展示工具。
+
+[OpenTelemetry](https://opentelemetry.io/) 
作为业界公认的标准化解决方案,可为分布式系统提供一致且可互操作的遥测数据收集、传输和分析能力,这里也主要借助它实现数据的采集和传输。
+它虽然可以直接接受 `JMX` 类型的数据,但是关于采集 ActiveMQ 的 JMX 指标并不在标准库,存在部分版本不兼容,因此本文采用两步:将 JMX 
数据转换为 Prometheus 风格的指标数据,再使用 OpenTelemetry 传递。
+
+[SkyWalking](https://skywalking.apache.org/) 作为一站式的分布式系统监控解决方案,接纳来自 ActiveMQ 
的指标数据,并提供基础的指标监控面板。
+
+## 服务部署
+
+请准备以下服务
+
+1. [SkyWalking OAP, v10.0+](https://github.com/apache/skywalking)。
+2. [ActiveMQ 
v6.0.X+](https://activemq.apache.org/components/classic/download/)。
+3. [JMX Exporter 
v0.20.0](https://github.com/prometheus/jmx_exporter/releases)。如果你使用docker,参考使用 
[bitnami/jmx-exporter](https://github.com/bitnami/containers/tree/main/bitnami/jmx-exporter)。
+4. [OpenTelmetry-Collector 
v0.92.0](https://github.com/open-telemetry/opentelemetry-collector-contrib)。
+
+### 服务准备
+
+以下通过 SkyWalking OAP 单节点、ActiveMQ 2个单节点服务的部署方式介绍。JMX Exporter 采用推荐的 agent 方式启动。
+
+### 配置流程
+
+1. 在 ActiveMQ 
中[开启JMX](https://activemq.apache.org/components/classic/documentation/jmx),其中 
JMX 远程端口默认1616,如需修改可通过 `ACTIVEMQ_SUNJMX_START` 参数调整。
+2. 设置 Exporter:
+   1. 如果采用推荐的 Agent 方式启动,需要追加启动参数 
`-DACTIVEMQ_OPTS=-javaagent:{activemqPath}/bin/jmx_prometheus_javaagent-0.20.0.jar=2345:{activemqPath}/conf/config.yaml`
+   2. 
如果采用单独服务的方式启动,可以[参考这里](https://github.com/prometheus/jmx_exporter/tree/release-0.20.0?tab=readme-ov-file#running-the-standalone-http-server)独立部署
 Exporter 服务。
+   3. 其中 `2345` 为开放的 HTTP 端口可自定义。最终可通过访问 `http://localhost:2345/metrics` 查询到 
JMX 的指标数据。
+
+采用 Agent Exporter 方式的 `docker-compose.yml` 配置样例:
+
+```yml
+version: '3.8'
+services: 
+  amq1:
+    image: apache/activemq-classic:latest
+    container_name: amq1
+    hostname: amq1
+    volumes:
+      - ~/activemq1/conf/activemq.xml:/opt/apache-activemq/conf/activemq.xml
+      - 
~/activemq1/bin/jmx_prometheus_javaagent-0.20.0.jar:/opt/apache-activemq/bin/jmx_prometheus_javaagent-0.20.0.jar
+      - ~/activemq1/conf/config.yaml:/opt/apache-activemq/conf/config.yaml
+    ports:
+      - "61616:61616"
+      - "8161:8161"
+      - "2345:2345"
+    environment:
+      ACTIVEMQ_OPTS: 
"-javaagent:/opt/apache-activemq/bin/jmx_prometheus_javaagent-0.20.0.jar=2345:/opt/apache-activemq/conf/config.yaml"
+      ACTIVEMQ_BROKER_NAME: broker-1
+    networks:
+      - amqtest    
+  amq2:
+    image: apache/activemq-classic:latest
+    container_name: amq2
+    hostname: amq2
+    volumes:
+      - ~/activemq2/conf/activemq.xml:/opt/apache-activemq/conf/activemq.xml
+      - 
~/activemq2/bin/jmx_prometheus_javaagent-0.20.0.jar:/opt/apache-activemq/bin/jmx_prometheus_javaagent-0.20.0.jar
+      - ~/activemq2/conf/config.yaml:/opt/apache-activemq/conf/config.yaml     
 
+    ports:
+      - "61617:61616" 
+      - "8162:8161"
+      - "2346:2346"      
+    environment:
+      ACTIVEMQ_OPTS: 
"-javaagent:/opt/apache-activemq/bin/jmx_prometheus_javaagent-0.20.0.jar=2346:/opt/apache-activemq/conf/config.yaml"
+      ACTIVEMQ_BROKER_NAME: broker-2 
+    networks:
+      - amqtest
+  otel-collector1:
+    image: otel/opentelemetry-collector:latest
+    container_name: otel-collector1
+    command: [ "--config=/etc/otel-collector-config.yaml" ]
+    volumes:
+      - ./otel-collector-config1.yaml:/etc/otel-collector-config.yaml
+    depends_on:
+      - amq1
+    networks:
+      - amqtest 
+  otel-collector2:
+    image: otel/opentelemetry-collector:latest
+    container_name: otel-collector2
+    command: [ "--config=/etc/otel-collector-config.yaml" ]
+    volumes:
+      - ./otel-collector-config2.yaml:/etc/otel-collector-config.yaml
+    depends_on:
+      - amq2
+    networks:
+      - amqtest            
+networks:
+  amqtest:
+```
+
+OpenTelemetry `otel-collector-config.yaml` 配置样例:
+
+```yaml
+receivers:
+  prometheus:
+    config:
+     scrape_configs:
+       - job_name: 'activemq-monitoring'
+         scrape_interval: 30s
+         static_configs:
+           - targets: ['amq1:2345']
+             labels:
+               cluster: activemq-broker1
+
+processors:
+  batch:
+ 
+exporters:
+  otlp:
+    endpoint: oap:11800
+    tls:
+      insecure: true
+service:
+  pipelines:
+    metrics:
+      receivers:
+      - prometheus
+      processors:
+      - batch
+      exporters:
+      - otlp
+```
+
+ActiveMQ Exporter `config.yaml` 配置样例:
+
+```yaml
+---
+startDelaySeconds: 10
+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: ".*"    
+```
+
+### 启动步骤
+
+1. 启动 `ActiveMQ`,Exporter 和服务同时启动。
+2. 启动 `SkyWalking OAP` 和 `SkyWalking UI`。
+3. 启动 `OpenTelmetry-Collector`。
+
+以上步骤执行完成后,节点指标就会定时抓取后推送到 SkyWalking,经过分组聚合后前端页面可查看到 ActiveMQ 的面板数据。
+
+## 监控指标
+
+监控指标主要分为3类:Cluster 指标、Broker 指标、Destination 指标
+
+- Cluster 指标:主要关注集群的内存使用情况、数据写入与读取速率平均情况、平均与最大的写入时长等。
+- Broker 指标:主要关注 Broker 
下节点状态、连接数、生产者消费者数量、写入读取速率等。根据集群形式不同,一个Cluster可能包括一个或多个Broker。
+- Destination 指标:主要关注 Queue/Topic 下的生产者消费者数量、不同状态消息数量、队列数量、入队时长等。
+
+### Cluster 指标
+
+![activemq_cluster_panel](./activemq_cluster_panel.png)
+
+- System Load:[0, 100]的值来反馈系统负载。
+- Thread Count:JVM 当前使用的线程数。
+- Heap Memory:堆内存的容量一定程度反映服务的处理性能。
+- GC:ActiveMQ 在 JVM 中运行,其内存由 Java 的垃圾回收 (GC) 进程管理,GC能直接反映服务的状态。
+- Enqueue/Dequeue/Dispatch/Expired Rate:不同状态信息的增长速率能直接反映生产活动。
+- Average/Max Enqueue Time:入队的耗时能一定程度影响生产者。
+
+### Broker 指标
+
+![activemq_broker_panel](./activemq_broker_panel.png)
+
+- Uptime:节点存活时长。
+- State:是否为从节点,1=从节点,0=主节点。
+- Current Connentions:目前的连接数。
+- Current Producer/Consumer Count:目前生产者消费者数量。
+- Increased Producer/Consumer Count:增长的生产者消费者数量。
+- Enqueue/Dequeue Count: 入队出队数量。
+- Enqueue/Dequeue Rate: 入队出队速率。
+- Memory Percent Usage:未送达消息使用的内存空间。
+- Store Percent Usage: 挂起的持久性消息占用的空间。
+- Temp Percent Usage:非持久化消息占用的空间。
+- Average/Max Message Size:消息量。
+- Queue Size:队列中消息量。
+
+### Destination 指标
+
+![activemq_destination_panel](./activemq_destination_panel.png)
+
+- Producer/Consumer Count:生产者/消费者数量。
+- Queue Size:队列的未消费数量。
+- Memory Usage:内存的使用。
+- Enqueue/Dequeue/Dispatch/Expired/Inflight Count:不同状态消息数。
+- Average/Max Enqueue Time:入队的耗时。
+- Average/Max Message Size:消息量。
+
+## 参考文档
+
+- [ActiveMQ Classic 
clustering](https://activemq.apache.org/components/classic/documentation/clustering)
+- [JMX Exporter 
Configuration](https://github.com/prometheus/jmx_exporter/tree/release-0.20.0#Configuration)
+- [JMX Exporter-Running the Standalone HTTP 
Server](https://github.com/prometheus/jmx_exporter/tree/release-0.20.0)
+- [OpenTelemetry Collector Contrib 
Jmxreceiver](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/jmxreceiver)

Reply via email to