资讯专栏INFORMATION COLUMN

Prometheus hotspot监控指标解读

wuyangnju / 2326人阅读

摘要:架构相关概念监控虚拟机监控指标收集缓冲区监控指标。这是一个指标,与类似,可以对指标数据进行采样。内存区域的最大字节数内存区域的初始化字节数内存池使用情况内存池最大数内存池初始化数线程区域监控。线程峰值总启动线程数量,指标。

简介

Prometheus 是一套开源的系统监控报警框架。它启发于 Google 的 borgmon 监控系统,由工作在 SoundCloud 的 google 前员工在 2012 年创建,作为社区开源项目进行开发,并于 2015 年正式发布。2016 年,Prometheus 正式加入 Cloud Native Computing Foundation,成为受欢迎度仅次于 Kubernetes 的项目。

特性

强大的多维度数据模型:

时间序列数据通过 metric 名和键值对来区分。

所有的 metrics 都可以设置任意的多维标签。

数据模型更随意,不需要刻意设置为以点分隔的字符串。

可以对数据模型进行聚合,切割和切片操作。

支持双精度浮点类型,标签可以设为全 unicode。

灵活而强大的查询语句(PromQL):在同一个查询语句,可以对多个 metrics 进行乘法、加法、连接、取分数位等操作。

易于管理: Prometheus server 是一个多带带的二进制文件,可直接在本地工作,不依赖于分布式存储。

高效:平均每个采样点仅占 3.5 bytes,且一个 Prometheus server 可以处理数百万的 metrics。

使用 pull 模式采集时间序列数据,这样不仅有利于本机测试而且可以避免有问题的服务器推送坏的 metrics。

可以采用 push gateway 的方式把时间序列数据推送至 Prometheus server 端。

可以通过服务发现或者静态配置去获取监控的 targets。

有多种可视化图形界面。

易于伸缩。

架构 相关概念 hotspot 监控

Java Hotspot虚拟机监控指标收集

BufferPoolsExports

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());
    }
}

获取Mean类对象

获取可访问的MBean实例并添加到成员变量中

获取getName方法Method对象(缓冲池名称)

获取getMemoryUsed方法的Method对象(估算的jvm已使用内存大小)

获取getTotalCapacity方法的Method对象(预估的总的缓冲池大小)

获取getCount方法的Method对象(缓冲池中大致的数量)

collect()方法返回buffer pool指标收集器收集的所有指标信息。

jvm_buffer_pool_used_bytes

jvm缓冲区使用情况,包括Code Cache(编译后的代码缓存,不同版本的jvm默认大小不同)、PS Old Gen(老年代)、PS Eden Space(伊甸园)、PS Survivor Space(幸存者)、PS Perm Gen(永久代)。

jvm_buffer_pool_capacity_bytes

给定jvm的估算缓冲区大小。这个metrics数据没有收集到,可能和jvm的版本有关,部署服务器使用的是jdk 6。

jvm_buffer_pool_used_buffers

给定jvm的已使用缓冲区大小。这个metrics没有收集到,可能和jvm的版本有关,部署服务器使用的是jdk 6。

ClassLoadingExports

提供jvm类加载指标。
jvm类加载指标数据由ClassLoadingMXBean提供。

jvm_classes_loaded

当前jvm已加载类数量。

jvm_classes_loaded_total

从jvm运行开始加载的类的数量,这是一个Counter指标,递增。

jvm_classes_unloaded_total

jvm运行后卸载的类数量,这是一个Counter指标。生产环境一直是0。

GarbageCollectorExports

提供jvm 垃圾收集器指标,指标数据有GarbageCollectorMXBean列表提供。

jvm_gc_collection_seconds

这是一个Summary指标,与Histogram类似,可以对指标数据进行采样。

MemoryAllocationExports

内存分配情况指标,这个指标因java版本不兼容而没有做监控。

MemoryPoolsExports

jvm 内存区域指标。

jvm_memory_bytes_used

jvm已用内存区域。

jvm_memory_bytes_committed

Committed (bytes) of a given JVM memory area

jvm_memory_bytes_max

jvm内存区域的最大字节数

jvm_memory_bytes_init

jvm内存区域的初始化字节数

jvm_memory_pool_bytes_used

jvm内存池使用情况

jvm_memory_pool_bytes_committed

Committed bytes of a given JVM memory pool.

jvm_memory_pool_bytes_max

jvm内存池最大数

jvm_memory_pool_bytes_init

jvm内存池初始化数

ThreadExports

jvm线程区域监控。

jvm_threads_current

jvm当前线程数。

jvm_threads_daemon

jvm后台线程数。

jvm_threads_peak

jvm线程峰值

jvm_threads_started_total

jvm总启动线程数量,Counter指标。

jvm_threads_deadlocked

死锁线程数量

jvm_threads_deadlocked_monitor

Cycles of JVM-threads that are in deadlock waiting to acquire object monitors

jvm_threads_state

当前线程的状态

VersionInfoExports

jvm版本信息

jvm_info

版本信息,可以看到生产环境使用的是:1.6.0.29-b11

StandardExports

所有prometheus 客户端共有的标准指标。

process_cpu_seconds_total

用户和系统的总cpu使用时间

process_start_time_seconds

Start time of the process since unix epoch in seconds

process_open_fds

打开的文件描述符数量

process_max_fds

看支持打开的最大文件描述符数量

PromQL

todo

参考资料

Prometheus 入门与实践

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/74209.html

相关文章

  • 容器监控实践—node-exporter

    摘要:比如定义了基础的数据类型以及对应的方法收集事件次数等单调递增的数据收集当前的状态,比如数据库连接数收集随机正态分布数据,比如响应延迟收集随机正态分布数据,和是类似的库的详细解析可以参考本文为容器监控实践系列文章,完整内容见 概述 Prometheus从2016年加入CNCF,到2018年8月毕业,现在已经成为Kubernetes的官方监控方案,接下来的几篇文章将详细解读Promethu...

    Pink 评论0 收藏0
  • 容器监控实践—node-exporter

    摘要:比如定义了基础的数据类型以及对应的方法收集事件次数等单调递增的数据收集当前的状态,比如数据库连接数收集随机正态分布数据,比如响应延迟收集随机正态分布数据,和是类似的库的详细解析可以参考本文为容器监控实践系列文章,完整内容见 概述 Prometheus从2016年加入CNCF,到2018年8月毕业,现在已经成为Kubernetes的官方监控方案,接下来的几篇文章将详细解读Promethu...

    VPointer 评论0 收藏0
  • k8s与监控--解读prometheus监控kubernetes的配置文件

    摘要:前言是一个开源和社区驱动的监控报警时序数据库的项目。集群上部署的应用监控部署在集群上的应用。通过和的接口采集。相应,配置文件官方也提供了一份,今天我们就解读一下该配置文件。对于服务的终端节点,也需要加注解,为则会将作为监控目标。 前言 Prometheus 是一个开源和社区驱动的监控&报警&时序数据库的项目。来源于谷歌BorgMon项目。现在最常见的Kubernetes容器管理系统中,...

    UCloud 评论0 收藏0
  • Docker 监控实战

    摘要:监控告警是运营系统最核心的功能之一,腾讯内部有一套很成熟的监控告警平台,而且开发运维同学已经习惯这套平台,如果我们针对容器再开发一个监控告警平台,会花费很多精力,而且没有太大的意义。也是一款付费监控解决方案,计划收费方案是美分小时。 如今,越来越多的公司开始使用 Docker 了,现在来给大家看几组数据: 2 / 3 的公司在尝试了 Docker 后最终使用了它 也就是说 Docker...

    william 评论0 收藏0
  • k8s与监控--从kubernetes监控prometheus的federation机制

    摘要:也就是说整个监控系统不是部署在中。非的怎么监控是今天需要讨论的问题。官方给出的配置联邦机制也实现了的扩展。我们的集群外监控的方案就基于此。在同一个数据中心,每个监控其他的。上一级的监控数据中心级别的。 前言 有时候对于一个公司,k8s集群或是所谓的caas只是整个技术体系的一部分,往往这个时候监控系统不仅仅要k8s集群以及k8s中部署的应用,而且要监控传统部署的项目。也就是说整个监控系...

    wangym 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<