首页 > 其他分享 >Prometheus Micrometer jvm告警模版

Prometheus Micrometer jvm告警模版

时间:2024-08-22 16:38:33浏览次数:12  
标签:node seconds bytes Micrometer Prometheus jvm memory 100

基础说明

  • prometheus界面刚开始看起来非常让人疑惑,实际上它的语法非常强大;
  • prometheus既可以读取即使数据(Table),也可以展示趋势图(Graph);
  • Use local time:选择是否已当前时间展示趋势图

查询结构

筛选
内置命令{筛选条件1,筛选条件2}
时间周期内总和
(increase(内置命令[5m]))
固定时间内平均值
avg_over_time(内置命令{筛选条件}[时间段])
将结果按照某个维度进行加合,例如 instance
sum by(instance)(avg_over_time(内置命令{筛选条件}[时间段]))

基础语句

服务器

cpu5分钟内负载
node_load5
空闲内存
node_memory_MemFree_bytes
内存使用率
(node_memory_MemTotal_bytes - (node_memory_MemFree_bytes + node_memory_Buffers_bytes + node_memory_Cached_bytes)) / node_memory_MemTotal_bytes * 100 
磁盘使用百分比
((node_filesystem_size_bytes - node_filesystem_free_bytes) / node_filesystem_size_bytes)*100
TCP连接数
node_netstat_Tcp_CurrEstab
TCP WAIT

TCP关闭处于time-wait的链接数量

node_sockstat_TCP_tw
CPU使用时间详细信息
node_cpu_seconds_total

idle:CPU空闲状态

system:系统使用

user:用户使用

iowait:CPU等待磁盘读取花费的时间,也会直接用wait表示

idle + CPU总利用率 = 100%

一般system+user+idle+iowait 约等于100%

CPU利用率
100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)

解析

  • node_cpu_seconds_total{mode="idle"}:每个CPU的空闲时间
  • (rate(node_cpu_seconds_total{mode="idle"}[5m])):计算每个CPU空闲时间变化率(五分钟的维度)
  • avg by (instance)根据主机进行平均计算(应该是主机下多核CPU平均)
  • (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100):百分比形式计算CPU空闲率
  • 100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100):百分比形式计算CPU使用率
user对CPU的使用率

原理同上

(avg by(instance) (rate(node_cpu_seconds_total{mode="user"}[5m])) * 100)
system对CPU的使用率

原理同上

(avg by(instance) (rate(node_cpu_seconds_total{mode="system"}[5m])) * 100)

JVM

各种GC的次数
jvm_gc_pause_seconds_count
各种GC时常(秒)
jvm_gc_pause_seconds_sum
5分钟内各种GC次数
(increase(jvm_gc_pause_seconds_count[5m]))
5分钟内各种GC时间总和(秒)
(increase(jvm_gc_pause_seconds_sum[5m]))
20分钟内的minor GC(Yong GC)的次数
increase(jvm_gc_pause_seconds_count{action="end of minor GC"}[20m])
5分钟内major GC(FullGC)的次数
increase(jvm_gc_pause_seconds_count{action="end of major GC"}[5m])
已用各种JVM相关内存查看
jvm_memory_used_bytes
最大各种JVM相关内存查看
jvm_memory_max_bytes
计算各种内存使用率
(jvm_memory_used_bytes) * 100 / (jvm_memory_max_bytes)
JVM老年代利用率

这里筛选条件使用了通配符,是因为不同的垃圾回收器,对应的id是不同的

(jvm_memory_used_bytes{area="heap", id=~".*Old Gen"}) * 100 / (jvm_memory_max_bytes{area="heap", id=~".*Old Gen"})

G1:id=G1 Old Gen

默认的并行收集器:id="PS Old Gen"

其他等

JVM堆内存整体利用率
sum by(instance) (jvm_memory_used_bytes{area="heap"}) * 100 / sum by(instance) (jvm_memory_max_bytes{area="heap"})
元空间大小

最大与已用

jvm_memory_max_bytes{area="nonheap",id="Metaspace"}
jvm_memory_used_bytes{area="nonheap",id="Metaspace"}

注意,JVM启动命令未指定大小,则元空间无限大,获取值为 -1。命令参数如下

-XX:MetaspaceSize=68m :超过则触发Full GC

-XX:MaxMetaspaceSize=128m :设置最大值上限

元空间利用率
jvm_memory_used_bytes{area="nonheap",id="Metaspace"} * 100/jvm_memory_max_bytes{area="nonheap",id="Metaspace"}
JVM峰值线程
jvm_threads_peak_threads
JVM活跃线程
jvm_threads_live_threads
JVM活跃线程各种状态
jvm_threads_states_threads
  • terminated:终止状态,线程执行完毕或被stop操作。
  • timed-waiting:临时等待中,一般调用了sleep方法会维持这个状态,知道等待时间结束。
  • waiting:持久等待状态,一般调用了wait方法,线程进入无限等待状态中,直到被外部唤醒。
  • blocked:锁状态,线程等待锁的时候,处于这种状态。
  • new:新创建的线程。
  • runnable:正在运行的线程。
JVM守护线程
jvm_threads_daemon_threads

标签:node,seconds,bytes,Micrometer,Prometheus,jvm,memory,100
From: https://www.cnblogs.com/cheyunhua/p/18374215

相关文章

  • Prometheus 告警原理详解
    通俗易懂的一篇文章,主要介绍了Prometheus什么时候告警,什么时候不会告警。同时介绍了Prometheus告警原理。警报是监控系统中必不可少的一块,当然了,也是最难搞的一块.我们乍一想,警报似乎很简单一件事:假如发生了异常情况,发送或邮件/消息通知给某人或某频道。 一把......
  • Prometheus+Grafana监控Mysql数据库
    安装配置Prometheus是Go语言编写的,所以仅依赖二进制编译库,从官网根据操作系统下载对应的二进制库:https://prometheus.io/download/解压到/usr/local/prometheus目录下tar-xzvfprometheus-2.45.2.linux-amd64.tar.gzmvprometheus-2.45.2.linux-amd64/usr/local/prometheus......
  • 【JVM-双亲委派模型】
    在Java中,双亲委派模型是一种类加载机制。一、定义与工作原理当一个类加载器收到类加载的请求时,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成。只有当父类加载器无法完成加载请求(在它的搜索范围内找不到所需的类)时,子类加载器才会尝试自己去加载......
  • 【JVM-类加载器】
    在JVM中主要有以下几种类加载器:一、启动类加载器(BootstrapClassLoader)作用:负责加载JVM自身需要的核心类库,这些类库主要是Java安装目录下的jre/lib目录中的类。例如,加载Java的核心类库如java.lang包下的类,包括Object、String等。特点:由C/C++语言实现......
  • 【jvm】栈和堆的区别
    目录1.用途2.线程共享性3.内存分配和回收4.生命周期5.性能特点1.用途1.堆:主要用于存储对象实例和数组。在Java中,所有通过new关键字创建的对象都会被分配到堆上。堆是一个大的内存池,用于存储所有的Java对象,包括实例变量和数组。2.栈:主要用于存储局部变量、......
  • 《Prometheus监控实战》读书笔记
    监控简介Google服务层次结构图,监控是底座一些监控反模式:事后监控机械式监控不(够)准确的监控静态监控:不是说超过某个绝对阈值系统就一定出现问题,更有意义的监控是对比(环比)动态监控。数据库性能分析供应商VividCortex的首席执行官BaronSchwartz对此评论道[插图]:它们比一个停......
  • JVM
    JVM是什么:是操作系统上Java运行的环境。JVM内存结构模型:调优和垃圾回收都是在堆里的   双亲委派:各种类加载器是层级关系,Java文件首先会给父类加载,类加载器实际上就是很多jar包,每个类加载器会检查自己的jar包是否可以处理Java文件,不可以会给下一层,如果都不可以就会抛出异......
  • Prometheus部署教程——基于 HELM 方式
    作者乐维社区(forum.lwops.cn)许远背景随着容器化技术的飞速发展,Kubernetes已成为企业级容器编排的事实标准。为了确保容器化应用的稳定性和性能,有效的监控和告警系统显得尤为重要。因容器监控需要,某公司拟在k8s集群中搭建prometheus,计划通过Helm进行部署。Kubernetes原生应用......
  • 深入Java虚拟机JVM类加载学习笔记
    1.类加载过程----------以及风中叶老师在他的视频中给了我们一段程序,号称是世界上所有的Java程序员都会犯的错误加载---验证---准备---解析---初始化---使用---卸载诡异代码如下:packagetest01;classSingleton{ publicstaticSingletonsingleton=newSingleton();......
  • Java面试题--JVM大厂篇之未来已来:为什么ZGC是大规模Java应用的终极武器?
           ......