工作中使用kub-prometheus整理的一些指标项
k8s版本和prometheus版本可能会有不同,官网提供的标准指标说明,但指代的不是很明确,官方地址官网指标说明
pod指标
配置的最大内存:kube_pod_container_resource_limits_memory_bytes{namespace=“qiaofeng-namespace”,pod=“example-app-5467f47778-ktzgn”}
配置的最大cpu:kube_pod_container_resource_limits_cpu_cores{namespace=“qiaofeng-namespace”,pod=“example-app-5467f47778-ktzgn”}
内存使用率:sum(container_memory_working_set_bytes{namespace=“qiaofeng-namespace”,pod=“example-app-5467f47778-ktzgn”})by(pod)/sum(container_spec_memory_limit_bytes{namespace=“qiaofeng-namespace”,pod=“example-app-5467f47778-ktzgn”})by (pod)*100
cpu利用率:node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate{namespace=“qiaofeng-namespace”,container=“example-app”,pod=“example-app-5467f47778-ktzgn”}*100
一、cpu/内存/负载
- cpu
- 配置的最大cpu:kube_pod_container_resource_limits_cpu_cores{namespace=“qiaofeng-namespace”,pod=“example-app-5467f47778-ktzgn”}
- cpu使用率:
node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate{namespace=“qiaofeng-namespace”,container=“example-app”,pod=“example-app-5467f47778-ktzgn”}*100
- 内存
- 配置的最大内存(0表示没有配置):kube_pod_container_resource_limits_cpu_cores{namespace=“qiaofeng-namespace”,pod=“example-app-5467f47778-ktzgn”}
- 内存使用率: node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate{namespace=“qiaofeng-namespace”,container=“example-app”,pod=“example-app-5467f47778-ktzgn”}*100
- 系统平均负载–(低版本的k8s好像没这个指标)
-
1m间隔:container_cpu_load_average_10s{} -
10m间隔:container_cpu_load_average_10s{} -
15m间隔:container_cpu_load_average_10s{} 建议根据查询的步长来选择间隔时长
三、网络
- 网络接收(流入)
- 接收字节的累积计数变化量:idelta(container_network_receive_bytes_total{interface=“eth0”,namespace=“qiaofeng-namespace”,pod=“example-app-5849f9c9b-l7k8z”}[1m])
- 接收数据包的累积计数变化量:idelta(container_network_receive_packets_total{interface=“eth0”,namespace=“qiaofeng-namespace”,pod=“example-app-5849f9c9b-l7k8z”}[1m])
- 接收时遇到的错误累计数变化量:idelta(container_network_receive_errors_total{interface=“eth0”,namespace=“qiaofeng-namespace”,pod=“example-app-5849f9c9b-l7k8z”}[1m])
- 接收时丢弃的数据包的累积变化量:idelta(container_network_receive_packets_dropped_total{interface=“eth0”,namespace=“qiaofeng-namespace”,pod=“example-app-5849f9c9b-l7k8z”}[1m])
- 网络传输(流出)
-
传输字节的累积计数变化量:idelta(container_network_transmit_bytes_total{interface=“eth0”,namespace=“qiaofeng-namespace”,pod=“example-app-5849f9c9b-l7k8z”}[1m]) -
传输数据包的累积计数变化量:idelta(container_network_transmit_packets_total{interface=“eth0”,namespace=“qiaofeng-namespace”,pod=“example-app-5849f9c9b-l7k8z”}[1m]) -
传输时遇到的错误累积计数变化量:idelta(container_network_transmit_errors_total{interface=“eth0”,namespace=“qiaofeng-namespace”,pod=“example-app-5849f9c9b-l7k8z”}[1m]) -
传输时丢弃的数据包的累积计数变化量:idelta(container_network_transmit_packets_dropped_total{interface=“eth0”,namespace=“qiaofeng-namespace”,pod=“example-app-5849f9c9b-l7k8z”}[1m])
- 线程数
- 容器内运行的线程数:container_threads{namespace=“qiaofeng-namespace”,pod=“example-app-5849f9c9b-l7k8z”}
- 容器最大线程数:没读到该指标
jvm指标项
- 应用基本信息
- 项目运行状态:
up{namespace="$namespace", service="$service", pod="$pod"} - 项目运行时长(毫秒):
java_lang_Runtime_Uptime{namespace="$namespace", service="$service", pod="$pod"} - 项目start时刻(秒):
process_start_time_seconds{namespace="$namespace", service="$service", pod="$pod"} - jdk版本:
jvm_info{namespace="$namespace", service="$service", pod="$pod"}
- 堆内存
- 配置的最大堆内内存(Max Heap):
jvm_memory_bytes_max{namespace="$namespace", service="$service", pod="$pod", area="heap"} - 配置的最大堆外内存,没配置返回-1(Max NoHeap):
jvm_memory_bytes_max{namespace="$namespace", service="$service", pod="$pod",area="nonheap"} - 已使用堆内内存(Used_Heap) :
jvm_memory_bytes_used{namespace="$namespace", service="$service", pod="$pod",area="heap"} - 已使用堆外内存(Used_Heap) :
jvm_memory_bytes_used{namespace="$namespace", service="$service", pod="$pod",area="noheap"}
- jvm cpu
- 获取所在操作系统cpu百分比(system cpu Ratio):
java_lang_OperatingSystem_SystemCpuLoad{namespace="$namespace", service="$service", pod="$pod"} * 100 - ***应用所使用的cpu百分比(process cpu Ratio):
java_lang_OperatingSystem_ProcessCpuLoad{namespace="$namespace", service="$service", pod="$pod"} * 100 - ***应用所操作系统的cpu核数(System Cpus Count):
java_lang_OperatingSystem_AvailableProcessors{namespace="$namespace", service="$service", pod="$pod"} - ***应用所在操作系统的cpu使用率(System Cpus Ratio):
java_lang_OperatingSystem_SystemCpuLoad{namespace="$namespace", service="$service", pod="$pod"}
- jvm Total gc
- YGC 总次数(Total YGC):
jvm_gc_collection_seconds_count{namespace="$namespace", service="$service", pod="$pod",gc="Copy"} - FGC 总次数(Total FGC):
jvm_gc_collection_seconds_count{namespace="$namespace", service="$service", pod="$pod",gc="MarkSweepCompact"}
- jvm Count gcTime
- YGCT 总耗时-秒级别(Count YGCT):
jvm_gc_collection_seconds_sum{namespace="$namespace", service="$service", pod="$pod",gc="Copy"} - FGCT总耗时-秒级别(Count FGCT):
jvm_gc_collection_seconds_sum{namespace="$namespace", service="$service", pod="$pod",gc="MarkSweepCompact"}
- jvm Increment Gc Count 增量信息,
- 某时段发生的YGC总次数(Increment YGC Count ):
idelta(jvm_gc_collection_seconds_count{namespace="$namespace", service="$service", pod="$pod",gc="Copy"}[1m]) - 某时段发生的FGC总次数(Increment FGC Count)-数据粒度前端传:
idelta(jvm_gc_collection_seconds_count{namespace="$namespace", service="$service", pod="$pod",gc="MarkSweepCompact"}[1m]) - 某个时间段YGC增量的总时长) ( Increment YGC Time):
idelta(jvm_gc_collection_seconds_sum{namespace="$namespace", service="$service", pod="$pod",gc="Copy"}[1m]) - 某个时间段FGC增量的总时长) ( Increment FGC Time):
idelta(jvm_gc_collection_seconds_sum{namespace="$namespace", service="$service", pod="$pod",gc="Copy"}[1m])
- Threads 线程
-
线程数峰值-感觉没啥用: jvm_threads_peak{namespace="$namespace",service="$service",pod="$pod"} -
当前线程数: jvm_threads_current{namespace="$namespace",service="$service",pod="$pod"} -
jvm后台线程数守护线程数:jvm_threads_daemon{namespace="$namespace",service="$service",pod="$pod"} -
死锁线程数量: jvm_threads_deadlocked{namespace="$namespace",service="$service",pod="$pod"} -
获取某个状态的线程数–可以单开一个坐标轴,包含 -
- classes
- 获取当前jvm已加载数量:
jvm_classes_loaded - 从jvm运行开始加载的类的数量,这是一个Counter指标,递增:
jvm_classes_loaded_total - 获取每段时间加载的类数量:
idelta(jvm_classes_loaded_total{namespace="$namespace", service="$service", pod="$pod"}[1m]) - jvm运行后卸载的类数量,这是一个Counter指标:
jvm_classes_unloaded_total{namespace="$namespace", service="$service", pod="$pod"} - 获取每段时间卸载类数量:
idelta(jvm_classes_unloaded_total{namespace="$namespace", service="$service", pod="$pod"}[1m])
9)堆外内存之nio缓存内存(DirectByteBuffer)
获取分配的缓冲区大小:jvm_buffer_pool_capacity_bytes{pool=“direct”}
获取已经使用缓存区大小:jvm_buffer_pool_used_buffers{pool=“direct”}
|