Micrometer

第 1-2 课:Spring Boot 2.0 都更新了什么(上)

故事扮演 提交于 2020-09-25 10:56:27
2018 年 3 月 1 号 Spring Boot 2.0.0.RELEASE 正式发布,这是 Spring Boot 1.0 发布 4 年之后第一次重大修订,因此有多新功能和特性值得关注!在 Spring Boot 官方博客中我们了解到:Spring Boot 2.0 版本经历了 17 个月的开发,有 215 个不同的使用者提供了超过 6800 次的提交。 我们将 Spring Boot 2.0 更新的技术分为三类进行解读: 第一类,基础环境升级; 第二类,默认软件替换和优化; 第三类,新技术的引入。 基础环境升级 最低 JDK 8,支持 JDK 9,不再支持 Java 6 和 7 Spring Boot 2.0 要求 Java 8 作为最低版本,许多现有的 API 已更新,以利用 Java 8 的特性。例如,接口上的默认方法,函数回调以及新的 API,如 javax.time。如果你正在使用 Java 7 或更早版本,则在开发 Spring Boot 2.0 应用程序之前,需要升级你的 JDK。 Spring Boot 2.0 通过测试可以在 JDK 9 下正常运行,同时 Spring Boot 2.0 宣布不再支持 Java 6 和 7,据我了解国内绝大部分互联网公司的基本环境还在 JDK 7 或者 6 环境下运行,考虑升级 Spring Boot 2.0

spring boot2 配置监控 prometheus+Grafana

久未见 提交于 2020-08-14 05:43:02
1.POM添加依赖包 <!--监控报警--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> </dependency> 2.添加配置 #prometheus配置 监控 management.metrics.export.prometheus.enabled=true management.metrics.export.prometheus.step=1ms management.metrics.export.prometheus.descriptions=true management.endpoint.prometheus.enabled=true management.endpoints.web.exposure.include=health,info,env,prometheus,metrics,httptrace,threaddump,heapdump

基于docker搭建Prometheus+Grafana监控报警系统

自闭症网瘾萝莉.ら 提交于 2020-08-12 14:28:19
下载prometheus等镜像: # prometheus镜像 docker pull docker.io/prom/prometheus # grafana镜像 docker pull docker.io/grafana/grafana # node-exporter:监控系统信息,这里先写下,暂时不用 docker pull docker.io/prom/node-exporter 一. Prometheus安装 1.1 编辑配置文件prometheus.yml 简单期间,本文使用Docker方式安装,其他方式安装请详见 Prometheus安装说明 。 # 第一步:建立相应文件夹 mkdir -p /opt/prometheus mkdir -p /opt/prometheus/server # mkdir -p /opt/prometheus/client touch /opt/prometheus/server/rules.yml # 后面报警系统使用 chmod 777 /opt/prometheus/server/rules.yml # 第二步:编辑配置文件prometheus.yml cd /opt/prometheus/ vi prometheus.yml # 第三步:prometheus.yml内容如下: 更多配置项详见 Prometheus

reactor.netty.http.client.HttpClient reactor.netty.http.server.HttpServe r metrics

对着背影说爱祢 提交于 2020-05-08 18:55:13
6.7. Metrics HTTP客户端支持与 Micrometer 内置集成. 它使用前缀 reactor.netty.http.client 公开所有度量. 下表提供了HTTP客户端指标的信息: 指标名称 type description reactor.netty.http.client.data.received DistributionSummary 接收到的数据量,以字节为单位 reactor.netty.http.client.data.sent DistributionSummary 发送的数据量(以字节为单位) reactor.netty.http.client.errors Counter 发生的错误数 reactor.netty.http.client.tls.handshake.time Timer TLS握手花费的时间 reactor.netty.http.client.connect.time Timer 连接到远程地址所花费的时间 reactor.netty.http.client.address.resolver Timer 解析地址所花费的时间 reactor.netty.http.client.data.received.time Timer 消耗传入数据所花费的时间 reactor.netty.http.client.data.sent

性能分析-java程序篇之案例-工具和方法

无人久伴 提交于 2020-05-01 04:28:03
1. 背景说明 线上服务响应时间超过40秒,登录服务器发现cpu将近100%了(如下图),针对此问题,本文说明排查过程、工具以定位具体的原因。 <img src="https://bingjava-blog.oss-cn-beijing.aliyuncs.com/site_imgs/perf01/性能分析01.png " width = "600" height = "200" alt="cpu使用率" align=center /> # 2. 分析排查过程 此类问题的排查,有两款神器可用,分别是async-profiler和arthas,async-profiler主要用于全局分析,通过此工具可以找到热点方法, 再用arthas对此热点方法进行详细的追踪,trace命令可以追踪方法的具体耗时,watch命令可以查看方法的出入参数,在结合源代码可以比较 方便定位到问题原因。下面记录排查过程: ## 2.1. 用async-profiler生成火焰图 到下载后,解压后如下所示: <img src="https://bingjava-blog.oss-cn-beijing.aliyuncs.com/site_imgs/perf01/java-perf-02.png" width = "600" height = "100" alt="async-profiler安装目录" align

聊聊Spring Boot Actuator

不羁的心 提交于 2020-04-29 15:53:28
概述 在本文中,我们将介绍Spring Boot Actuator。我们将首先介绍基础知识,然后详细讨论Spring Boot 1.x和2.x中的可用内容。 我们将在Spring Boot 1.x中学习如何使用,配置和扩展此监视工具。然后,我们将讨论如何利用反应式编程模型使用Boot 2.x和WebFlux进行相同的操作。 自2014年4月起,Spring Boot Actuator随Spring Boot一起发布。 随着SpringBoot2的发布,执行器进行了重新设计,并添加了新的激动人心的端点。本指南分为三个主要部分: 什么是执行器(Actuator) Spring Boot 1.x Actuator Spring Boot 2.x Actuator 👋: 执行器==Actuator 什么是执行器(Actuator) 本质上,执行器为我们的应用带来了生产就绪功能。 通过对他的依赖,监视我们的应用程序、收集度量、了解流量或数据库的状态变得轻松简单: 这个库的主要好处是,我们可以获得生产级工具,而不必亲自实现这些功能。Actuator主要用于公开有关正在运行的应用程序的操作信息-运行状况,指标,信息,转储,环境等。它使用HTTP端点或JMX Bean使我们能够与其交互。一旦在类路径上使用执行器,便可以立即使用几个端点。与大多数Spring模块一样

Google Cloud Metrics and MicroMeter JVM reporting (is this a Micrometer bug or?)

有些话、适合烂在心里 提交于 2020-04-18 05:47:07
问题 I finally got Micrometer(and it's JVM metrics) working in Google cloud by making the instance of cloud run of type Generic Task which allows me then to focus on the whole 'named' cluster of things so I can separate out production, or other clusters since they are called prod_name and staging_name. Now, it seems micrometer is reporting metrics with tags (instead of just changing the name of the metric) and google can't seem to separate out those tagged metrics to aggregate that stat in GCP. I

Google Cloud Metrics and MicroMeter JVM reporting (is this a Micrometer bug or?)

妖精的绣舞 提交于 2020-04-18 05:46:30
问题 I finally got Micrometer(and it's JVM metrics) working in Google cloud by making the instance of cloud run of type Generic Task which allows me then to focus on the whole 'named' cluster of things so I can separate out production, or other clusters since they are called prod_name and staging_name. Now, it seems micrometer is reporting metrics with tags (instead of just changing the name of the metric) and google can't seem to separate out those tagged metrics to aggregate that stat in GCP. I

聊聊jvm的CompressedClassSpace

白昼怎懂夜的黑 提交于 2020-03-02 05:47:29
序 本文主要研究一下jvm的CompressedClassSpace CompressedClassSpace java8移除了permanent generation,然后class metadata存储在native memory中,其大小默认是不受限的,可以通过-XX:MaxMetaspaceSize来限制 如果开启了-XX:+UseCompressedOops及-XX:+UseCompressedClassesPointers( 默认是开启 ),则UseCompressedOops会使用32-bit的offset来代表java object的引用,而UseCompressedClassPointers则使用32-bit的offset来代表64-bit进程中的class pointer;可以使用CompressedClassSpaceSize来设置这块的空间大小 如果开启了指针压缩,则CompressedClassSpace分配在MaxMetaspaceSize里头,即MaxMetaspaceSize=Compressed Class Space Size + Metaspace area (excluding the Compressed Class Space) Size 查看CompressedClassSpace大小 jcmd pid GC.heap_info / #

How to use Micrometer Timer to record duration of async method (returns Mono or Flux)

折月煮酒 提交于 2020-01-14 10:13:28
问题 I'd like to use Micrometer to record the execution time of an async method when it eventually happens. Is there a recommended way to do this? Example: Kafka Replying Template. I want to record the time it takes to actually execute the sendAndReceive call (sends a message on a request topic and receives a response on a reply topic). public Mono<String> sendRequest(Mono<String> request) { return request .map(r -> new ProducerRecord<String, String>(requestsTopic, r)) .map(pr -> { pr.headers()