k8s监控指标汇总,prometheus采集k8s原理解析

监控需求

我们使用k8s后一般需要监控一下大块指标

指标类型 采集源 应用举例 发现类型 grafana截图
容器基础资源指标 kubelet 内置cadvisor metrics接口 查看容器cpu、mem利用率等 k8s_sd node级别直接访问node_ip k8s监控指标汇总,prometheus采集k8s原理解析_第1张图片
k8s资源指标 kube-stats-metrics (简称ksm) 具体可以看从容器监控kube-stats-metrics看k8s众多组件
看pod状态如pod waiting状态的原因
数个数如:查看node pod按namespace分布情况
通过coredns访问域名 k8s监控指标汇总,prometheus采集k8s原理解析_第2张图片
k8s服务组件指标 服务组件 metrics接口 查看apiserver 、scheduler、etc、coredns请求延迟等 k8s_sd endpoint级别 k8s监控指标汇总,prometheus采集k8s原理解析_第3张图片
部署在pod中业务埋点指标 pod 的metrics接口 依据业务指标场景 k8s_sd pod级别,访问pod ip的metricspath

prometheus中的实现方式

鉴权/证书问题

我们在prometheus采集job中经常能看到下面的 token 证书配置,主要原因为

  • token用来做鉴权来访问metrics接口
  • apiserver可以采用tls双向认证,所以需要提供证书
  bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
  tls_config:
    ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
    insecure_skip_verify: true

prometheus通过 sa,clusterrolebinding来解决token、证书挂载问题

sa等配置: prometheus yaml中需要配置对应的saserviceAccountName
apiVersion: rbac.authorization.k8s.io/v1 # api的version
kind: ClusterRole # 类型
metadata:
  name: prometheus
rules:
- apiGroups: [""]
  resources: # 资源
  - nodes
  - nodes/proxy
  - services
  - endpoints
  - pods
  verbs: ["get", "list", "watch"] 
- apiGroups:
  - extensions
  resources:
  - ingresses
  verbs: ["get", "list", "watch"]
- nonResourceURLs: ["/metrics"]
  verbs: ["get"]
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: prometheus # 自定义名字
  namespace: kube-system # 命名空间
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: prometheus
roleRef: # 选择需要绑定的Role
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects: # 对象
- kind: ServiceAccount
  name: prometheus
  namespace: kube-system
配置好之后 k8s会将对应文件挂载到pod中
/ # ls /var/run/secrets/kubernetes.io/serviceaccount/ -l
total 0
lrwxrwxrwx    1 root     root            13 Jan  7 20:54 ca.crt -> ..data/ca.crt
lrwxrwxrwx    1 root     root            16 Jan  7 20:54 namespace -> ..data/namespace
lrwxrwxrwx    1 root     root            12 Jan  7 20:54 token -> ..data/token
/ # df -h |grep service
tmpfs                     7.8G     12.0K      7.8G   0% /var/run/secrets/kubernetes.io/serviceaccount
/ # 

手动curl访问

  • 配置TOKEN
TOKEN=$(kubectl -n kube-system  get secret $(kubectl -n kube-system  get serviceaccount prometheus -o jsonpath='{.secrets[0].name}') -o jsonpath='{.data.token}' | base64 --decode )
  • 访问对应接口,如apiserver
   curl  https://localhost:10259/metrics --header "Authorization: Bearer $TOKEN" --insecure     |head
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
      0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0# HELP apiserver_audit_event_total [ALPHA] Counter of audit events generated and sent to the audit backend.
    # TYPE apiserver_audit_event_total counter
    apiserver_audit_event_total 0
    # HELP apiserver_audit_requests_rejected_total [ALPHA] Counter of apiserver requests rejected due to an error in audit logging backend.
    # TYPE apiserver_audit_requests_rejected_total counter
    apiserver_audit_requests_rejected_total 0
    # HELP apiserver_client_certificate_expiration_seconds [ALPHA] Distribution of the remaining lifetime on the certificate used to authenticate a request.
    # TYPE apiserver_client_certificate_expiration_seconds histogram
    apiserver_client_certificate_expiration_seconds_bucket{le="0"} 0
    apiserver_client_certificate_expiration_seconds_bucket{le="1800"} 0
    100 36590    0 36590    0     0   194k      0 --:--:-- --:--:-- --:--:--  195k

下面来看下采集方式

容器基础指标

prometheus 采集配置
- job_name: kubernetes-nodes-cadvisor
  honor_timestamps: true
  scrape_interval: 30s
  scrape_timeout: 10s
  metrics_path: /metrics
  scheme: https
 
  kubernetes_sd_configs:
  - role: node
  bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
  tls_config:
    ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
    insecure_skip_verify: true
  relabel_configs:
  - separator: ;
    regex: __meta_kubernetes_node_label_(.+)
    replacement: $1
    action: labelmap
  - separator: ;
    regex: (.*)
    target_label: __metrics_path__
    replacement: /metrics/cadvisor
    action: replace
下面来解读下
  • 代表采用k8s服务发现 node
  kubernetes_sd_configs:
  - role: node
  • 表示服务发现后的node中标签以_meta_kubernetes_node_label_开头的key,替换为后面的字符串,举例__meta_kubernetes_node_label_kubernetes_io_arch="amd64" 这组keyv将被替换为 kubernetes_io_arch="amd64"
  relabel_configs:
      - separator: ;
        regex: __meta_kubernetes_node_label_(.+)
        replacement: $1
        action: labelmap
  • 表示采集url /metrics 被替换为/metrics/cadvisor
  - separator: ;
    regex: (.*)
    target_label: __metrics_path__
    replacement: /metrics/cadvisor
    action: replace

k8s资源指标

prometheus 采集配置
- job_name: kube-state-metrics
  honor_timestamps: true
  scrape_interval: 30s
  scrape_timeout: 10s
  metrics_path: /metrics
  scheme: http
  static_configs:
  - targets:
    - kube-state-metrics:8080
下面来解读下
  • 接口是http的而且没有鉴权,所以无需配置token和cert
  • target这里配置的是 kube-state-metrics:8080
  - targets:
    - kube-state-metrics:8080
  • 因为kube-state-metrics部署好之后有个service
apiVersion: v1
kind: Service
metadata:
  labels:
    app.kubernetes.io/name: kube-state-metrics
    app.kubernetes.io/version: v1.9.7
  name: kube-state-metrics
  namespace: kube-system
spec:
  clusterIP: None
  ports:
  - name: http-metrics
    port: 8080
    targetPort: http-metrics
  - name: telemetry
    port: 8081
    targetPort: telemetry
  selector:
    app.kubernetes.io/name: kube-state-metrics
  • k8s 会为service创建cordns解析,解析域名为 ${service_name}.${namespace}.svc.cluster.local ,ksm的域名fqdn为 kube-state-metrics.kube-system.svc.cluster.local
  • pod中的dns配置为search 3个域,所以配置成kube-state-metrics-kube-system:8080是可以的,当然也可以配置成kube-state-metrics.kube-system.svc:8080 kube-state-metrics.kube-system.svc.cluster.local:8080
/ # cat /etc/resolv.conf 
nameserver 10.96.0.10
search kube-admin.svc.cluster.local svc.cluster.local cluster.local
options ndots:5

k8s服务组件指标

apiserver prometheus 采集配置其中 etcd集成在apiserver中了
kube-controler coredns kube-scheduler等同理
- job_name: kubernetes-apiservers
  honor_timestamps: true
  scrape_interval: 30s
  scrape_timeout: 10s
  metrics_path: /metrics
  scheme: https
  kubernetes_sd_configs:
  - role: endpoints
  bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
  tls_config:
    ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
    insecure_skip_verify: false
  relabel_configs:
  - source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
    separator: ;
    regex: default;kubernetes;https
    replacement: $1
    action: keep
下面来解读下
  • endpoint资源是暴露一个服务的ip地址和port的列表
  • 代表采用k8s服务发现 endpoint,endpoint会非常多,所以需要过滤apiserver的
kubernetes_sd_configs:
- role: endpoints
  • 过滤手段为 标签 __meta_kubernetes_namespace匹配default并且 __meta_kubernetes_service_name 匹配kubernetes 并且 __meta_kubernetes_endpoint_port_name 匹配https,咋样呢 : keep
relabel_configs:
- source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
separator: ;
regex: default;kubernetes;https
replacement: $1
action: keep
  • k8s 会在default namespace中创建apiserver的 service
$ kubectl get svc -A |grep  443
default         kubernetes                                     ClusterIP   10.96.0.1               443/TCP                  9d
  • 最后获取到的endpoint转换为采集路径为: https://masterip:6443/metrics

pod业务埋点指标

采集配置
- job_name: kubernetes-pods
  honor_timestamps: true
  scrape_interval: 30s
  scrape_timeout: 10s
  metrics_path: /metrics
  scheme: http
  kubernetes_sd_configs:
  - role: pod
  relabel_configs:
  - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
    separator: ;
    regex: "true"
    replacement: $1
    action: keep
  - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
    separator: ;
    regex: (.+)
    target_label: __metrics_path__
    replacement: $1
    action: replace
  - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
    separator: ;
    regex: ([^:]+)(?::d+)?;(d+)
    target_label: __address__
    replacement: $1:$2
    action: replace
  - separator: ;
    regex: __meta_kubernetes_pod_label_(.+)
    replacement: $1
    action: labelmap
  - source_labels: [__meta_kubernetes_namespace]
    separator: ;
    regex: (.*)
    target_label: kubernetes_namespace
    replacement: $1
    action: replace
  - source_labels: [__meta_kubernetes_pod_name]
    separator: ;
    regex: (.*)
    target_label: kubernetes_pod_name
    replacement: $1
    action: replace
下面来解读下
  • pod的yaml需要在spec.template.metadata.annotations中配置 是否采集,端口,path信息
spec:
  selector:
    matchLabels:
      name: fluentd-elasticsearch
  template:
    metadata:
      labels:
        name: fluentd-elasticsearch
      annotations:
        prometheus.io/scrape: 'true'
        prometheus.io/port: '9102'
        prometheus.io/path: 'metrics'
  • 同时在采集配置中也做了label替换和过滤即
  • 过滤__meta_kubernetes_pod_annotation_prometheus_io_scrape = true的
  • 将 __meta_kubernetes_pod_annotation_prometheus_io_path这个key替换为 __metrics_path__(prometheus默认采集路径key)

-__address__,__meta_kubernetes_pod_annotation_prometheus_io_port 替换为__address__

  relabel_configs:
  - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
    separator: ;
    regex: "true"
    replacement: $1
    action: keep
  - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
    separator: ;
    regex: (.+)
    target_label: __metrics_path__
    replacement: $1
    action: replace
  - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
    separator: ;
    regex: ([^:]+)(?::d+)?;(d+)
    target_label: __address__
    replacement: $1:$2
    action: replace

指标汇总展示

cadvisor指标说明

cpu指标

夜莺指标名 含义 prometheus metrics或计算方式 说明
cpu.util 容器cpu使用占其申请的百分比 sum (rate (container_cpu_usage_seconds_total[1m])) by( container) /( sum (container_spec_cpu_quota) by(container) /100000) * 100 0-100的范围
cpu.idle 容器cpu空闲占其申请的百分比 100 - cpu.util 0-100的范围
cpu.user 容器cpu用户态使用占其申请的百分比 sum (rate (container_cpu_user_seconds_total[1m])) by( container) /( sum (container_spec_cpu_quota) by(container) /100000) * 100 0-100的范围
cpu.sys 容器cpu内核态使用占其申请的百分比 sum (rate (container_cpu_sys_seconds_total[1m])) by( container) /( sum (container_spec_cpu_quota) by(container) /100000) * 100 0-100的范围
cpu.cores.occupy 容器cpu使用占用机器几个核 rate(container_cpu_usage_seconds_total[1m]) 0到机器核数上限,结果为1就是占用1个核
cpu.spec.quota 容器的CPU配额 container_spec_cpu_quota 为容器指定的CPU个数*100000
cpu.throttled.util 容器CPU执行周期受到限制的百分比 sum by(container_name, pod_name, namespace) (increase(container_cpu_cfs_throttled_periods_total{container_name!=""}[5m])) /
sum by(container_name, pod_name, namespace) (increase(container_cpu_cfs_periods_total[5m])) * 100
0-100的范围
cpu.periods 容器生命周期中度过的cpu周期总数 counter型无需计算 使用rate/increase 查看
cpu.throttled.periods 容器生命周期中度过的受限的cpu周期总数 counter型无需计算 使用rate/increase 查看
cpu.throttled.time 容器被节流的总时间 ) counter型无需计算 单位(纳秒

mem指标

夜莺指标名 含义 prometheus metrics或计算方式 说明
mem.bytes.total 容器的内存限制 无需计算 单位byte 对应pod yaml中resources.limits.memory
mem.bytes.used 当前内存使用情况,包括所有内存,无论何时访问 container_memory_rss + container_memory_cache + kernel memory 单位byte
mem.bytes.used.percent 容器内存使用率 container_memory_usage_bytes/container_spec_memory_limit_bytes *100 范围0-100
mem.bytes.workingset 容器真实使用的内存量,也是limit限制时的 oom 判断依据 container_memory_max_usage_bytes > container_memory_usage_bytes >= container_memory_working_set_bytes > container_memory_rss 单位byte
mem.bytes.workingset.percent 容器真实使用的内存量百分比 container_memory_working_set_bytes/container_spec_memory_limit_bytes *100 范围0-100
mem.bytes.cached 容器cache内存量 container_memory_cache 单位byte
mem.bytes.rss 容器rss内存量 container_memory_rss 单位byte
mem.bytes.swap 容器cache内存量 container_memory_swap 单位byte

filesystem && disk.io指标

夜莺指标名 含义 prometheus metrics或计算方式 说明
disk.bytes.total 容器可以使用的文件系统总量 container_fs_limit_bytes (单位:字节)
disk.bytes.used 容器已经使用的文件系统总量 container_fs_usage_bytes (单位:字节)
disk.bytes.used.percent 容器文件系统使用百分比 container_fs_usage_bytes/container_fs_limit_bytes *100 范围0-100
disk.io.read.bytes 容器io.read qps rate(container_fs_reads_bytes_total)[1m] (单位:bps)
disk.io.write.bytes 容器io.write qps rate(container_fs_write_bytes_total)[1m] (单位:bps)

network指标

夜莺指标名 含义 prometheus metrics或计算方式 说明
net.in.bytes 容器网络接收数据总数 rate(container_network_receive_bytes_total)[1m] (单位:bytes/s)
net.out.bytes 容器网络积传输数据总数) rate(container_network_transmit_bytes_total)[1m] (单位:bytes/s)
net.in.pps 容器网络接收数据包pps rate(container_network_receive_packets_total)[1m] (单位:p/s)
net.out.pps 容器网络发送数据包pps rate(container_network_transmit_packets_total)[1m] (单位:p/s)
net.in.errs 容器网络接收数据错误数 rate(container_network_receive_errors_total)[1m] (单位:bytes/s)
net.out.errs 容器网络发送数据错误数 rate(container_network_transmit_errors_total)[1m] (单位:bytes/s)
net.in.dropped 容器网络接收数据包drop pps rate(container_network_receive_packets_dropped_total)[1m] (单位:p/s)
net.out.dropped 容器网络发送数据包drop pps rate(container_network_transmit_packets_dropped_total)[1m] (单位:p/s)
container_network_{tcp,udp}_usage_total 默认不采集是因为 --disable_metrics=tcp, udp ,因为开启cpu压力大

system指标

夜莺指标名 含义 prometheus metrics或计算方式 说明
sys.ps.process.count 容器中running进程个数 container_processes (单位:个)
sys.ps.thread.count 容器中进程running线程个数 container_threads (单位:个)
sys.fd.count.used 容器中打开文件描述符个数 container_file_descriptors (单位:个)
sys.fd.soft.ulimits 容器中root process Soft ulimit container_ulimits_soft (单位:个)
sys.socket.count.used 容器中打开套接字个数 container_sockets (单位:个)
sys.task.state 容器中task 状态分布 container_tasks_state (单位:个)

kube-apiserver metrics

指标名 类型 含义 说明
apiserver_request_total counter 请求总数
sum_by使用
按状态码code分布 2xx 3xx 4xx 5xx 等
按动作verb分布 list get watch post delete等
按资源resource分布: pod node endpoint等
apiserver_request_duration_seconds_sum gauge 请求延迟记录和 按动作verb分布 list get watch post delete等
按资源resource分布: pod node endpoint等
apiserver_request_duration_seconds_count gauge 请求延迟记录数 计算平均延迟: apiserver_request_duration_seconds_sum/apiserver_request_duration_seconds_count
apiserver_response_sizes_sum counter 请求响应大小记录和
apiserver_response_sizes_count counter 请求响应大小记录数
authentication_attempts counter 认证尝试数
authentication_duration_seconds_sum counter 认证耗时记录和
authentication_duration_seconds_count counter 认证耗时记录数
apiserver_tls_handshake_errors_total counter tls握手失败计数
apiserver_client_certificate_expiration_seconds_sum gauge 证书过期时间总数
apiserver_client_certificate_expiration_seconds_count gauge 证书过期时间记录个数
apiserver_client_certificate_expiration_seconds_bucket gauge 证书过期时间分布
apiserver_current_inflight_requests gauge 该量保存了最后一个窗口中,正在处理的请求数量的高水位线
apiserver_current_inqueue_requests gauge 是一个表向量, 记录最近排队请求数量的高水位线 apiserver请求限流
apiserver_flowcontrol_current_executing_requests gauge 记录包含执行中(不在队列中等待)请求的瞬时数量 APF api的QOS APIPriorityAndFairness
apiserver_flowcontrol_current_inqueue_requests gauge 记录包含排队中的(未执行)请求的瞬时数量
workqueue_adds_total counter wq 入队数
workqueue_retries_total counter wq retry数
workqueue_longest_running_processor_seconds gauge wq中最长运行时间
workqueue_queue_duration_seconds_sum gauge wq中等待延迟记录和
workqueue_queue_duration_seconds_count gauge wq中等待延迟记录数
workqueue_work_duration_seconds_sum gauge wq中处理延迟记录和
workqueue_work_duration_seconds_count gauge wq中处理延迟记录数

etcd metrics

指标名 类型 含义 说明
etcd_db_total_size_in_bytes gauge db物理文件大小
etcd_object_counts gauge etcd对象按种类计数
etcd_request_duration_seconds_sum gauge etcd请求延迟记录和
etcd_request_duration_seconds_count gauge etcd请求延迟记录数

kube-scheduler

指标名 类型 含义 说明
scheduler_e2e_scheduling_duration_seconds_sum gauge 端到端调度延迟记录和
scheduler_e2e_scheduling_duration_seconds_count gauge 端到端调度延迟记录数
scheduler_pod_scheduling_duration_seconds_sum gauge 调度延迟记录和 分析次数
scheduler_pod_scheduling_duration_seconds_count gauge 调度延迟记录数
scheduler_pending_pods gauge 调度队列pending pod数
scheduler_queue_incoming_pods_total counter 进入调度队列pod数
scheduler_scheduling_algorithm_duration_seconds_sum gauge 调度算法延迟记录和
scheduler_scheduling_algorithm_duration_seconds_count gauge 调度算法延迟记录数
scheduler_pod_scheduling_attempts_sum gauge 成功调度一个pod 的尝试次数记录和
scheduler_pod_scheduling_attempts_count gauge 成功调度一个pod 的尝试次数记录数

coredns

指标名 类型 含义 说明
coredns_dns_requests_total counter 解析请求数 A记录
AAAA记录
other记录
coredns_dns_responses_total counter 解析响应数 NOERROR
NXDOMAIN
REFUSED
coredns_cache_entries gauge 缓存记录数 成功或失败
coredns_cache_hits_total counter 缓存命中数 成功或失败
coredns_cache_misses_total counter 缓存未命中数 成功或失败
coredns_dns_request_duration_seconds_sum gauge 解析延迟记录和
coredns_dns_request_duration_seconds_count gauge 解析延迟记录数
coredns_dns_response_size_bytes_sum gauge 解析响应大小记录和
coredns_dns_response_size_bytes_count gauge 解析响应大小记录数

kube-scheduler

指标名 类型 含义 说明
scheduler_e2e_scheduling_duration_seconds_sum gauge 端到端调度延迟记录和
scheduler_e2e_scheduling_duration_seconds_count gauge 端到端调度延迟记录数
scheduler_pod_scheduling_duration_seconds_sum gauge 调度延迟记录和 分析次数
scheduler_pod_scheduling_duration_seconds_count gauge 调度延迟记录数
scheduler_pending_pods gauge 调度队列pending pod数
scheduler_queue_incoming_pods_total counter 进入调度队列pod数
scheduler_scheduling_algorithm_duration_seconds_sum gauge 调度算法延迟记录和
scheduler_scheduling_algorithm_duration_seconds_count gauge 调度算法延迟记录数
scheduler_pod_scheduling_attempts_sum gauge 成功调度一个pod 的尝试次数记录和
scheduler_pod_scheduling_attempts_count gauge 成功调度一个pod 的尝试次数记录数

kube-stats-metrics

pod metrics

指标名 类型 含义
kube_pod_status_phase gauge pod状态统计:
Pending
Succeeded
Failed
Running
Unknown
kube_pod_container_status_waiting counter pod处于waiting状态,值为1代表waiting
kube_pod_container_status_waiting_reason gauge pod处于waiting状态原因
ContainerCreating
CrashLoopBackOff pod启动崩溃,再次启动然后再次崩溃
CreateContainerConfigError
ErrImagePull
ImagePullBackOff
CreateContainerError
InvalidImageName
kube_pod_container_status_terminated gauge pod处于terminated状态,值为1代表terminated
kube_pod_container_status_terminated_reason gauge pod处于terminated状态原因
OOMKilled
Completed
Error
ContainerCannotRun
DeadlineExceeded
Evicted
kube_pod_container_status_restarts_total counter pod中的容器重启次数
kube_pod_container_resource_requests_cpu_cores gauge pod容器cpu limit
kube_pod_container_resource_requests_memory_bytes gauge pod容器mem limit(单位:字节)

deployment metrics

指标名 类型 含义
kube_deployment_status_replicas gauge dep中的pod num
kube_deployment_status_replicas_available gauge dep中的 可用pod num
kube_deployment_status_replicas_unavailable gauge dep中的 不可用pod num

daemonSet metrics

指标名 类型 含义
kube_daemonset_status_number_available gauge ds 可用数
kube_daemonset_status_number_unavailable gauge ds 不可用数
kube_daemonset_status_number_ready gauge ds ready数
kube_daemonset_status_number_misscheduled gauge 未经过调度运行ds的节点数
kube_daemonset_status_current_number_scheduled gauge ds目前运行节点数
kube_daemonset_status_desired_number_scheduled gauge 应该运行ds的节点数

daemonSet metrics

指标名 类型 含义
kube_statefulset_status_replicas gauge ss副本总数
kube_statefulset_status_replicas_current gauge ss当前副本数
kube_statefulset_status_replicas_updated gauge ss已更新副本数
kube_statefulset_replicas gauge ss目标副本数

Job metrics

指标名 类型 含义
kube_job_status_active gauge job running pod数
kube_job_status_succeeded gauge job 成功 pod数
kube_job_status_failed gauge job 失败 pod数
kube_job_complete gauge job 是否完成
kube_job_failed gauge job 是否失败

CronJob metrics

指标名 类型 含义
kube_cronjob_status_active gauge job running pod数
kube_cronjob_spec_suspend gauge =1代表 job 被挂起
kube_cronjob_next_schedule_time gauge job 下次调度时间
kube_cronjob_status_last_schedule_time gauge job 下次调度时间

PersistentVolume metrics

指标名 类型 含义
kube_persistentvolume_capacity_bytes gauge pv申请大小
kube_persistentvolume_status_phase gauge pv状态:
Pending
Available
Bound
Released
Failed

PersistentVolumeClaim metrics

指标名 类型 含义
kube_persistentvolumeclaim_resource_requests_storage_bytes gauge pvc request大小
kube_persistentvolumeclaim_status_phase gauge pvc状态:
Lost
Bound
Pending

node metrics

指标名 类型 含义
kube_node_status_condition gauge condition:
NetworkUnavailable
MemoryPressure
DiskPressure
PIDPressure
Ready
kube_node_status_allocatable_cpu_cores gauge 节点可以分配cpu核数
kube_node_status_allocatable_memory_bytes gauge 节点可以分配内存总量(单位:字节)
kube_node_spec_taint gauge 节点污点情况
kube_node_status_capacity_memory_bytes gauge 节点内存总量(单位:字节)
kube_node_status_capacity_cpu_cores gauge 节点cpu核数
kube_node_status_capacity_pods gauge 节点可运行的pod总数

你可能感兴趣的:(k8s监控指标汇总,prometheus采集k8s原理解析)