Skip to content

08. 监控指标 ​

目录 ​


1. 副本核心指标 ​

1.1 LeaderCount ​

yaml
# Leader 数量
metric: kafka.server:type=ReplicaManager,name=LeaderCount
描述: 当前 Broker 作为 Leader 的分区数
标签: 无
类型: Gauge
正常值: > 0

告警规则:
- alert: BrokerNoLeader
  expr: kafka_server_replicamanager_leadercount == 0
  for: 5m
  annotations:
    summary: "Broker has no leader partitions"
```yaml

### 1.2 PartitionCount

```yaml
# 分区总数
metric: kafka.server:type=ReplicaManager,name=PartitionCount
描述: 当前 Broker 托管的分区总数
标签: 无
类型: Gauge
正常值: > 0

监控示例:
- alert: LowPartitionCount
  expr: kafka_server_replicamanager_partitioncount < 10
  for: 10m
```yaml

### 1.3 UnderReplicatedPartitions

```yaml
# 复制不足的分区数
metric: kafka.server:type=ReplicaManager,name=UnderReplicatedPartitions
描述: ISR 副本数 < AR 副本数的分区数
标签: 无
类型: Gauge
正常值: 0

告警规则:
- alert: UnderReplicatedPartitions
  expr: kafka_server_replicamanager_underreplicatedpartitions > 0
  for: 5m
  annotations:
    summary: "{{ $value }} partitions are under replicated"
```yaml

---

## 2. ISR 相关指标

### 2.1 ISR 变化速率

```yaml
# ISR 扩展速率
metric: kafka.server:type=ReplicaManager,name=IsrExpandsPerSec
描述: ISR 扩展的速率 (每秒)
类型: Rate

# ISR 收缩速率
metric: kafka.server:type=ReplicaManager,name=IsrShrinksPerSec
描述: ISR 收缩的速率 (每秒)
类型: Rate

告警规则:
- alert: HighISRShrinkRate
  expr: rate(kafka_server_replicamanager_isrshrinkspersec[5m]) > 0.1
  for: 10m
  annotations:
    summary: "ISR shrinking rate is too high"

2.2 ISR 大小 ​

yaml
# ISR 平均大小
metric: kafka.cluster:type=Partition,name=IsrSize
描述: ISR 副本数
标签: topic, partition
类型: Gauge

查询示例:
# 平均 ISR 大小
avg(kafka_cluster_partition_isrsize) by (topic)

# ISR 小于配置的分区
kafka_cluster_partition_isrsize < 2
```yaml

---

## 3. 同步延迟指标

### 3.1 副本延迟

```yaml
# 副本 LEO 与 Leader LEO 的差距
metric: kafka.server:type=ReplicaFetcherManager,name=MaxLag
描述: 最大副本延迟 (字节数)
类型: Gauge

告警规则:
- alert: HighReplicaLag
  expr: kafka_server_replicafetchermanager_maxlag > 10000000
  for: 5m
  annotations:
    summary: "Replica lag is {{ $value }} bytes"
```yaml

### 3.2 拉取速率

```yaml
# 拉取请求速率
metric: kafka.server:type=ReplicaFetcherManager,name=RequestsPerSec
描述: 每秒拉取请求数
类型: Rate

# 拉取字节速率
metric: kafka.network:type=RequestMetrics,name=BytesOutPerSec,request=Fetch
描述: 每秒拉取字节数
类型: Rate
```yaml

---

## 4. Leader 选举指标

### 4.1 选举速率

```yaml
# Leader 选举速率
metric: kafka.controller:type=ControllerStats,name=LeaderElectionRateAndTimeMs
描述: Leader 选举速率和平均时间
类型: Rate

告警规则:
- alert: HighLeaderElectionRate
  expr: rate(kafka_controller_controllerstats_leaderelectionrateandtimems[5m]) > 0.1
  for: 10m
  annotations:
    summary: "Leader election rate is too high"

5. 监控告警配置 ​

5.1 Prometheus 配置 ​

yaml
# prometheus.yml
scrape_configs:
  - job_name: 'kafka'
    static_configs:
      - targets: ['localhost:9308']
    scrape_interval: 15s
```bash

### 5.2 Grafana Dashboard

```json
{
  "dashboard": {
    "title": "Kafka Replica Monitoring",
    "panels": [
      {
        "title": "Leader Count",
        "targets": [
          {
            "expr": "kafka_server_replicamanager_leadercount"
          }
        ]
      },
      {
        "title": "Under Replicated Partitions",
        "targets": [
          {
            "expr": "kafka_server_replicamanager_underreplicatedpartitions"
          }
        ]
      },
      {
        "title": "Replica Lag",
        "targets": [
          {
            "expr": "kafka_server_replicafetchermanager_maxlag"
          }
        ]
      }
    ]
  }
}

下一步: 故障排查