---
title: 指标监控 
---

# 指标监控

FlowMQ 以 Prometheus 格式暴露所有运行指标，支持对接 Prometheus + Grafana 等主流监控体系。

## 指标接入

FlowMQ 通过 HTTP 端点暴露 Prometheus 格式的指标：

```
GET /v1/prometheus/metrics
```

配置 Prometheus 采集示例：

```yaml
scrape_configs:
  - job_name: "flowmq"
    metrics_path: "/v1/prometheus/metrics"
    static_configs:
      - targets: ["your-flowmq-host:port"]
```

## 关键指标

### Broker 路由

| 指标 | 类型 | 说明 |
|------|------|------|
| `broker_messages_published_count` | Counter | 发布到 Broker 的消息总数 |
| `broker_messages_dispatched_count` | Counter | 分发到本地订阅者的消息总数 |
| `broker_messages_forwarded_count` | Counter | 转发到其他集群节点的消息总数 |
| `broker_destinations` | Gauge | 已注册的 Destination 数量 |
| `broker_subscriptions` | Gauge | 本地订阅数量 |
| `broker_stream_subscriptions` | Gauge | Stream 订阅数量 |

### MQTT

所有 MQTT 指标均携带 `namespace` 标签，支持按租户维度观测。

| 指标 | 类型 | 说明 |
|------|------|------|
| `mqtt_connections` | Gauge | 当前活跃连接数 |
| `mqtt_messages_in_count` | Counter | 接收消息总数 |
| `mqtt_messages_out_count` | Counter | 发送消息总数 |
| `mqtt_messages_in_bytes_count` | Counter | 接收消息总字节数 |
| `mqtt_messages_out_bytes_count` | Counter | 发送消息总字节数 |
| `mqtt_messages_dropped_count` | Counter | 丢弃消息数（如配额超限） |

### Kafka

所有 Kafka 指标均携带 `namespace` 标签。

| 指标 | 类型 | 说明 |
|------|------|------|
| `kafka_requests_count` | Counter | Kafka 请求总数 |
| `kafka_messages_in_count` | Counter | 接收消息总数 |
| `kafka_messages_out_count` | Counter | 发送消息总数 |
| `kafka_messages_in_bytes_count` | Counter | 接收消息总字节数 |
| `kafka_messages_out_bytes_count` | Counter | 发送消息总字节数 |

### 对象存储（S3）

| 指标 | 类型 | 说明 |
|------|------|------|
| `s3_request_count` | Counter | S3 请求总数（按 `type` 标签区分：get、put、delete） |
| `s3_request_size` | Counter | S3 传输字节数（按 `type` 标签区分） |
| `s3_request_time` | Histogram | S3 请求耗时（ms） |

### 集群

#### Gossip 协议

| 指标 | 类型 | 说明 |
|------|------|------|
| `gossip_cluster_size` | Gauge | 集群节点总数 |
| `gossip_events_originated_count` | Counter | 本节点产生的事件数 |
| `gossip_events_received_unique_count` | Counter | 接收到的去重事件数 |
| `gossip_events_dropped_count` | Counter | 丢弃的事件数 |
| `gossip_event_propagation_hops_count` | Histogram | 事件传播跳数分布 |

#### Anti-Entropy 同步

| 指标 | 类型 | 说明 |
|------|------|------|
| `anti_entropy_syncs_completed_count` | Counter | 同步成功次数 |
| `anti_entropy_syncs_failed_count` | Counter | 同步失败次数 |
| `anti_entropy_sync_duration_ms` | Histogram | 同步耗时（ms） |
| `anti_entropy_missing_events_detected_count` | Counter | 检测到的缺失事件数 |

### Stream 存储

| 指标 | 类型 | 说明 |
|------|------|------|
| `kas3_page_cache_hit_count` | Counter | 页缓存命中次数 |
| `kas3_page_cache_miss_count` | Counter | 页缓存未命中次数 |
| `kas3_page_cache_size` | Gauge | 当前页缓存大小（字节） |
| `kas3_online_running_tasks` | Gauge | 正在运行的在线 Compaction 任务数 |
| `kas3_segment_size` | Histogram | Segment 大小分布（字节） |
| `kas3_retention_time` | Histogram | Retention 处理耗时（ms） |

## 告警建议

| 关注点 | 建议告警条件 |
|--------|-------------|
| 连接异常 | `mqtt_connections` 骤降 |
| 消息积压 | `broker_messages_published_count` 持续增长而 `broker_messages_dispatched_count` 停滞 |
| S3 异常 | `s3_request_time` P99 飙升或 `s3_request_count`（type=get/put）出现失败 |
| 集群同步 | `anti_entropy_syncs_failed` 持续增长 |
| 消息丢弃 | `mqtt_messages_dropped_count` 持续增长 |

## 排障思路

1. 从业务现象定位到 Topic / Stream
2. 查看协议层指标（`mqtt_*` / `kafka_*`）确认连接与消息流是否正常
3. 查看路由层指标（`broker_*`）确认消息是否被正确分发
4. 查看存储层指标（`s3_*` / `kas3_*`）确认持久化是否正常
5. 查看集群层指标（`gossip_*` / `anti_entropy_*`）确认节点间同步状态
