Prometheus 是一套开源的系统监控报警框架。它启发于 Google 的 borgmon 监控系统,由工作在 SoundCloud 的 google 前员工在 2012 年创建,作为社区开源项目进行开发,并于 2015 年正式发布。2016 年,Prometheus 正式加入 Cloud Native Computing Foundation,成为受欢迎度仅次于 Kubernetes 的项目。
强大的多维度数据模型:
Java Hotspot虚拟机监控指标收集
JVM缓冲区监控指标。
bufferPool指标是从MBean获取的,BufferPoolsExports构造函数:
public BufferPoolsExports() { try { final Class<?> bufferPoolMXBeanClass = Class.forName("java.lang.management.BufferPoolMXBean"); bufferPoolMXBeans.addAll(accessBufferPoolMXBeans(bufferPoolMXBeanClass)); getName = bufferPoolMXBeanClass.getMethod("getName"); getMemoryUsed = bufferPoolMXBeanClass.getMethod("getMemoryUsed"); getTotalCapacity = bufferPoolMXBeanClass.getMethod("getTotalCapacity"); getCount = bufferPoolMXBeanClass.getMethod("getCount"); } catch (ClassNotFoundException e) { LOGGER.fine("BufferPoolMXBean not available, no metrics for buffer pools will be exported"); } catch (NoSuchMethodException e) { LOGGER.fine("Can not get necessary accessor from BufferPoolMXBean: " + e.getMessage()); } }
collect()
方法返回buffer pool指标收集器收集的所有指标信息。
jvm缓冲区使用情况,包括Code Cache(编译后的代码缓存,不同版本的jvm默认大小不同)、PS Old Gen(老年代)、PS Eden Space(伊甸园)、PS Survivor Space(幸存者)、PS Perm Gen(永久代)。
给定jvm的估算缓冲区大小。这个metrics数据没有收集到,可能和jvm的版本有关,部署服务器使用的是jdk 6。
给定jvm的已使用缓冲区大小。这个metrics没有收集到,可能和jvm的版本有关,部署服务器使用的是jdk 6。
提供jvm类加载指标。
jvm类加载指标数据由 ClassLoadingMXBean
提供。
当前jvm已加载类数量。
从jvm运行开始加载的类的数量,这是一个Counter指标,递增。
jvm运行后卸载的类数量,这是一个Counter指标。生产环境一直是0。
提供jvm 垃圾收集器指标,指标数据有GarbageCollectorMXBean列表提供。
这是一个Summary指标,与Histogram类似,可以对指标数据进行采样。
内存分配情况指标,这个指标因java版本不兼容而没有做监控。
jvm 内存区域指标。
jvm已用内存区域。
Committed (bytes) of a given JVM memory area
jvm内存区域的最大字节数
jvm内存区域的初始化字节数
jvm内存池使用情况
Committed bytes of a given JVM memory pool.
jvm内存池最大数
jvm内存池初始化数
jvm线程区域监控。
jvm当前线程数。
jvm后台线程数。
jvm线程峰值
jvm总启动线程数量,Counter指标。
死锁线程数量
Cycles of JVM-threads that are in deadlock waiting to acquire object monitors
当前线程的状态
jvm版本信息
版本信息,可以看到生产环境使用的是:1.6.0.29-b11
所有prometheus 客户端共有的标准指标。
用户和系统的总cpu使用时间
Start time of the process since unix epoch in seconds
打开的文件描述符数量
看支持打开的最大文件描述符数量
todo
Prometheus 入门与实践