Spring Boot2.xx开启监控 Actuator

                       


spring boot actuator介绍

  • Spring Boot包含许多其他功能,可帮助您在将应用程序推送到生产环境时监视和管理应用程序。

  • 您可以选择使用HTTP端点或JMX来管理和监视应用程序。

  • 审核,运行状况和指标收集也可以自动应用于您的应用程序。


    总之Spring Boot Actuator就是一款可以帮助你监控系统数据的框架,其可以监控很多很多的系统数据,它有对应用系统的自省和监控的集成功能,可以查看应用配置的详细信息,如:
    显示应用程序员的Health健康信息

    显示Info应用信息

    显示HTTP Request跟踪信息

    显示当前应用程序的“Metrics”信息

    显示所有的@RequestMapping的路径信息

    显示应用程序的各种配置信息

    显示你的程序请求的次数 时间 等各种信息


引入Actuactor三角坐标依赖 

<!-- 端点监控的配置-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.hateoas</groupId>
    <artifactId>spring-hateoas</artifactId>
</dependency>

访问: http://localhost:9999/actuator/         响应信息如下所示

{
    "_links": {
        "self": {
            "href": "http://localhost:9999/actuator",
            "templated": false
        },
        "beans": {
            "href": "http://localhost:9999/actuator/beans",
            "templated": false
        },
        "caches-cache": {
            "href": "http://localhost:9999/actuator/caches/{cache}",
            "templated": true
        },
        "caches": {
            "href": "http://localhost:9999/actuator/caches",
            "templated": false
        },
        "health": {
            "href": "http://localhost:9999/actuator/health",
            "templated": false
        },
        "health-path": {
            "href": "http://localhost:9999/actuator/health/{*path}",
            "templated": true
        },
        "info": {
            "href": "http://localhost:9999/actuator/info",
            "templated": false
        },
        "conditions": {
            "href": "http://localhost:9999/actuator/conditions",
            "templated": false
        },
        "configprops": {
            "href": "http://localhost:9999/actuator/configprops",
            "templated": false
        },
        "configprops-prefix": {
            "href": "http://localhost:9999/actuator/configprops/{prefix}",
            "templated": true
        },
        "env": {
            "href": "http://localhost:9999/actuator/env",
            "templated": false
        },
        "env-toMatch": {
            "href": "http://localhost:9999/actuator/env/{toMatch}",
            "templated": true
        },
        "loggers": {
            "href": "http://localhost:9999/actuator/loggers",
            "templated": false
        },
        "loggers-name": {
            "href": "http://localhost:9999/actuator/loggers/{name}",
            "templated": true
        },
        "heapdump": {
            "href": "http://localhost:9999/actuator/heapdump",
            "templated": false
        },
        "threaddump": {
            "href": "http://localhost:9999/actuator/threaddump",
            "templated": false
        },
        "metrics-requiredMetricName": {
            "href": "http://localhost:9999/actuator/metrics/{requiredMetricName}",
            "templated": true
        },
        "metrics": {
            "href": "http://localhost:9999/actuator/metrics",
            "templated": false
        },
        "scheduledtasks": {
            "href": "http://localhost:9999/actuator/scheduledtasks",
            "templated": false
        },
        "mappings": {
            "href": "http://localhost:9999/actuator/mappings",
            "templated": false
        }
    }


访问health端点: http://localhost:9999/actuator/health  响应信息如下:

{
    "status": "UP",
    "components": {
        "diskSpace": {
            "status": "UP",
            "details": {
                "total": 1333606182912,
                "free": 1269725843456,
                "threshold": 10485760,
                "exists": true
            }
        },
        "elasticsearch": {
            "status": "UP",
            "details": {
                "cluster_name": "elasticsearch",
                "status": "green",
                "timed_out": false,
                "number_of_nodes": 1,
                "number_of_data_nodes": 1,
                "active_primary_shards": 0,
                "active_shards": 0,
                "relocating_shards": 0,
                "initializing_shards": 0,
                "unassigned_shards": 0,
                "delayed_unassigned_shards": 0,
                "number_of_pending_tasks": 0,
                "number_of_in_flight_fetch": 0,
                "task_max_waiting_in_queue_millis": 0,
                "active_shards_percent_as_number": 100.0
            }
        },
        "ping": {
            "status": "UP"
        },
        "r2dbc": {
            "status": "UP",
            "details": {
                "database": "Jasync-MySQL",
                "validationQuery": "validate(REMOTE)"
            }
        }
    }
}

开启 Info端点:  yml文件中配置

# 显示任意的应用信息,默认关闭 springBoot版本:2.7.5 CURRENT GA如果是更低一些的版本默认是开启的

# 在spring boot 2.0以后,actuator默认只开启了info和health两个端点,要想使用其他的端点,需要在application.yml中打开
management:
  endpoint:
    health:
      show-details: always  # 配置health端点显示详细信息
  info:
    env:
      enabled: true  # 显示任意的应用信息,默认关闭  springBoot版本:2.7.5 CURRENT  GA如果是更低一些的版本默认是开启的
  endpoints:
    web:
      exposure:
        include: "*"
      cors:
        allowed-headers: "*"

info:
  app:
    encoding: @project.build.sourceEncoding@
    java:
      source: @java.version@
      target: @java.version@

访问info端点: http://localhost:9999/actuator/info   响应信息如下:

{
    "app": {
        "encoding": "UTF-8",
        "java": {
            "source": "1.8.0_221",
            "target": "1.8.0_221"
        }
    }
}


拓展info端点:

package org.jd.websocket.auth.data.reactor.help;

import org.springframework.boot.actuate.info.Info;
import org.springframework.boot.actuate.info.InfoContributor;
import org.springframework.stereotype.Component;

import java.util.Collections;
import java.util.Date;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

@Component
public class CustomBuildInfoContributor implements InfoContributor {
    @Override
    public void contribute(Info.Builder builder) {
        Map<String,Object> details= new ConcurrentHashMap<>();
        details.put("build",Collections.singletonMap("timestamp",new Date()));
        details.put("author","YangGe");
        builder.withDetails(details);
    }
}


再次访问info端点: http://localhost:9999/actuator/info   响应信息如下: 


{
    "app": {
        "encoding": "UTF-8",
        "java": {
            "source": "1.8.0_221",
            "target": "1.8.0_221"
        }
    },
    "build": {
        "timestamp": "2023-08-07T15:14:28.463+00:00"
    },
    "author": "YangGe"
}











 

management:
  endpoints:
    web:
      base-path: /actuator  #配置端点访问前缀
      exposure:
        include: info,health  #只暴露info,health两个端点; “*” 表示暴露所有端点
        exclude: health  #可以将以暴露的端点排除(不暴露)
 


其他更细节的配置可以看官网

spring boot 热部署导入devtool依赖idea窗口钝化

yml yet anothor markup language

actuator是spring boot 提供的对应系统的自省和监控的基础功能,当出现问题时可以及时的定位问题。


拓展Metrics端点:

http://localhost:9999/actuator/metrics   访问该端点,响应信息如下

{
    "names":[
        "application.ready.time",
        "application.started.time",
        "disk.free",
        "disk.total",
        "executor.active",
        "executor.completed",
        "executor.pool.core",
        "executor.pool.max",
        "executor.pool.size",
        "executor.queue.remaining",
        "executor.queued",
        "http.server.requests",
        "jvm.buffer.count",
        "jvm.buffer.memory.used",
        "jvm.buffer.total.capacity",
        "jvm.classes.loaded",
        "jvm.classes.unloaded",
        "jvm.gc.live.data.size",
        "jvm.gc.max.data.size",
        "jvm.gc.memory.allocated",
        "jvm.gc.memory.promoted",
        "jvm.gc.overhead",
        "jvm.gc.pause",
        "jvm.memory.committed",
        "jvm.memory.max",
        "jvm.memory.usage.after.gc",
        "jvm.memory.used",
        "jvm.threads.daemon",
        "jvm.threads.live",
        "jvm.threads.peak",
        "jvm.threads.states",
        "logback.events",
        "process.cpu.usage",
        "process.start.time",
        "process.uptime",
        "system.cpu.count",
        "system.cpu.usage"
    ]
}

对应这些端点信息,用于实现生产级的度量工具. 这些指标包括内存总量,空闲内存数据,处理器数量,系统正常运行时间,堆信息等,如果想了解某项指标的信息,

http://localhost:9999/actuator/metrics

端点后加上上述指标的名称即可。如当前内存使用情况可以通过:

http://localhost:9999/actuator/metrics/jvm.memory.used  就会得到如下响应信息:


{
    "name":"jvm.memory.used",
    "description":"The amount of used memory",
    "baseUnit":"bytes",
    "measurements":[
        {
            "statistic":"VALUE",
            "value":479145136
        }
    ],
    "availableTags":[
        {
            "tag":"area",
            "values":[
                "heap",
                "nonheap"
            ]
        },
        {
            "tag":"id",
            "values":[
                "Compressed Class Space",
                "PS Survivor Space",
                "PS Old Gen",
                "Metaspace",
                "PS Eden Space",
                "Code Cache"
            ]
        }
    ]
}


http://localhost:9999/actuator/metrics/jvm.memory.usage.after.gc  gc回收内存的情况


{
    "name":"jvm.memory.usage.after.gc",
    "description":"The percentage of long-lived heap pool used after the last GC event, in the range [0..1]",
    "baseUnit":"percent",
    "measurements":[
        {
            "statistic":"VALUE",
            "value":0.0014572154044711605
        }
    ],
    "availableTags":[
        {
            "tag":"area",
            "values":[
                "heap"
            ]
        },
        {
            "tag":"pool",
            "values":[
                "long-lived"
            ]
        }
    ]
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

8月8日上课内容 研究nginx组件rewrite

location 匹配uri location 匹配的规则和优先级。&#xff08;重点&#xff0c;面试会问&#xff0c;必须理解和掌握&#xff09; nginx常用的变量&#xff0c;这个要求掌握 rewrite&#xff1a;重定向功能。有需要掌握&#xff0c;有需要理解的。 location匹配&#xff1a;…

用Vue实现页面访问拦截

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 页面访问拦截 1.创建axios实例 2.添加拦截器 3.全局前置守卫 可选的第三个参数 next 总结&#xff1a…

状态模式(C++)

定义 允许一个对象在其内部状态改变时改变它的行为。从而使对象看起来似乎修改了其行为。 应用场景 在软件构建过程中&#xff0c;某些对象的状态如果改变&#xff0c;其行为也会随之&#xff0c;而发生变化&#xff0c;比如文档处于只读状态&#xff0c;其支持的行为和读写…

使用 Python 和 Flask 构建简单的 Restful API 第 1 部分

一、说明 我将把这个系列分成 3 或 4 篇文章。在本系列的最后&#xff0c;您将了解使用flask构建 restful API 是多么容易。在本文中&#xff0c;我们将设置环境并创建将显示“Hello World”的终结点。 我假设你的电脑上安装了python 2.7和pip。我已经在python 2.7上测试了本文…

无涯教程-Perl - fcntl函数

描述 该函数是系统fcntl()函数的Perl版本。使用FILEHANDLE上的SCALAR执行FUNCTION指定的功能。 SCALAR包含函数要使用的值,或者是任何返回信息的位置。 语法 以下是此函数的简单语法- fcntl FILEHANDLE, FUNCTION, SCALAR返回值 该函数返回0,但如果fcntl()的返回值为0,则返…

【Go语言】Golang保姆级入门教程 Go初学者chapter2

【Go语言】变量 VSCode插件 setting的首选项 一个程序就是一个世界 变量是程序的基本组成单位 变量的使用步骤 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zuxG8imp-1691479164956)(https://cdn.staticaly.com/gh/hudiework/imgmain/image-20…

CAD随机球体颗粒过渡区3D插件

插件介绍 CAD随机球体颗粒&过渡区3D插件可用于在AutoCAD软件内生成随机分布的球体及球体外侧过渡区部件&#xff0c;适用于科研绘图、有限元建模如混凝土细观、颗粒增强复合材料、随机三维骨料及过渡区等方面的应用。 插件可指定的参数有模型的长、宽、高&#xff1b;球…

< JavaScript小技巧:如何优雅的用【一行代码 】实现Js中的常用功能 >

文章目录 &#x1f4ac; 前言&#x1f449; 数组相关① 随机打乱数组顺序② 借助 new Set&#xff08;&#xff09;对数组去重 / 对象数组根据唯一值去重③ 查找数组中 【 最值 】 出现的索引 &#x1f449; Web浏览器相关① 重新加载当前页面&#xff0c;相当于 Ctrl R② 滚动…

解决VScode远程服务器时opencv和matplotlib无法直接显示图像的问题

解决VScode远程服务器时opencv和matplotlib无法直接显示图像的问题 1、本方案默认本地已经安装了VScode与MobaXterm2、在服务器端3、在本地端安装MobaXterm4、测试5、opencv显示测试&#xff08;测试过程中需保持MobaXterm开启的状态&#xff09;6、 matplotlib显示测试&#x…

VSCode Remote-SSH (Windows)

1. VSCode 安装 VSCode 2. 安装扩展 Remote SSH Getting started Follow the step-by-step tutorial or if you have a simple SSH host setup, connect to it as follows: Press F1 and run the Remote-SSH: Open SSH Host… command.Enter your user and host/IP in the …

qemu 虚拟化

一、介绍QEMU Qemu是种非常古老的虚拟化技术&#xff0c;用于虚拟化系统组件并在其上运行多种CPU架构的程序或操作系统。 借助KVM&#xff0c;Qemu可以通过使用基于硬件的虚拟化来获得超快的计算速度。QEMU充当硬件供应商&#xff0c;KVM是CPU。KVM驻留在Linux内核中&#xff0…

Linux下的环境变量

目录 一、环境变量是什么&#xff1f;二、常见的环境变量三、查看环境变量的方法四、和环境变量相关的命令五、命令行参数五、环境变量通常是具有全局属性的 一、环境变量是什么&#xff1f; 环境变量通俗来说就是一种存储系统和应用程序运行需要的配置信息的方式。可以把环境…

Mr. Cappuccino的第57杯咖啡——简单手写Mybatis大致原理

简单手写Mybatis大致原理 大致原理项目结构项目代码代码测试 大致原理 底层基于JDK动态代理技术实现 项目结构 项目代码 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns…

Flutter 自定义view

带进度动画的圆环。没gif&#xff0c;效果大家自行脑补。 继承CustomPainter&#xff0c;paint()方法中拿到canvas&#xff0c;绘制API和android差不多。 import package:flutter/material.dart;class ProgressRingPainter extends CustomPainter {double strokeWidth 20;Col…

整数规划——第三章 全单模矩阵

整数规划——第三章 全单模矩阵 若线性规划问题的约束矩阵为全单模矩阵&#xff0c;则该问题可行域的顶点都是整数点&#xff0c;从而线性规划与整数规划的最优解相同。 3.1 全单模性与最优性 考虑线性整数规划问题&#xff1a; (IP) min ⁡ c T x , s . t . A x ≤ b , x …

MATLAB的设置路径

在主页下的 或者在命令行输入path&#xff0c;命令行会出现所有路径 必须要将某些函数.m文件以及一些类文件包含在路径当中&#xff0c;否则在脚本代码中输入代码时&#xff0c;不会有代码提示

LeetCode96. 不同的二叉搜索树

96. 不同的二叉搜索树 文章目录 [96. 不同的二叉搜索树](https://leetcode.cn/problems/unique-binary-search-trees/)一、题目二、题解 一、题目 给你一个整数 n &#xff0c;求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种&#xff1f;返回满足题意的…

SpringBoot整合达梦数据库

近期接到了一个需要国产化的项目&#xff0c;用到了达梦数据库&#xff0c;没想到一开始配置就出现了问题&#xff0c;下面把配置给大家粘贴出来&#xff0c;大家少踩点坑。 一、先下载达梦数据库 这是达梦数据库下载链接&#xff0c;达梦数据库没有免费的&#xff0c;个人好…

Flask 是什么?Flask框架详解及实践指南

Flask 是一个轻量级的 Python Web 框架&#xff0c;它被广泛用于构建 Web 应用程序和 API。Flask 简单易用&#xff0c;具有灵活性和可扩展性&#xff0c;是许多开发者喜欢用其构建项目的原因。本文将介绍 Flask 是什么以及如何使用它来构建 Web 应用程序&#xff0c;同时提供一…

JavaScript基础 第一天

本套笔记是通过学习B站Pink老师JavaScript核心进阶 前端必学总结的学习笔记&#xff0c;希望自己之后在使用的过程中能够将所学知识融会贯通 学习目标 1. 理解变量是存储数据的容器 2.理解什么是数据并知道数据的类型 3.知道JavaScript数据类型转换的特征 学习目录 1.Jav…