监控指标是可观测服务提供的核心能力之一,对云平台的运维和管理起到了至关重要的作用。这里对云平台的服务、节点、命名空间等常用指标进行如下说明。
kube-apiserver
基于社区 kube-apiserver v1.28.2 定制。该组件负责暴露 Kubernetes API,是访问集群的唯一入口。kube-apiserver 提供了关于其性能和运行状况的相关指标,如请求延迟、响应大小等。
名称 | 类型 | 说明 |
---|---|---|
apiserver_request_duration_seconds_bucket | Histogram | 该指标用于统计 API Server 客户端对 API Server 不同请求的访问时延分布。 请求维度包括: 1. Verb:请求的类型,例如 GET、POST、PUT、DELETE等 2. Group:API 组,即相关 API 接口的集合,用于扩展 Kubernetes API 3. Version:API 版本,例如 v1、v1beta1 等 4. Resource:请求针对的资源类型,例如 Pod、Service、Lease 等 5. Subresource:资源的子资源,例如 Pod 详细信息、Pod 日志等 6. Scope:请求的范围,例如命名空间维度的资源(Namespace-scoped)或集群维度的资源(Cluster-scope) 7. Component:发起请求的组件的名称,例如 kube-controller-manager、kube-scheduler 等 API Server Histogram 的 Bucket 阈值为 {0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.25, 1.5, 1.75, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5, 6, 7, 8, 9, 10, 15, 20, 25, 30, 40, 50, 60}。单位:个。 |
apiserver_request_duration_seconds_sum | Counter | 对 API Server 不同请求的访问时延总和。请求维度 ,同上。单位:秒。 |
apiserver_request_duration_seconds_count | Counter | 对 API Server 不同请求的访问时延计数。请求维度 ,同上。单位:个。 |
apiserver_response_sizes_bucket | Histogram | 对 API Server 不同请求的响应大小分布。请求维度 ,同上。单位:个。 |
apiserver_response_sizes_sum | Counter | 对 API Server 不同请求的响应大小总和。请求维度 ,同上。单位:bytes。 |
apiserver_request_total | Counter | 对 API Server 不同请求的计数。请求维度包括 Verb、Group、Version、Resource、Subresource、Scope、Component、HTTP contentType(响应HTTP的数据格式)、HTTP code (响应的HTTP状态码)。单位:个。 |
up{job=”kube-apiserver-discovery”} | Gauge | 监控目标健康状态: 1:表示健康 0:表示异常 |
scrape_duration_seconds{job=”kube-apiserver-discovery”} | Gauge | Prometheus 每次拉取指标数据所花费的时间。单位:秒。 |
kube-scheduler
基于社区 kube-scheduler v1.28.2 定制。该组件在 Kubernetes 集群中负责调度容器到集群节点。kube-scheduler 提供了用于监控调度器性能和运行状况的相关指标,如调度器的调度延迟、调度队列 Pod 数量等。
名称 | 类型 | 说明 |
---|---|---|
scheduler_scheduler_cache_size | Gauge | 调度器缓存中节点、Pod 和 AssumedPod(假定要调度的 Pod)的数量。单位:个。 |
scheduler_pending_pods | Gauge | Pending Pod 的数量。队列种类如下: 1. unschedulable:unschedulableQ 的 Pod 数量,即不可调度的 Pod 数量 2. backoff:backoffQ的Pod 数量,即因为某种原因暂时不能被调度的 Pod 数量 3. active:activeQ的Pod 数量,即准备就绪并等待被调度的 Pod 数量 4. gated:gatedQ 的数量,即被阻塞并等待调度的 Pod 数量 单位:个。 |
scheduler_pod_scheduling_attempts_bucket | Histogram | 调度器成功调度 Pod 的尝试次数分布,Bucket 阈值为 {1, 2, 4, 8, 16}。单位:个。 |
rest_client_requests_total | Counter | 从状态值(Status Code)、方法(Method)和主机(Host)维度分析HTTP请求数。单位:个。 |
rest_client_request_duration_seconds_bucket | Histogram | 从方法(Verb)和 URL 维度分析 HTTP 请求时延分布,Bucket 阈值为 {0.001, 0.002, 0.004, 0.008, 0.016, 0.032, 0.064, 0.128, 0.256, 0.512}。单位:个。 |
up{job=”kube-scheduler-discovery”} | Gauge | 监控目标健康状态: 1:表示健康 0:表示异常 |
scrape_duration_seconds{job=”kube-scheduler-discovery”} | Gauge | Prometheus 每次拉取指标数据所花费的时间。单位:秒。 |
kube-controller-manager
基于社区 kube-controller-manager v1.28.2 定制。该组件在 Kubernetes 集群的控制平面,负责管理多种控制器,如 StatefulSet Controller、Deployment Controller 等。kube-controller-manager 提供了对其自身性能和健康状态的相关指标,如队列长度、请求时延等。
名称 | 类型 | 说明 |
---|---|---|
workqueue_adds_total | Counter | Workqueue 处理的新增事件(Adds)数量。单位:个。 |
workqueue_depth | Gauge | Workqueue 当前队列深度。如果队列深度长时间保持在较高水平,表明 Controller 不能及时处理队列中的任务,导致任务堆积。单位:个。 |
workqueue_queue_duration_seconds_bucket | Histogram | 任务在 Workqueue 中存在的时长。Bucket 阈值为 {10^(-8), 10^(-7), 10^(-6), 10^(-5), 10^(-4), 10^(-3), 10^(-2), 10^(-1), 1, 10}。单位:个。 |
rest_client_requests_total | Counter | 从状态值(Status Code)、方法(Method)和主机(Host)维度分析 HTTP 请求数。单位:个。 |
rest_client_request_duration_seconds_bucket | Histogram | 从方法(Verb)和 URL 维度分析 HTTP 请求时延分布,Bucket 阈值为 {0.001, 0.002, 0.004, 0.008, 0.016, 0.032, 0.064, 0.128, 0.256, 0.512}。单位:个。 |
up{job=”kube-controller-manager-discovery”} | Gauge | 监控目标健康状态: 1:表示健康 0:表示异常 |
scrape_duration_seconds{job=”kube-controller-manager-discovery”} | Gauge | Prometheus 每次拉取指标数据所花费的时间。单位:秒。 |
kubelet
基于社区 kubelet v1.28.2 定制。该组件是 Kubernetes 集群中的核心组件之一,负责管理节点上的容器和容器运行时。Kubelet 内部实现了一套自监控机制,生成了一系列反映节点以及容器整体状态的监控指标。
名称 | 类型 | 说明 |
---|---|---|
kubelet_volume_stats_available_bytes | Gauge | 挂载到节点上的持久卷(Persistent Volumes,PV)当前可用容量。单位:bytes。 |
kubelet_volume_stats_capacity_bytes | Gauge | 挂载到节点上的持久卷(Persistent Volumes,PV)总容量。单位:bytes。 |
up{job=”kubelet”} | Gauge | 监控目标健康状态: 1:表示健康 0:表示异常 |
scrape_duration_seconds{job=”kubelet”} | Gauge | Prometheus 每次拉取指标数据所花费的时间。单位:秒。 |
kubernetes-cadvisor
基于社区 kubelet v1.28.2 定制。该组件作为 kubelet 的一部分运行,负责收集容器和节点的性能和资源使用情况,包括 CPU、内存、网络等相关指标。并且 kubernetes-cadvisor 生成的监控数据用于支持 kubelet 的资源调度和管理。
名称 | 类型 | 说明 |
---|---|---|
container_cpu_usage_seconds_total | Counter | 容器累计使用的 CPU 时间。单位:秒。 |
container_memory_working_set_bytes | Gauge | 容器内存已使用量。单位:bytes。 |
container_network_receive_bytes_total | Counter | 容器网络累积接收数据流量。单位:bytes。 |
container_network_transmit_bytes_total | Counter | 容器网络累积传输数据流量。单位:bytes。 |
container_network_receive_packets_total | Counter | 容器网络累积接收数据包。单位:packets。 |
container_network_transmit_bytes_total | Counter | 容器网络累积发送数据包。单位:packets。 |
up{job=”kubernetes-cadvisor”} | Gauge | 监控目标健康状态: 1:表示健康 0:表示异常 |
scrape_duration_seconds{job=”kubernetes-cadvisor”} | Gauge | Prometheus 每次拉取指标数据所花费的时间。单位:秒。 |
kube-state-metrics
基于社区 kube-state-metrics v2.10.1 定制。该组件通过监听 Kubernetes API 服务生成相关监控指标。这些指标反映了 Kubernetes 内部各种资源对象的运行状况,如 pods、deployments 和 nodes 等。
名称 | 类型 | 说明 |
---|---|---|
kube_pod_info | Gauge | Pod 的相关信息,如 Pod 的名称、所在命名空间和所在节点等。 |
kube_pod_owner | Gauge | Pod 拥有者的信息,即Pod归属于某个控制器或对象管理。如 Deployment、ReplicaSet、DaemonSet和Node等。 |
kube_pod_status_phase | Gauge | Pod 当前阶段的状态: 1:表示成功(Succeeded)、运行(Running) 0:表示失败(Failed)、挂起(Pending)、未知(Unknown) |
kube_pod_container_status_waiting_reason | Gauge | 容器当前处于等待状态的原因,相关 reason 如下: CrashLoopBackOff:容器启动后崩溃 ImagePullBackOff:容器镜像无法拉取 ErrImagePull:尝试拉取镜像时发生错误 ContainerCreating:容器正在创建中 PodInitializing:Pod 正在初始化,容器等待 Pod 完成初始化 |
kube_pod_container_status_running | Gauge | 容器当前运行状态: 1:表示运行(Running) 0:表示停止(Stopped) |
kube_pod_container_status_ready | Gauge | 容器就绪状态: 1:表示就绪(Ready) 0:表示未就绪(NotReady) |
kube_pod_container_status_terminated_reason | Gauge | 容器当前处于终止状态的原因,相关 reason 如下: Completed:容器成功完成其预定任务并退出 Error:容器执行期间发生错误,导致其退出 OOMKilled:容器因为超出内存限制被操作系统终止(Out of Memory Killed) ContainerStopped:容器被手动停止或因为其他原因被停止 DeadlineExceeded:容器在指定的时间限制内没有完成其任务,超出时间限制被终止 |
kube_pod_container_status_restarts_total | Counter | 容器重启累计次数。单位:次。 |
kube_namespace_labels | Gauge | 命名空间的标签信息,如 Namespace 名称等。 |
kube_node_labels | Gauge | 节点的相关标签信息,如节点的名称、节点上相关服务启用/禁用的状态等。 |
kube_node_status_condition | Gauge | Kubernetes 节点的状态条件信息,包括节点 Status、Condition 等。 |
kube_node_status_capacity | Gauge | Kubernetes 节点的资源容量信息,如 CPU 的核数(Core),内存的大小(Byte),存储的容量(Byte)。 |
kube_persistentvolumeclaim_status_phase | Gauge | PVC 当前状态, 其中 phase 有以下几种状态: Bound:指标返回值为 0,表示 PVC 未绑定 PV;指标返回值为 1,表示 PVC 已绑定 PV Lost :指标返回值为 0,表示 PVC 未解绑 PV;指标返回值为 1,表示 PVC 已解绑 PV Pending :指标返回值为 0,表示 PVC 未挂起;指标返回值为 1,表示 PVC 已挂起 |
kube_resourcequota | Gauge | Kubernetes 资源配额的配置信息,包括配额限制大小、当前资源已使用量。 |
up{job=”kube-state-metrics”} | Gauge | 监控目标健康状态: 1:表示健康 0:表示异常 |
scrape_duration_seconds{job=”kube-state-metrics”} | Gauge | Prometheus 每次拉取指标数据所花费的时间。单位:秒。 |
etcd
基于社区 etcd v3.5.10 定制。该组件为 Kubernetes 提供了高可用、一致性的分布式存储服务。etcd 还内置了一些关键指标,包括 etcd 集群的健康状况、性能、请求处理等。
名称 | 类型 | 说明 |
---|---|---|
etcd_server_has_leader | Gauge | etcd 基于 Raft 实现一致性算法。在 Raft 中,etcd 会将集群中的某个成员(Member)选举为“Leader”,即主节点,而其他成员则作为“Follower”,即从节点。Leader 会定期向所有 Member 发送心跳,以保持集群稳定。此指标表示etcd Member中是否存在Leader: 1:有主节点 0:没有主节点 |
etcd_server_is_leader | Gauge | etcd Member是否是Leader: 1:是 0:不是 |
etcd_server_leader_changes_seen_total | Counter | 过去一段时间内,etcd Member 的切主次数,即 Leader 更换的次数。单位:次。 |
etcd_server_proposals_failed_total | Counter | 处理失败的 Proposal 数量。单位:个。 |
etcd_server_proposals_pending | Gauge | 正在等待处理的 Proposal 数量。单位:个。 |
etcd_disk_wal_fsync_duration_seconds_sum | Counter | etcd 在写入 WAL 时,进行文件同步操作所花费的时间。单位:秒。 |
etcd_disk_wal_fsync_duration_seconds_count | Counter | etcd 在写入 WAL 时,进行文件同步操作的次数。单位:次。 |
etcd_disk_wal_fsync_duration_seconds_bucket | Histogram | etcd 在写入 WAL 时,进行文件同步操作延迟分布。单位:个。 Bucket 阈值为{0.001, 0.002, 0.004, 0.008, 0.016, 0.032, 0.064, 0.128, 0.256, 0.512, 1.024, 2.048, 4.096, 8.192}。 |
etcd_disk_backend_commit_duration_seconds_sum | Counter | etcd 执行数据提交操作时所花费的总时间。单位:秒。 |
etcd_disk_backend_commit_duration_seconds_count | Counter | etcd 执行数据提交操作的次数。单位:次。 |
etcd_disk_backend_commit_duration_seconds_bucket | Histogram | etcd 执行数据提交操作所花费的时间分布。单位:个。 Bucket 阈值为{0.001, 0.002, 0.004, 0.008, 0.016, 0.032, 0.064, 0.128, 0.256, 0.512, 1.024, 2.048, 4.096, 8.192}。 |
up{job=”etcd”} | Gauge | 监控目标健康状态: 1:表示健康 0:表示异常 |
scrape_duration_seconds{job=”etcd”} | Gauge | Prometheus 每次拉取指标数据所花费的时间。单位:秒。 |
coredns
基于社区 coredns v1.10.1 定制。该组件为 Kubernetes 集群提供了灵活且功能强大的 DNS 服务。CoreDNS 还内置了一些关键指标,如 CoreDNS 的运行状态、性能和健康状况等。
名称 | 类型 | 说明 |
---|---|---|
coredns_cache_hits_total | Counter | CoreDNS 缓存命中个数。单位:个。 |
coredns_cache_misses_total | Counter | CoreDNS 缓存未命中个数。单位:个。 |
coredns_dns_requests_total | Counter | DNS 请求的总数。单位:个。 |
coredns_dns_responses_total | Counter | DNS 返回码的总数。单位:个。 |
coredns_dns_request_duration_seconds_sum | Counter | DNS 请求处理的总持续时间。单位:秒。 |
coredns_dns_request_duration_seconds_bucket | Histogram | DNS 请求处理的时延分布。单位:个。 Bucket 阈值为{0.001, 0.002, 0.004, 0.008, 0.016, 0.032, 0.064, 0.128, 0.256, 0.512, 1.024, 2.048, 4.096, 8.192}。 |
coredns_panics_total | Counter | CoreDNS 实例发生 Panic 次数。单位:次。 |
up{job=”coredns”} | Gauge | 监控目标健康状态: 1:表示健康 0:表示异常 |
scrape_duration_seconds{job=”coredns”} | Gauge | Prometheus 每次拉取指标数据所花费的时间。单位:秒。 |
ceph-mgr
基于社区 ceph-mgr v14.2.22 定制。该组件用于管理、配置和监控 Ceph 集群。其生成相关监控指标,包括 Ceph 集群的健康状态、性能、容量、对象和池统计等。
名称 | 类型 | 说明 |
---|---|---|
ceph_osd_metadata | Gauge | Ceph OSD (对象存储守护进程)元数据信息。 |
ceph_osd_up | Gauge | Ceph OSD状态: 1: Up 0: Down |
ceph_osd_in | Gauge | OSD 实例是否处于活动状态: 1:处于活动状态 0:处于非活动状态 |
ceph_osd_stat_bytes | Gauge | Ceph OSD 存储容量。单位:bytes。 |
ceph_osd_stat_bytes_used | Gauge | Ceph OSD 已使用的存储容量。单位:bytes。 |
ceph_osd_recovery_ops | Counter | Ceph OSD 处理恢复操作的次数。单位:次。 |
ceph_pool_metadata | Gauge | Ceph 存储池(Pool)元数据信息。 |
ceph_pool_stored | Gauge | Ceph 存储池中已使用的存储容量。单位:bytes。 |
ceph_pool_max_avail | Gauge | Ceph 存储池中可用的最大存储容量。单位:bytes。 |
ceph_pool_rd_iops | Gauge | Ceph 存储池中读操作的 IOPS。单位:操作次数每秒(IOPS)。 |
ceph_pool_wr_iops | Gauge | Ceph 存储池中写操作的 IOPS。单位:操作次数每秒(IOPS)。 |
ceph_pool_rd_throughput | Gauge | Ceph 存储池中读操作吞吐量。单位:字节每秒(Bps)。 |
ceph_pool_wr_throughput | Gauge | Ceph 存储池中写操作吞吐量。单位:字节每秒(Bps)。 |
ceph_cluster_total_bytes | Gauge | Ceph 集群总存储容量。单位:bytes。 |
ceph_cluster_total_used_bytes | Gauge | Ceph 集群中已使用的总存储容量。单位:bytes。 |
ceph_mon_quorum_status | Gauge | Ceph 存储控制服务状态: 1: Up 0:Down |
up{job=”ceph-mgr”} | Gauge | 监控目标健康状态: 1:表示健康 0:表示异常 |
scrape_duration_seconds{job=”ceph-mgr”} | Gauge | Prometheus 每次拉取指标数据所花费的时间。单位:秒。 |
node-exporter
基于社区 node-exporter v1.6.1 定制。该组件是通过 *NIX 内核暴露硬件和操作系统指标的 Prometheus 指标导出器。其生成的指标,包括节点的 CPU 、内存、磁盘 I/O、网络流量、文件系统、系统负载等。
名称 | 类型 | 说明 |
---|---|---|
node_load1 | Gauge | 节点1分钟内平均负载。 |
node_load5 | Gauge | 节点5分钟内平均负载。 |
node_load15 | Gauge | 节点15分钟内平均负载。 |
node_uname_info | Gauge | 节点操作系统的基本信息描述,包括节点的操作系统名称、操作系统的内核版本、构建内核版本的日期等。 |
node_procs_blocked | Gauge | 节点操作系统当前被阻塞的进程数。单位:个。 |
node_procs_running | Gauge | 节点操作系统当前正在运行的进程数。单位:个。 |
node_nf_conntrack_entries | Gauge | 节点 Netfilter 当前连接跟踪表(conntrack)条目数量。单位:个。 |
node_nf_conntrack_entries_limit | Gauge | 节点 Netfilter 连接跟踪表的最大条目限制数量。单位:个。 |
node_cpu_seconds_total | Counter | 节点 CPU 在不同的工作模式下累积消耗时间,模式包括: User :用户态(应用程序)消耗 CPU 的时间 System:内核态(操作系统内核)消耗 CPU 时间 Idle:CPU 处于空闲状态的时间 Iowait:CPU 等待 I/O 操作完成的时间 Irq:CPU 在处理硬中断(硬件中断)时消耗的时间 Softirq:CPU 在处理软中断(即软件中断)时消耗的时间 Nice:CPU 执行用户空间进程时,由于进程的优先级调整所消耗的时间 Steal:虚拟化环境中,当前虚拟机等待其他虚拟机释放 CPU 资源的时间 |
node_memory_MemFree_bytes | Gauge | 节点空闲的内存大小。单位:bytes。 |
node_memory_Buffers_bytes | Gauge | 节点缓冲区内存大小。单位:bytes。 |
node_memory_Cached_bytes | Gauge | 节点缓存大小。单位:bytes。 |
node_memory_Slab_bytes | Gauge | 节点操作系统内核缓存的大小。单位:bytes。 |
node_memory_MemTotal_bytes | Gauge | 节点物理内存总量。单位:bytes。 |
node_memory_HugePages_Total | Gauge | 节点操作系统中配置的大页(HugePages)总数量。单位:页(Pages)。 |
node_memory_HugePages_Free | Gauge | 节点操作系统中当前未使用的空闲大页(HugePages)的数量。单位:页(Pages)。 |
node_memory_Hugepagesize_bytes | Gauge | 节点操作系统中配置的每个大页(HugePages)的大小。单位:bytes。 |
node_disk_read_time_seconds_total | Counter | 节点磁盘读操作所消耗的总时间。单位:秒。 |
node_disk_write_time_seconds_total | Counter | 节点磁盘写操作所消耗的总时间。单位:秒。 |
node_disk_reads_completed_total | Counter | 节点磁盘完成的读操作次数。单位:次。 |
node_disk_writes_completed_total | Counter | 节点磁盘完成的写操作次数。单位:次。 |
node_disk_read_bytes_total | Counter | 成功读取节点磁盘的总字节数。单位:次。 |
node_disk_written_bytes_total | Counter | 成功写入节点磁盘的总字节数。单位:次。 |
node_disk_io_time_seconds_total | Counter | 磁盘 I/O 操作总共消耗的时间。单位:秒。 |
node_network_receive_errs_total | Counter | 节点网络接口接收数据包过程发生的错误总次数。单位:次。 |
node_network_transmit_errs_total | Counter | 节点网络接口发送数据包过程发生的错误总次数。单位:次。 |
node_network_receive_bytes_total | Counter | 节点网络接口接收的总数据流量。单位:bytes。device 代表集群中不同的网络类型,可选值如下: br-roller:部署网络 br-pub:控制台网络 br-mgmt:管理网络 br-storage:存储集群管理网络 br-storagepub:存储集群业务网络 |
node_network_transmit_bytes_total | Counter | 节点网络接口发送的总数据流量。单位:bytes。device 代表集群中不同的网络类型,可选值如下: br-roller:部署网络 br-pub:控制台网络 br-mgmt:管理网络 br-storage:存储集群管理网络 br-storagepub:存储集群业务网络 |
ecms_node_network_receive_byte_rate | Gauge | 【平台自研指标】节点网络接口接收的数据流量速率。单位:Bps。device 代表集群中不同的网络类型,可选值如下: br-vxlan:业务心跳网络 br-ex:外部网络 br-prv.*:私有网络,.* 表示平台支持对接多个私有网络 |
ecms_node_network_transmit_byte_rate | Gauge | 【平台自研指标】节点网络接口发送的数据流量速率。单位:Bps。device 代表集群中不同的网络类型,可选值如下: br-vxlan:业务心跳网络 br-ex:外部网络 br-prv.*:私有网络,.* 表示平台支持对接多个私有网络 |
node_network_receive_packets_total | Counter | 节点网络接口接受的总数据包。单位:packets。device 代表集群中不同的网络类型,可选值如下: br-roller:部署网络 br-pub:控制台网络 br-mgmt:管理网络 br-storage:存储集群管理网络 br-storagepub:存储集群业务网络 |
node_network_transmit_packets_total | Counter | 节点网络接口发送的总数据包。单位:packets。device 代表集群中不同的网络类型,可选值如下: br-roller:部署网络 br-pub:控制台网络 br-mgmt:管理网络 br-storage:存储集群管理网络 br-storagepub:存储集群业务网络 |
ecms_node_network_receive_packet_rate | Gauge | 【平台自研指标】节点网络接口接收的数据包速率。单位:pps。device 代表集群中不同的网络类型,可选值如下: br-vxlan:业务心跳网络 br-ex:外部网络 br-prv.*:私有网络,.* 表示平台支持对接多个私有网络 |
ecms_node_network_transmit_packet_rate | Gauge | 【平台自研指标】节点网络接口发送的数据包速率。单位:pps。device 代表集群中不同的网络类型,可选值如下: br-vxlan:业务心跳网络 br-ex:外部网络 br-prv.*:私有网络,.* 表示平台支持对接多个私有网络 |
up{job=”node-exporter”} | Gauge | 监控目标健康状态: 1:表示健康 0:表示异常 |
scrape_duration_seconds{job=”node-exporter”} | Gauge | Prometheus 每次拉取指标数据所花费的时间。单位:秒。 |