prometheus指标收集之pod实例、jvm

工作中使用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”}

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Prometheus是一个开源的监控系统,它通过收集和存储时间序列数据来实现对系统和服务的监控。在Prometheus中,指标(Metrics)是用于描述系统状态的基本单位。 指标收集是指通过在应用程序或系统中插入代码,将关键的性能指标和状态信息暴露给Prometheus进行监控。以下是一些常见的指标收集方法: 1. 客户端库:Prometheus提供了多种语言的客户端库,如Java、Go、Python等,可以在应用程序中使用这些库来暴露指标。通过调用相应的函数,可以将指标的值注册到Prometheus中。 2. Exporter:Exporter是一种特殊的应用程序,用于从其他系统或服务中提取指标数据,并将其转换为Prometheus可识别的格式。Prometheus提供了一些常见的Exporter,如Node Exporter(用于主机监控)、Blackbox Exporter(用于网络监控)等。 3. Instrumentation库:一些框架和库提供了内置的指标收集功能,可以直接使用这些功能来暴露指标。例如,Spring Boot框架提供了Actuator模块,可以方便地暴露应用程序的健康状况、请求统计等指标。 4. Pushgateway:Pushgateway是一种中间代理,允许临时性的任务将指标推送到Prometheus。这对于一些短暂的任务或者无法直接与Prometheus通信的任务非常有用。 5. Service Discovery:Prometheus支持多种服务发现机制,如静态配置、文件发现、Consul等。通过服务发现,Prometheus可以自动发现并监控新的目标。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值