摘要:架构相关概念监控虚拟机监控指标收集缓冲区监控指标。这是一个指标,与类似,可以对指标数据进行采样。内存区域的最大字节数内存区域的初始化字节数内存池使用情况内存池最大数内存池初始化数线程区域监控。线程峰值总启动线程数量,指标。
简介
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虚拟机监控指标收集
BufferPoolsExportsJVM缓冲区监控指标。
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_bytesjvm缓冲区使用情况,包括Code Cache(编译后的代码缓存,不同版本的jvm默认大小不同)、PS Old Gen(老年代)、PS Eden Space(伊甸园)、PS Survivor Space(幸存者)、PS Perm Gen(永久代)。
给定jvm的估算缓冲区大小。这个metrics数据没有收集到,可能和jvm的版本有关,部署服务器使用的是jdk 6。
jvm_buffer_pool_used_buffers给定jvm的已使用缓冲区大小。这个metrics没有收集到,可能和jvm的版本有关,部署服务器使用的是jdk 6。
ClassLoadingExports提供jvm类加载指标。
jvm类加载指标数据由ClassLoadingMXBean提供。
当前jvm已加载类数量。
从jvm运行开始加载的类的数量,这是一个Counter指标,递增。
jvm_classes_unloaded_totaljvm运行后卸载的类数量,这是一个Counter指标。生产环境一直是0。
GarbageCollectorExports提供jvm 垃圾收集器指标,指标数据有GarbageCollectorMXBean列表提供。
jvm_gc_collection_seconds这是一个Summary指标,与Histogram类似,可以对指标数据进行采样。
内存分配情况指标,这个指标因java版本不兼容而没有做监控。
MemoryPoolsExportsjvm 内存区域指标。
jvm_memory_bytes_usedjvm已用内存区域。
Committed (bytes) of a given JVM memory area
jvm_memory_bytes_maxjvm内存区域的最大字节数
jvm_memory_bytes_initjvm内存区域的初始化字节数
jvm_memory_pool_bytes_usedjvm内存池使用情况
jvm_memory_pool_bytes_committedCommitted bytes of a given JVM memory pool.
jvm_memory_pool_bytes_maxjvm内存池最大数
jvm_memory_pool_bytes_initjvm内存池初始化数
ThreadExportsjvm线程区域监控。
jvm_threads_currentjvm当前线程数。
jvm_threads_daemonjvm后台线程数。
jvm_threads_peakjvm线程峰值
jvm_threads_started_totaljvm总启动线程数量,Counter指标。
jvm_threads_deadlocked死锁线程数量
jvm_threads_deadlocked_monitorCycles of JVM-threads that are in deadlock waiting to acquire object monitors
jvm_threads_state当前线程的状态
jvm版本信息
jvm_info版本信息,可以看到生产环境使用的是:1.6.0.29-b11
StandardExports所有prometheus 客户端共有的标准指标。
process_cpu_seconds_total用户和系统的总cpu使用时间
process_start_time_secondsStart time of the process since unix epoch in seconds
process_open_fds打开的文件描述符数量
process_max_fds看支持打开的最大文件描述符数量
PromQLtodo
参考资料Prometheus 入门与实践
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/74209.html
摘要:比如定义了基础的数据类型以及对应的方法收集事件次数等单调递增的数据收集当前的状态,比如数据库连接数收集随机正态分布数据,比如响应延迟收集随机正态分布数据,和是类似的库的详细解析可以参考本文为容器监控实践系列文章,完整内容见 概述 Prometheus从2016年加入CNCF,到2018年8月毕业,现在已经成为Kubernetes的官方监控方案,接下来的几篇文章将详细解读Promethu...
摘要:比如定义了基础的数据类型以及对应的方法收集事件次数等单调递增的数据收集当前的状态,比如数据库连接数收集随机正态分布数据,比如响应延迟收集随机正态分布数据,和是类似的库的详细解析可以参考本文为容器监控实践系列文章,完整内容见 概述 Prometheus从2016年加入CNCF,到2018年8月毕业,现在已经成为Kubernetes的官方监控方案,接下来的几篇文章将详细解读Promethu...
摘要:前言是一个开源和社区驱动的监控报警时序数据库的项目。集群上部署的应用监控部署在集群上的应用。通过和的接口采集。相应,配置文件官方也提供了一份,今天我们就解读一下该配置文件。对于服务的终端节点,也需要加注解,为则会将作为监控目标。 前言 Prometheus 是一个开源和社区驱动的监控&报警&时序数据库的项目。来源于谷歌BorgMon项目。现在最常见的Kubernetes容器管理系统中,...
摘要:监控告警是运营系统最核心的功能之一,腾讯内部有一套很成熟的监控告警平台,而且开发运维同学已经习惯这套平台,如果我们针对容器再开发一个监控告警平台,会花费很多精力,而且没有太大的意义。也是一款付费监控解决方案,计划收费方案是美分小时。 如今,越来越多的公司开始使用 Docker 了,现在来给大家看几组数据: 2 / 3 的公司在尝试了 Docker 后最终使用了它 也就是说 Docker...
摘要:也就是说整个监控系统不是部署在中。非的怎么监控是今天需要讨论的问题。官方给出的配置联邦机制也实现了的扩展。我们的集群外监控的方案就基于此。在同一个数据中心,每个监控其他的。上一级的监控数据中心级别的。 前言 有时候对于一个公司,k8s集群或是所谓的caas只是整个技术体系的一部分,往往这个时候监控系统不仅仅要k8s集群以及k8s中部署的应用,而且要监控传统部署的项目。也就是说整个监控系...
阅读 1770·2021-11-23 09:51
阅读 1229·2021-11-18 10:02
阅读 954·2021-10-25 09:44
阅读 2083·2019-08-26 18:36
阅读 1605·2019-08-26 12:17
阅读 1135·2019-08-26 11:59
阅读 2732·2019-08-23 15:56
阅读 3321·2019-08-23 15:05