• 【SpringBoot框架学习】Actuator监控中心 详解


    Youzg LOGO

    基本知识点:

    什么是 Actuator监控中心?

    针对 微服务器

    1. 监控
    2. 内存变化(堆内存,线程,日志管理等)
    3. 检测服务配置连接池是否可用(模拟访问、懒加载)
    4. 统计现有Bean(通过Spring容器) 和 Http接口(@RequestMapping)

    的一系列数据管理机制
    Actuator监控应用只通过JSON形式返回数据统计结果没有UI界面处理
    AdminUI内置Actuator服务监控,并对返回JSON数据进行图形化处理展示


    为什么要学习actuator监控呢?

    应用场景:

    微服务架构中,多功能由多个服务器实现
    虽然这样做减少了主服务器的压力,但是给运维同志们造成了很大的压力
    因此,为了做到高效运维,需要一套 自动化的监控运维机制

    1. 不间断地收集各个微服务应用的各项 指标情况
    2. 根据这些基础指标信息来制定监控和预警规则

    SpringBoot监控机制,正是迎合了这种需求
    它可以通过使用HTTP端点各个请求路径JMX监管审计收集 引用的运行情况,

    概括来讲,就是:
    简化 管理微服务 的流程


    Maven依赖:

    <!--actuator-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    

    基本使用:

    起步:

    当我们导入了上述Maven依赖后,启动:
    启动 展示
    只要出现上述的信息,就代表Actuator成功配置上了!

    1. 若是我们访问

    http://localhost:设置的端口号/actuator
    

    就会显示如下结果:
    结果 展示

    2. 若是我们访问

    http://localhost:8080/actuator/health
    

    就会显示
    health 展示

    3. 若是我们访问

    http://localhost:8080/actuator/info
    

    就会显示
    info 展示
    其实,health和info都是actuator的内置端点


    那么,本人来介绍下 actuator的内置端点

    内置端点:

    Endpoint ID Description
    auditevent 显示 应用暴露的 审计事件
    (比如认证进入、订单失败)
    info 显示 应用的基本信息
    health 显示 应用的健康状态
    metrics 显示 应用多样的度量信息
    loggers 显示和修改 配置的loggers
    logfile 返回 log file中的内容
    (如果logging.file或者logging.path被设置)
    httptrace 显示 HTTP足迹
    (最近100个HTTP request/repsponse)
    env 显示 当前的环境特性
    flyway 显示 数据库迁移路径 的 详细信息
    liquidbase 显示 Liquibase数据库迁移 的 详细信息
    shutdown 优雅地 逐步关闭应用
    mappings 显示 所有的@RequestMapping路径
    scheduledtasks 显示 应用中的 调度任务
    threaddump 执行 一个 线程dump
    heapdump 返回 一个 GZip压缩的JVM堆dump

    其实这些信息,我们在IDEA中也能观察得到:
    IDEA 展示


    获取 端点的详细信息:

    若是我们想要获取某个端点的详细信息,
    则在配置文件中加入

    # 获得健康检查中所有指标的详细信息
    management.endpoint.health.show-details=always
    

    即可

    本人以health端点为例,来展示设置后的效果
    在加入后,当我们再次访问health端点后,就会显示:
    详细 展示


    在这里还有两个关于info端点的问题:

    info端点 问题:

    1. info端点不显示(仅显示{})问题

    • 原因

    生成文件中的META-INF目录下的build-info.properties文件没有生成目标文件 展示

    • 解决办法

    我们只需要双击Maven提供的插件,生成即可:
    插件 展示


    2. 自定义 info端点 的内容:

    在application.properties配置文件中,加入如下中的所需内容即可:

    # info内容自定义
    info.app.name=${spring.application.name}
    info.app.description=@project.description@
    info.app.version=@project.version@
    info.app.encoding=@project.build.sourceEncoding@
    info.app.java.version=@java.version@
    

    但是,我们若是直接去访问这些端点,则会404异常
    404 展示
    这是为什么呢?
    答曰:

    只有 health 和 info 端点 默认暴露

    那么,我们该如何暴露这些端点呢?

    设置 端点 暴露:

    由于properties配置文件 和 yml配置文件 效果是一样的,
    因此本人在此仅展示 properties配置文件 的设置步骤:

    application.properties配置文件中加入

    # 暴露指定端点
    management.endpoints.web.exposure.include=目标端点1, 目标端点2, ...
    

    或者

    # 暴露所有端点
    management.endpoints.web.exposure.include=*
    

    抑或是

    # 暴露除指定端点外的其它端点
    management.endpoints.web.exposure.include=*
    management.endpoints.web.exposure.exclude=非目标端点1, 非目标端点2, ...
    

    这时,我们能发现:
    当我们再次访问

    http://localhost:8080/actuator
    

    时,我们设置的端点也会出现在返回的结果中:
    暴露后 展示
    这时,当我们再次访问设置暴露的端点时,就会显示出相应的信息:
    暴露端口 展示


    在本篇博文刚开始就讲过:

    actuator监控 机制,是来简化运维同志们的操作的

    那么,本人在这里再来扩展一个知识点 —— ui界面化插件:

    ui界面化 —— AdminUI:

    Server端:

    Maven依赖:

    (注意:此处的Maven依赖,是在actuator的基础上增加的)

    <!--ui插件 服务端-->
    <dependency>
        <groupId>de.codecentric</groupId>
        <artifactId>spring-boot-admin-starter-server</artifactId>
        <version>2.2.3</version>
    </dependency>
    <dependency>
        <groupId>de.codecentric</groupId>
        <artifactId>spring-boot-admin-server-ui</artifactId>
        <version>2.2.3</version>
    </dependency>
    

    配置Server端的端口号:

    在application配置文件中加入

    server:
      port: 自定义 服务器端 端口号
    

    声明Server:

    在该程序的Application启动类上,加上

    @EnableAdminServer
    

    注解


    查看结果:

    这时,当我们访问

    http://localhost:配置文件中配置的端口号
    

    就会出现如下页面:
    在这里插入图片描述


    Client端:

    Maven依赖:

    (注意:此处的Maven依赖,是在actuator的基础上增加的)

    <!--ui插件 客户端-->
    <dependency>
        <groupId>de.codecentric</groupId>
        <artifactId>spring-boot-admin-starter-client</artifactId>
        <version>2.2.3</version>
    </dependency>
    

    配置client端的端口号:

    由于好多同学和本人一样,在一台机子上测试,
    因此,要注意不要 与server端的端口号 冲突

    server:
      port: 自定义的client端的port
    

    连接Server端:

    spring:
      boot:
        admin:
          client:
            url: http://localhost:要连接的server的port
    
    

    测试:

    先启动Server端,再启动两个Client端(一定要注意 端口冲突问题!)
    访问

    http://localhost:之前设置的server的port
    

    就会显示如下页面:
    测试结果 展示
    我们访问第一个链接:
    欢迎页面 展示
    可以看到:测试成功了!
    (之所以此处显示Login Failure页面,是因为本人为了展示actuator-ui,
    找的之前博文《【Spring Security框架学习】专栏总集篇》中的程序来充当的client端)

    当我们点击应用墙,就会看到:
    应用墙 展示
    我们再来查看下第二个client的情况:
    细节1 展示
    细节2 展示


    心得体会 与 未来展望:

    其实看到这里,相信很多同学和本人一样:
    想到了本人之前的博文 —— 《详解 服务发现 的基本实现》中所讲解的 服务发现重要组件 功能一致!

    而此处的Server端就是服务发现中的监控器
    Client端就是App服务器

    本人再来展示下 服务发现框架基本组件
    (由于原理都一致,SpringCloud的官方图片未找到,本人就挑选最熟悉的Dubbo来展示)
    Dubbo展示
    可以看到:
    Dubbo中的Monitor,正是和本篇博文的 Actuator 功能一致!


    而在我们之后学习微服务框架的过程中,也会学到两者的整合
    所以本篇博文仅讲解下基本使用原理,来为同学们扫扫盲,希望对有需要的同学有所帮助!

  • 相关阅读:
    jquery.FixedColumns 滚动兼容问题
    面向对象三大特性:继承、封装、多态
    jquery.chosen.js和select2使用笔记
    Git查看、删除、重命名远程分支和tag(转载)
    GIT忽略追踪文件
    git代码量统计(转载)
    SQL SERVER如何收缩日志-通过脚本收缩(转发)
    GIT常用命令
    解决 git extensions 每次提交需要输入用户名和密码
    Mysql 5.7初始化密码
  • 原文地址:https://www.cnblogs.com/codderYouzg/p/13274893.html
Copyright © 2020-2023  润新知