Pulsar 监控与告警详解

Pulsar 监控与告警 是保障消息系统稳定、可运维、可诊断的核心能力。Pulsar 提供了丰富的内置指标(Metrics),结合 Prometheus + Grafana 可实现全面的可视化监控,再通过日志分析与告警规则,构建完整的可观测性体系。


📘 Pulsar 监控与告警详解


一、内置 Metrics:关键指标解析

Pulsar 各组件通过 HTTP 端点暴露 Prometheus 格式的指标,主要包括:

  • Broker
  • Bookie
  • ZooKeeper
  • JVM
1. ✅ Broker 关键指标
指标说明告警建议
pulsar_broker_producer_count生产者连接数突增可能为异常流量
pulsar_broker_consumer_count消费者连接数消失可能为消费中断
pulsar_broker_topic_in_bytes_total入流量(字节)监控吞吐变化
pulsar_broker_topic_out_bytes_total出流量(字节)
pulsar_broker_publish_latency_le_*发送延迟(P95/P99)> 10ms 告警
pulsar_broker_subscription_backlog订阅积压(未消费消息数)> 100万 告警
pulsar_broker_bundle_countBundle 数量(负载均衡单元)过多表示负载不均
pulsar_broker_connection_countBroker 总连接数接近上限时告警
pulsar_broker_rate_in每秒入消息数
pulsar_broker_rate_out每秒出消息数

backlog 是核心指标,持续增长表示消费能力不足。


2. ✅ Bookie 关键指标
指标说明告警建议
bookkeeper_journal_force_write_latencyJournal 写入延迟> 10ms 告警
bookkeeper_client_bookie_write_latencyBookie 写入延迟> 5ms 告警
bookkeeper_client_bookie_read_latencyBookie 读取延迟> 10ms 告警
bookkeeper_ledger_num_under_replicated副本不足的 Ledger 数> 0 告警
bookkeeper_gc_pause_timeGC 暂停时间> 50ms 告警
bookie_disk_usage磁盘使用率> 80% 告警
bookkeeper_entry_memtable_count内存表数量过高可能 OOM
bookkeeper_compaction_rateCompaction 速度过低表示 GC 慢

under_replicated 表示数据有丢失风险,必须立即处理。


3. ✅ ZooKeeper 关键指标
指标说明
zookeeper_avg_latency平均响应延迟
zookeeper_packets_received接收包数
zookeeper_packets_sent发送包数
zookeeper_num_alive_connections活跃连接数
jvm_memory_usedJVM 内存使用

ZooKeeper 延迟高会影响整个集群协调性能。


4. ✅ JVM 关键指标(所有组件)
指标说明
jvm_memory_used各内存区使用量
jvm_gc_collection_seconds_countGC 次数
jvm_gc_collection_seconds_maxGC 最大暂停时间
jvm_threads_current当前线程数

建议:GC 暂停 < 50ms,否则影响消息延迟。


二、Prometheus + Grafana:可视化监控

1. 启用 Pulsar 指标导出

broker.confbookkeeper.conf 中启用:

# broker.conf
metricsEnabled=true
monitoringServers=prometheus

# bookkeeper.conf
serverMetricsProviderClass=org.apache.bookkeeper.stats.prometheus.PrometheusMetricsProvider

指标端点:

  • Broker: http://broker:8080/metrics
  • Bookie: http://bookie:8000/metrics

2. 部署 Prometheus
# prometheus.yml
scrape_configs:
  - job_name: 'pulsar-broker'
    static_configs:
      - targets: ['broker1:8080', 'broker2:8080']

  - job_name: 'pulsar-bookie'
    static_configs:
      - targets: ['bookie1:8000', 'bookie2:8000']

3. 部署 Grafana 并导入官方 Dashboard

Pulsar 官方提供了多个 Grafana Dashboard 模板:

Dashboard说明
Pulsar BrokerBroker 吞吐、延迟、连接数
Pulsar BookieBookie I/O、延迟、GC
Pulsar ZooKeeperZK 延迟、连接数
Pulsar JVMJVM 内存、GC

导入方式:Grafana → Dashboard → Import → 输入 ID 或上传 JSON。


4. 关键可视化面板
面板说明
Broker Throughput入/出流量趋势
Publish Latency (P99)发送延迟是否飙升
Subscription Backlog各订阅积压情况
Bookie Disk Usage磁盘使用率
Journal Write LatencyBookie 写入延迟
Underreplicated Ledgers副本缺失告警
JVM GC PauseGC 是否影响性能

三、日志分析:定位问题

1. 日志位置
组件日志路径
Broker$PULSAR_HOME/logs/pulsar-broker.log
Bookie$PULSAR_HOME/logs/bookkeeper.log
ZooKeeper$PULSAR_HOME/logs/zookeeper.log

2. 常见问题与日志关键词
问题日志关键词解决方案
生产者发送失败Send timeout, Connection closed检查网络、Broker 负载
消费者无法连接Subscribe failed, Topic not found检查权限、Topic 是否存在
写入延迟高Slow write, Journal sync took检查 Bookie 磁盘 I/O
副本缺失under-replicated, Autorecovery started检查 Bookie 是否宕机
磁盘满No space left, Disk full扩容或启用 Offload
ZooKeeper 超时Session expired, Connection loss检查 ZK 集群健康

3. 日志分析工具建议
  • ELK(Elasticsearch + Logstash + Kibana)
  • Loki + Promtail + Grafana
  • Splunk

推荐:使用 Grafana 集成 Loki,统一监控与日志。


四、告警规则配置(Prometheus Alertmanager)

prometheus.yml 或独立 rules.yml 中定义告警规则:

groups:
  - name: pulsar-broker
    rules:
      - alert: HighPublishLatency
        expr: histogram_quantile(0.99, sum(rate(pulsar_broker_publish_latency_le[5m])) by (le)) > 0.01
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "High publish latency on {{ $labels.instance }}"
          description: "P99 publish latency is {{ $value }}s"

      - alert: SubscriptionBacklogTooHigh
        expr: pulsar_broker_subscription_backlog > 1000000
        for: 10m
        labels:
          severity: critical
        annotations:
          summary: "Subscription backlog too high"
          description: "Backlog is {{ $value }} on {{ $labels.topic }}"

      - alert: BookieUnderReplicated
        expr: bookkeeper_ledger_num_under_replicated > 0
        for: 2m
        labels:
          severity: critical
        annotations:
          summary: "Bookie ledger under-replicated"
          description: "Some ledgers are missing replicas"

      - alert: BookieDiskFull
        expr: bookie_disk_usage > 0.8
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "Bookie disk usage > 80%"
          description: "Disk usage is {{ $value }} on {{ $labels.instance }}"

      - alert: JournalWriteLatencyHigh
        expr: bookkeeper_journal_force_write_latency > 10
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "Bookie journal write latency high"
          description: "Journal write latency is {{ $value }}ms"

✅ 告警级别建议:

  • warning:需关注
  • critical:立即处理

五、最佳实践总结

实践建议
启用所有组件的 metricsBroker、Bookie、ZK
使用官方 Grafana Dashboard快速搭建可视化
重点监控 backlog 和延迟最能反映系统健康
设置合理的告警阈值避免误报和漏报
日志集中管理使用 Loki 或 ELK
定期演练告警响应确保 SRE 能及时处理
监控 Autorecovery 状态防止数据丢失

✅ 总结

层级工具目标
MetricsPrometheus采集性能数据
可视化Grafana + 官方 Dashboard直观展示系统状态
日志Loki / ELK定位具体问题
告警Alertmanager主动发现问题

📌 一句话总结

Pulsar 的可观测性 = Prometheus(指标) + Grafana(看板) + 日志(诊断) + Alertmanager(告警) —— 构建这套体系,你就能像“医生”一样,实时掌握 Pulsar 集群的“心跳”与“血压”,及时发现并解决问题。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值