> ## Documentation Index
> Fetch the complete documentation index at: https://docs.automq.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Prometheus Metrics

> Discover AutoMQ's comprehensive Prometheus metrics for enhanced performance insights with cloud-native scalability, full Kafka API compatibility, and cost efficiency.

本文将介绍 AutoMQ 的可观测指标定义，帮助你更好地了解 AutoMQ 的性能和运行状况。

<Info>
  AutoMQ 的指标采用 Prometheus 格式定义和展示，如有其他协议格式需求，需要自行转换。
</Info>

## 通用指标

### kafka\_server\_connection\_count

节点当前建立的连接数。

* Type: Gauge

### kafka\_network\_threads\_idle\_rate

Kafka SocketServer 网络线程的空闲率，范围：\[0， 1.0]。

* Type: Gauge

### kafka\_io\_threads\_idle\_time\_nanoseconds\_total

Kafka request handler 线程空闲时间，该指标为 Apache Kafka 原生指标 RequestHandlerAvgIdlePercent 的累计值，单位为纳秒，通过对时间（纳秒）求导可得线程空闲率。注意，当所在节点为组合节点（即同时作为 Controller 和 Broker）时，由于 Controller 和 Broker 分别拥有各自的 request handler，此时该指标为 Controller 和 Broker 的合计值，通过求导得出的线程空闲率最大值为 2.0。

* Type: Counter

## Controller 指标

### kafka\_controller\_active\_count

用于表示当前 Controller 节点是否为 active Controller，指标值等于 1 表示为 active，0 表示非 active。

* Type: Gauge

### kafka\_broker\_active\_count

当前集群的活跃 Broker 数量。

* Type: Gauge

### kafka\_broker\_fenced\_count

当前集群被 fence 的 Broker 数量。

* Type: Gauge

### kafka\_topic\_count

当前集群 Topic 总数。

* Type: Gauge

### kafka\_partition\_total\_count

当前集群分区总数。

* Type: Gauge

### kafka\_partition\_offline\_count

当前集群无主分区总数。

* Type: Gauge

### kafka\_stream\_auto\_balancer\_metrics\_time\_delay\_milliseconds

集群内各 Broker 节点上报 AutoBalancer 监控指标的延迟时间，延迟时间超过一定阈值时，该 Broker 节点即被 AutoBalancer 视为 out-of-sync 节点，不再参与 AutoBalancer 的分区调度。

* Type: Gauge

* Labels:

  * node\_id：上报 AutoBalancer 监控指标的节点 id

### kafka\_stream\_s3\_object\_count

当前集群上传至对象存储的 Object 总数，按 Object 状态分类。

* Type: Gauge

* Labels:

  * state：Object 状态，分以下三类：

    * prepared：还未完成写入，未被 commit 的对象

    * committed：已完成写入并被 commit 的对象

    * mark\_destroyed：被标记为删除的对象，在延迟一定时间后，对象将被从对象存储中删除

### kafka\_stream\_s3\_object\_size\_bytes

当前集群上传至对象存储的 Object 总大小。

* Type: Gauge

### kafka\_stream\_stream\_object\_num

当前集群上传至对象存储的 StreamObject 数量。

* Type: Gauge

### kafka\_stream\_stream\_set\_object\_num

当前集群各 Broker 上传至对象存储的 StreamSetObject 数量。

* Type: Gauge

* Labels:

  * node\_id：对应的 Broker 节点 id

## Broker 指标

### kafka\_message\_count\_total

Broker 节点收到的消息总数，对时间求导可得消息数量吞吐。

* Type: Counter

* Labels:

  * topic

### kafka\_network\_io\_bytes\_total

Broker 节点收到和发出的消息大小总量，对时间求导可得消息大小吞吐。

* Type: Counter

* Labels:

  * topic

  * partition

  * direction:

    * in: 表示收消息

    * out: 表示发消息

### kafka\_topic\_request\_count\_total

Broker 节点上各 Topic 收到的请求总数，仅包含 produce 和 fetch 两种类型请求。

* Type: Counter

* Labels:

  * topic

  * type：请求类型

    * produce

    * fetch

### kafka\_topic\_request\_failed\_total

Broker 节点上各 Topic 的请求失败总数，仅包含 produce 和 fetch 两种类型请求。

* Type: Counter

* Labels:

  * topic

  * type：请求类型

    * produce

    * fetch

### kafka\_request\_count\_total

Broker 节点收到的请求总数。

* Type: Counter

* Labels:

  * type：请求类型

  * version：该类型请求的 Api Version

### kafka\_request\_error\_count\_total

Broker 节点的请求失败总数，注意，即使成功的请求也会计入该指标内，成功请求的 error code 为 NONE。

* Type: Counter

* Labels:

  * type：请求类型

  * error：error code，NONE 表示该请求成功

### kafka\_request\_size\_bytes\_total

Broker 节点收到的请求大小总和。

* Type: Counter

* Labels:

  * type：请求类型

### kafka\_request\_size\_50p(99p/mean/max)\_bytes

Broker 节点收到的请求大小，按不同分位数表示。

* Type: Gauge

* Labels:

  * type：请求类型

### kafka\_request\_time\_milliseconds\_total

Broker 节点处理请求的耗时总和。

* Type: Counter

* Labels:

  * type：请求类型

### kafka\_request\_time\_50p(99p/mean/max)\_milliseconds

Broker 节点处理请求的耗时，按不同分位数表示。

* Type: Gauge

* Labels:

  * type：请求类型

### kafka\_request\_queue\_time\_milliseconds\_total

Broker 节点请求排队时间总和，当 Kafka IO 线程繁忙时，会导致请求排队时间上升。

* Type: Counter

* Labels:

  * type：请求类型

### kafka\_request\_queue\_time\_50p(99p/mean/max)\_milliseconds

Broker 节点请求排队时间，按不同分位数表示。

* Type: Gauge

* Labels:

  * type：请求类型

### kafka\_response\_queue\_time\_milliseconds\_total

Broker 节点的响应排队时间，当 Kafka Network 线程繁忙时，会导致响应排队时间上升。

* Type: Counter

* Labels:

  * type：请求类型

### kafka\_response\_queue\_time\_50p(99p/mean/max)\_milliseconds

Broker 节点响应排队时间，按不同分位数表示。

* Type: Gauge

* Labels:

  * type：请求类型

### kafka\_request\_queue\_size

Broker 节点的请求队列大小。

* Type: Gauge

### kafka\_response\_queue\_size

Broker 节点的响应队列大小。

* Type: Gauge

### kafka\_purgatory\_size

Broker 节点上等待 producer 或 fetch purgatory 的请求数量。

* Type: Gauge

* Labels:

  * type:

    * Produce

    * Fetch

### kafka\_partition\_count

Broker 节点当前分配的分区数量。

* Type: Gauge

### kafka\_logs\_flush\_time\_50p(99p/mean/max)\_milliseconds

Broker 节点的日志刷盘时间，在 AutoMQ 中，表示 Delta WAL 的刷盘时间，按不同分位数表示。

* Type: Gauge

### kafka\_log\_end\_offset

Broker 节点上各个分区的最大逻辑位点。

* Type: Gauge

* Labels:

  * topic

  * partition

### kafka\_log\_size

Broker 节点上各个分区的消息大小。

* Type: Gauge

* Labels:

  * topic

  * partition

### kafka\_group\_commit\_offset

各 Consumer Group 在对应分区上的消费位点，注意，该指标由各 Consumer Group 对应的 Group Coordinator 所在的 Broker 上报 。

* Type: Gauge

* Labels:

  * consumer\_group

  * topic

  * partition

### kafka\_group\_count

各 Group Coordinator 所在 Broker 节点负责管理的 Consumer Group 数量。

* Type: Gauge

### kafka\_group\_preparing\_rebalance\_count

正在准备进行 rebalance 的 Consumer Group 数量。

* Type: Gauge

### kafka\_group\_completing\_rebalance\_count

正在等待 Leader 进行状态分配的 Consumer Group 数量。

* Type: Gauge

### kafka\_group\_stable\_count

Stable 状态的 Consumer Group 数量。

* Type: Gauge

### kafka\_group\_empty\_count

无任何成员但还未过期的 Consumer Group 数量。

* Type: Gauge

### kafka\_group\_dead\_count

无任何成员，且 metadata 已被移除的 Consumer Group 数量。

* Type: Gauge

### kafka\_stream\_upload\_size\_bytes\_total

Broker 节点上传至对象存储的数据总大小。

* Type: Counter

### kafka\_stream\_download\_size\_bytes\_total

Broker 节点从对象存储下载的数据总大小。

* Type: Counter

### kafka\_stream\_network\_inbound\_usage\_bytes\_total

Broker 节点的总入带宽用量，包括接收消息，和从对象存储下载的数据量，对时间求导可得入流量吞吐。

* Type: Counter

### kafka\_stream\_network\_outbound\_usage\_bytes\_total

Broker 节点的总出带宽用量，包括消费消息，和上传至对象存储的数据量，对时间求导可得出流量吞吐。

* Type: Counter

### kafka\_stream\_network\_inbound\_available\_bandwidth\_bytes

Broker 节点预留给冷读和 Compaction 的入流量吞吐，当该值小于冷读和 Compaction 的入流量需求时，其对应的请求将被置入限流队列排队，正常消息收发流量不受该限流影响。注意，该指标值仅代表采样时的瞬时值，受限于采样间隔和限流策略的具体实现，该指标值仅供参考使用。

* Type: Gauge

### kafka\_stream\_network\_outbound\_available\_bandwidth\_bytes

Broker 节点预留给冷读和 Compaction 的出流量吞吐，当该值小于冷读和 Compaction 的出流量需求时，其对应的请求将被置入限流队列排队，正常消息收发流量不受该限流影响。注意，该指标值仅代表采样时的瞬时值，受限于采样间隔和限流策略的具体实现，该指标值仅供参考使用。

* Type: Gauge

### kafka\_stream\_network\_inbound\_limiter\_queue\_time\_50p(99p/mean/max)\_nanoseconds

冷读和 Compaction 的入流量请求得到执行时，其在限流队列中的排队时间。

* Type: Gauge

### kafka\_stream\_network\_outbound\_limiter\_queue\_time\_50p(99p/mean/max)\_nanoseconds

冷读和 Compaction 的出流量请求得到执行时，其在限流队列中的排队时间。

* Type: Gauge

### kafka\_stream\_operation\_latency\_50p(99p/mean/max)\_nanoseconds

AutoMQ S3Stream 模块各阶段的操作耗时。

* Type: Gauge

* Labels:

  * operation\_type

  * operation\_name

### kafka\_stream\_cert\_expiry\_timestamp\_milliseconds

此指标表示 TLS 证书过期的 UNIX 时间戳，以毫秒为单位。

* Type：gauge

* Labels:

  * instance: 实例 Id。

  * job: 任务标识符。

  * host\_name: 系统主机名。

  * cert\_subject: 证书主体。

  * cert\_type: 证书类型， `server_cert` 代表是服务端证书； `truststore_cert` 代表是 CA 证书。

### kafka\_stream\_cert\_days\_remaining

此指标表示距离当前时刻， TLS 证书过期剩余的天数。

* Type：gauge

* Labels:

  * instance: 实例 Id。

  * job: 任务标识符。

  * host\_name: 系统主机名。

  * cert\_subject: 证书主体。

  * cert\_type: 证书类型， `server_cert` 代表是服务端证书； `truststore_cert` 代表是 CA 证书。
