螺旋测微器 flash_使用测微计收集应用程序指标

螺旋测微器 flash

什么是Micrometer?

Micrometer是一个简单的外观,用于以供应商中立的方式收集Java应用程序中的指标。 您可以考虑使用SLF4J作为指标。 Micrometer内置了对许多不同指标后端的内置支持,包括Atlas,Datadog,Elastic,JMX等。 在本文中,我们将看到如何在Java应用程序中使用Micrometer收集指标。

Micrometer依赖性

首先,我们需要将Micrometer依赖性添加到我们的项目中。 请注意,您需要根据要使用的指标后端选择正确的依赖关系。

在这里,我们选择JMX,因此我们需要micrometer-registry-jmx工件。

 < dependency > < groupId >io.micrometer</ groupId > < artifactId >micrometer-registry-jmx</ artifactId > < version >1.2.0</ version >  </ dependency > 

例如:如果要使用Elasticsearch而不是JMX,则需要添加micrometer-registry-elastic。

创建一个MeterRegistry

在开始收集指标之前,我们需要创建一个MeterRegistry。 MeterRegistry用于创建仪表,然后收集实际指标。

根据您要使用的指标后端,MeterRegistry是一个具有不同实现的界面。 最简单的MeterRegistry实现是SimpleMeterRegistry,它不会在任何地方导出数据。 它只是在内存中保存每个仪表的最新值。

 MeterRegistry registry = new SimpleMeterRegistry(); 

如果我们想将度量标准数据导出到JMX,则需要创建一个JmxMeterRegistry。

 MeterRegistry registry = new JmxMeterRegistry( new JmxConfig() { @Override public String get(String s) { return null ; }  }, Clock.SYSTEM); 

传递的JmxConfig实例的get()方法可用于提供其他配置值。 在我们的简单示例中,我们不需要此功能,因此我们只返回null。

如果要将指标导出到多个监视后端,则可以使用CompositeMeterRegistry。 CompositeMeterRegistry将数据传递给一个或多个其他注册表,使您可以将指标发布到多个指标后端。

例如:

 CompositeMeterRegistry registry = new CompositeMeterRegistry();  registry.add( new JmxMeterRegistry(..));  registry.add( new ElasticMeterRegistry(..)); 

仪表

仪表是用于收集指标的Micrometer接口。 仪表的示例实现是计数器,计时器和仪表。

创建一个柜台

我们可以使用一个简单的构建器API创建一个Counter:

 Counter counter = Counter .builder( "my.counter" ) .description( "counts something important" ) .tag( "environment" , "test" ) .tag( "region" , "us-east" ) .register(registry); 

这将创建一个名为my.counter的计数器,并将其添加到名为Registry的MeterRegistry中。 我们还可以向我们的计数器添加一个或多个标签和可选说明。 仪表通常创建一次,然后多次使用。

为了增加计数器的值,我们可以调用crement()方法:

 counter.increment(); // increment by one  counter.increment( 2.5 ); 

创建一个计时器

可以通过类似的方式创建计时器:

 Timer timer = Timer.builder( "my.timer" ).register(registry); 

在这里,我们跳过了可选参数,例如标记或说明。

现在,我们可以使用record()方法将计时指标添加到计时器中:

 // recording execution time of code  timer.record(() -> { // do something  });  // record a precomputed value  timer.record(Duration.ofMillis( 123 )); 

在JConsole中查看结果

由于我们使用的是JmxMeterRegistry,因此可以通过JMX访问我们的指标信息。 为此,我们可以使用JConsole ,可以通过在您的<jdk> / bin目录中执行jconsole来启动它。 连接到Java应用程序过程后,您可以在MBeans选项卡中找到当前的应用程序指标:

当然,如果使用其他MetricsRegistry,则必须使用其他工具来查看指标。 例如,如果您使用的是ElasticMeterRegistry,则可以使用Kibana。

摘要

Micrometer提供了易于使用的外观,可在Java应用程序中使用该外观来收集应用程序指标。 然后可以将这些指标信息导出到许多不同的后端技术(包括Elasticsearch和JMX)。 您可以在GitHub上找到示例的源代码。

翻译自: https://www.javacodegeeks.com/2019/12/collecting-application-metrics-with-micrometer.html

螺旋测微器 flash

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/331481.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java JNI调用C语言动态链接库(java.lang.UnsatisfiedLinkError: no yourClassName in java.library.path 异常的解决方法)

转自&#xff1a; http://watershitter.iteye.com/blog/477615今天花了至少3个小时跑这个java调c的动态链接库的Hello&#xff0c;native world的程序。 把所有犯的错误和要点总结一下! 1 java 中 c语言函数的声明 public native static void greeting(); //就像是接口声明一样…

Hadoop入门(二)集群安装

一、集群安装条件前置 在虚拟机上先准备一个机子 按用前面【安装单机hadoop】 已完成安装jdk,hadoop和ssh、网络等配置环境等。 虚拟机和操作系统 环境&#xff1a;ubuntu14 hadoop2.6jdk1.7ssh 虚拟机&#xff1a;&#xff08;vmware10&#xff09; 二、集群安装环境设置…

poj doubles_余数运算符在Java中用于Doubles

poj doubles我在OSU任教已近两年了&#xff0c;这总是令我惊讶&#xff0c;我从学生那里学到了多少。 例如&#xff0c;过去&#xff0c; 我让学生写一些我不理解的奇怪代码 。 在这一点上&#xff0c;即使经过300多个博客文章&#xff0c; 几个YouTube视频 &#xff0c;甚至还…

面向对象与面向过程

一、面向过程编程 面向过程编程是一种以过程为中心的编程思想,分析出解决问题的步骤&#xff0c;然后用函数把这些步骤一步一步实现。面向过程编程&#xff0c;数据和对数据的操作是分离的。二、面向对象编程 面向对象编程是将事物对象化&#xff0c;通过对象通信来解决问题。面…

本地方法(JNI)——数值参数与返回值

【0】README 1&#xff09; 本文部分文字描述 转自 core java volume 2 &#xff0c; 旨在理解 本地方法&#xff08;JNI&#xff09;——数值参数与返回值 的基础知识 &#xff1b; 2&#xff09; for source code, please visit https://github.com/pacosonTang/core-java…

class employe_Java 8 –集合sort()方法–按Employe对象(Id,名称,年龄)列出自定义排序示例

class employe有关在Java中对自定义对象进行排序的完整指南。 Collections.sort&#xff08;&#xff09;方法基于Comparable或Comparator实现进行排序。 用于对Employee对象进行排序的示例自定义排序 1.简介 在本教程中&#xff0c;您将学习如何在java中对Custom对象进行排序…

Spring入门(一)之简介

一、Spring定义 Spring是一个开源框架&#xff0c;Spring是于2003 年兴起的一个轻量级的Java 开发框架&#xff0c;由Rod Johnson创建。 简单来说&#xff0c;Spring是一个分层的JavaSE/javaEE full-stack(全栈的) 轻量级开源框架。 二、Spring框架特征 &#xff08;1&#xff…

本地方法(JNI)——访问域+字符串参数

【0】README 1&#xff09; 本文部分文字描述 转自 core java volume 2 &#xff0c; 旨在理解 本地方法&#xff08;JNI&#xff09;——访问域字符串参数 的基础知识 &#xff1b; 2&#xff09; for source code, please visit https://github.com/pacosonTang/core-java…

aws上负载均衡器标组端口_AWS CloudFormation:目标组没有关联的负载均衡器

aws上负载均衡器标组端口昨天&#xff0c;我使用AWS CloudFormation模板最终创建了ECS服务&#xff08;Fargate类型&#xff09;&#xff0c;还创建了包括应用程序负载均衡器&#xff0c;目标组和IAM角色的资源。 创建堆栈时&#xff0c;出现以下错误&#xff1a; 具有target…

Spring入门(二)之下载与安装

一、Spring下载 参考其他博客&#xff1a;http://www.cnblogs.com/yjmyzz/p/3847364.html或http://blog.csdn.net/xinzhujin/article/details/54319043 Spring下载地址为&#xff1a;http://repo.spring.io/release/org/springframework/spring/ 二、压缩包下的SpringFramewo…

HttpClient 4 API –获取状态代码-getStatusLine()。getStatusCode()示例

在HttpClient API中获取状态代码的快速指南。 getStatusLine&#xff08;&#xff09;。getStatusCode&#xff08;&#xff09;示例和相关的错误。 1.简介 在这个非常快速的教程中&#xff0c;我将展示如何使用HttpClient 4获取和验证HTTP响应的StatusCode。 2. Maven依赖 要…

Spring入门(三)之IoC

一、IoC定义IoC&#xff0c;即控制反转。开发者在使用类的实例之前&#xff0c;需要先创建对象的实例。但是IoC将创建实例的任务交给IoC容器&#xff0c;这样开发应用代码时只需要直接使用类的实例&#xff0c;这就是IoC。在讨论控制反转这个概念的过程中&#xff0c;Martin Fo…

云服务器的优点和缺点_为什么要使用云计算? 的优点和缺点

云服务器的优点和缺点在过去的几年中&#xff0c;云计算一直是IT界的热门话题。 像许多事物一样&#xff0c;当它第一次出现时&#xff0c;很多人都将其视为下一件大事&#xff0c;但是云计算确实达到了期望&#xff0c;并真正改变了当今信息技术业务部门的运作方式。 云计算由…

本地方法(JNI)——编码签名

【0】README 1&#xff09; 本文部分文字描述 转自 core java volume 2 &#xff0c; 旨在理解 本地方法&#xff08;JNI&#xff09;——编码签名 的基础知识 &#xff1b; 【1】编码签名相关 1&#xff09; 混编规则&#xff1a;为了访问实例域和调用用 java 定义的方法&a…

Shell入门(一)之简介

一、Shell 定义 &#xff08;1&#xff09;Shell Shell是一个用 C 语言编写的程序&#xff0c;它是用户使用 Linux 的桥梁。Shell 既是一种命令语言&#xff0c;又是一种程序设计语言。 &#xff08;2&#xff09;Shell 脚本&#xff08;shell script&#xff09; Shell 脚本…

aws dynamodb_使用适用于Java 2的AWS开发工具包的AWS DynamoDB版本字段

aws dynamodb将任何实体上的版本属性保存到 AWS DynamoDB数据库&#xff0c;它只是表示已修改实体次数的数字表示。 首次创建实体时&#xff0c;可以将其设置为1&#xff0c;然后在每次更新时递增。 好处是立竿见影的-指示实体已被修改的次数&#xff0c;可用于审核实体。 此…

本地方法(JNI)——调用 java 方法

【0】README 1&#xff09; 本文部分文字描述 转自 core java volume 2 &#xff0c; 旨在理解 本地方法&#xff08;JNI&#xff09;——调用 java 方法 的基础知识 &#xff1b; 2&#xff09; C语言调用java 方法&#xff0c;包括&#xff1a; 静态C 方法 和 非静态C 方法…

Shell入门(二)之变量

一、shell变量类型 shell变量一般只有两种类型&#xff1a;数值型与字符串型。 运行shell时&#xff0c;会同时存在三种变量&#xff1a; 1) 局部变量 局部变量在脚本或命令中定义&#xff0c;仅在当前shell实例中有效&#xff0c;其他shell启动的程序不能访问局部变量。 …

aws部署ssh_将Quarkus应用程序部署到AWS Elastic Beanstalk

aws部署sshElastic Beanstalk允许在AWS云中部署和管理应用程序&#xff0c;而无需了解运行这些应用程序的基础架构。 使用Elastic Beanstalk&#xff0c;您可以运行可处理HTTP请求的网站&#xff0c;Web应用程序或Web API&#xff0c;但也可以运行辅助应用程序以运行长任务。 …

本地方法(JNI)——访问数组元素+错误处理

【0】README 1&#xff09; 本文文字描述 均转自 core java volume 2 &#xff0c; 旨在理解 本地方法&#xff08;JNI&#xff09;——访问数组元素错误处理 的基础知识 &#xff1b; 2&#xff09;for source code, please visit : https://github.com/pacosonTang/core-j…