监控需求
我们使用k8s后一般需要监控一下四
大块指标
指标类型 | 采集源 | 应用举例 | 发现类型 | grafana截图 |
---|---|---|---|---|
容器基础资源指标 | kubelet 内置cadvisor metrics接口 | 查看容器cpu、mem利用率等 | k8s_sd node级别直接访问node_ip | ![]() |
k8s资源指标 | kube-stats-metrics (简称ksm) | 具体可以看从容器监控kube-stats-metrics看k8s众多组件 看pod状态如pod waiting状态的原因 数个数如:查看node pod按namespace分布情况 |
通过coredns访问域名 | ![]() |
k8s服务组件指标 | 服务组件 metrics接口 | 查看apiserver 、scheduler、etc、coredns请求延迟等 | k8s_sd endpoint级别 | ![]() |
部署在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总数 |