还在为消息队列监控配置繁琐而头疼?本文将带你通过Prometheus Operator(简称PO)实现ActiveMQ与消息队列的零代码监控部署,涵盖从环境搭建到告警配置的全流程。读完你将掌握:
【免费下载链接】prometheus-operator 项目地址: https://gitcode.com/gh_mirrors/pro/prometheus-operator
- 用ServiceMonitor自动发现消息队列服务
- 配置Prometheus抓取JVM与队列指标
- 编写实用告警规则
- 高可用部署最佳实践
核心概念与架构
Prometheus Operator通过自定义资源(CRD)简化Kubernetes环境中的监控配置。核心组件包括:
- Prometheus:部署Prometheus服务器实例,通过选择器关联监控目标
- ServiceMonitor:定义服务发现规则,自动匹配带特定标签的服务
- PrometheusRule:声明式告警规则配置

架构图来源:设计文档
环境准备
1. 部署Prometheus Operator
使用GitCode仓库部署最新版本:
git clone https://gitcode.com/gh_mirrors/pro/prometheus-operator
cd prometheus-operator
kubectl apply -f example/rbac/prometheus-operator/
验证部署状态:
kubectl get pods -n monitoring
2. 部署消息队列
以ActiveMQ为例,部署带Prometheus exporter的实例:
# activemq-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: activemq
labels:
app: activemq
spec:
replicas: 1
selector:
matchLabels:
app: activemq
template:
metadata:
labels:
app: activemq
spec:
containers:
- name: activemq
image: rmohr/activemq:5.15.9
ports:
- containerPort: 61616
- containerPort: 8161
- name: exporter
image: prom/activemq-exporter:latest
ports:
- containerPort: 9254
args: ["--web.listen-address=:9254", "--activemq.url=tcp://localhost:61616"]
配置服务发现
创建ServiceMonitor
创建针对ActiveMQ的ServiceMonitor,匹配标签app: activemq的服务:
# activemq-servicemonitor.yaml
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: activemq-monitor
namespace: monitoring
spec:
selector:
matchLabels:
app: activemq
namespaceSelector:
matchNames:
- default
endpoints:
- port: metrics
interval: 15s
path: /metrics
消息队列配置类似,需修改标签选择器与指标端口(默认9876)。详细配置示例可参考ServiceMonitor文档。
指标抓取与存储
关键指标说明
ActiveMQ exporter提供核心指标:
activemq_queues_size:队列当前消息数activemq_queues_enqueue_count:入队消息总数activemq_queues_dequeue_count:出队消息总数
消息队列需通过rocketmq-exporter获取类似指标,配置示例见用户指南。
持久化存储配置
为Prometheus配置持久卷,避免数据丢失:
# prometheus-persistent.yaml
apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:
name: prometheus
namespace: monitoring
spec:
storageSpec:
volumeClaimTemplate:
spec:
storageClassName: standard
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 10Gi
serviceMonitorSelector:
matchLabels:
monitoring: message-queues
告警配置
创建PrometheusRule
定义队列积压告警规则,当消息数超过1000时触发:
# queue-alerts.yaml
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
name: message-queue-alerts
namespace: monitoring
spec:
groups:
- name: queue.rules
rules:
- alert: QueueBacklog
expr: activemq_queues_size{queue!~"^ActiveMQ\\..+"} > 1000
for: 5m
labels:
severity: critical
annotations:
summary: "队列 {{ $labels.queue }} 积压"
description: "当前消息数: {{ $value }}"
高可用最佳实践
多副本部署
配置Prometheus双副本提高可用性:
spec:
replicas: 2
ruleSelector:
matchLabels:
prometheus: message-queues
联邦监控
跨集群监控时,使用Prometheus联邦抓取远程集群指标:
scrape_configs:
- job_name: 'federate'
scrape_interval: 15s
honor_labels: true
metrics_path: '/federate'
params:
'match[]':
- '{job="activemq"}'
static_configs:
- targets:
- 'prometheus-remote:9090'
总结与进阶
本文介绍了基础监控流程,进阶方向包括:
- 集成Grafana可视化面板
- 使用AlertmanagerConfig配置告警路由
- 监控Kafka等其他消息队列
完整配置文件可参考:
关注后续文章,将深入讲解Thanos集成实现长期存储。
【免费下载链接】prometheus-operator 项目地址: https://gitcode.com/gh_mirrors/pro/prometheus-operator
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



