工作中使用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/内存/负载

  1. 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

  1. 内存
  • 配置的最大内存(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
  1. 系统平均负载–(低版本的k8s好像没这个指标)
  • 1m间隔:container_cpu_load_average_10s{}

  • 10m间隔:container_cpu_load_average_10s{}

  • 15m间隔:container_cpu_load_average_10s{}

    建议根据查询的步长来选择间隔时长

三、网络

  1. 网络接收(流入)
  • 接收字节的累积计数变化量: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])
  1. 网络传输(流出)
  • 传输字节的累积计数变化量: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])

  1. 线程数
  • 容器内运行的线程数:container_threads{namespace=“qiaofeng-namespace”,pod=“example-app-5849f9c9b-l7k8z”}
  • 容器最大线程数:没读到该指标

jvm指标项

  1. 应用基本信息
  • 项目运行状态: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"}
  1. 堆内存
  • 配置的最大堆内内存(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"}
  1. 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"}
  1. 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"}
  1. 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"}
  1. 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])
  1. 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"}

  • 获取某个状态的线程数–可以单开一个坐标轴,包含

  • 在这里插入图片描述

  1. 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”}

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐