21、指标监控

2023-05-16

文章目录

  • 1、SpringBoot Actuator
    • 1、简介
    • 2、1.x与2.x的不同
    • 3、如何使用
    • 4、可视化
  • 2、Actuator Endpoint
    • 1、最常使用的端点
    • 2、Health Endpoint
    • 3、Metrics Endpoint
    • 4、管理Endpoints
      • 1、开启与禁用Endpoints
      • 2、暴露Endpoints
  • 3、定制 Endpoint
    • 1、定制 Health 信息
    • 2、定制info信息
      • 1、编写配置文件
      • 2、编写InfoContributor
    • 3、定制Metrics信息
      • 1、SpringBoot支持自动适配的Metrics
      • 2、增加定制Metrics
    • 4、定制Endpoint


【尚硅谷】SpringBoot2零基础入门教程-讲师:雷丰阳
笔记

路还在继续,梦还在期许

1、SpringBoot Actuator

1、简介

未来每一个微服务在云上部署以后,我们都需要对其进行监控、追踪、审计、控制等。SpringBoot就抽取了Actuator场景,使得我们每个微服务快速引用即可获得生产级别的应用监控、审计等功能。

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

在这里插入图片描述

2、1.x与2.x的不同

在这里插入图片描述

3、如何使用

● 引入场景
● 访问 http://localhost:8080/actuator/**
● 暴露所有监控信息为HTTP

management:
  endpoints:
    enabled-by-default: true #暴露所有端点信息
    web:
      exposure:
        include: '*'  #以web方式暴露

● 测试
http://localhost:8080/actuator/beans
http://localhost:8080/actuator/configprops
http://localhost:8080/actuator/metrics
http://localhost:8080/actuator/metrics/jvm.gc.pause
http://localhost:8080/actuator/endpointName/detailPath
。。。。。。

4、可视化

https://github.com/codecentric/spring-boot-admin

2、Actuator Endpoint

1、最常使用的端点

ID描述
auditevents暴露当前应用程序的审核事件信息。需要一个AuditEventRepository组件。
beans显示应用程序中所有Spring Bean的完整列表。
caches暴露可用的缓存。
conditions显示自动配置的所有条件信息,包括匹配或不匹配的原因。
configprops显示所有@ConfigurationProperties。
env暴露Spring的属性ConfigurableEnvironment
flyway显示已应用的所有Flyway数据库迁移。
需要一个或多个Flyway组件。
health显示应用程序运行状况信息。
httptrace显示HTTP跟踪信息(默认情况下,最近100个HTTP请求-响应)。
需要一个HttpTraceRepository组件。
info显示应用程序信息。
integrationgraph显示Spring integrationgraph 。
需要依赖spring-integration-core。
loggers显示和修改应用程序中日志的配置。
liquibase显示已应用的所有Liquibase数据库迁移。
需要一个或多个Liquibase组件。
metrics显示当前应用程序的“指标”信息。
mappings显示所有@RequestMapping路径列表。
scheduledtasks显示应用程序中的计划任务。
sessions允许从Spring Session支持的会话存储中检索和删除用户会话。
需要使用Spring Session的基于Servlet的Web应用程序。
shutdown使应用程序正常关闭。
默认禁用。
startupringApplication进行配置BufferingApplicationStartup。
threaddump执行线程转储。

如果您的应用程序是Web应用程序(Spring MVC,Spring WebFlux或Jersey),则可以使用以下附加端点:

ID描述
heapdump返回hprof堆转储文件。
jolokia通过HTTP暴露JMX bean(需要引入Jolokia,不适用于WebFlux)。
需要引入依赖jolokia-core。
logfile返回日志文件的内容(如果已设置logging.file.name或logging.file.path属性)。
支持使用HTTPRange标头来检索部分日志文件的内容。
prometheus以Prometheus服务器可以抓取的格式公开指标。
需要依赖micrometer-registry-prometheus。

最常用的Endpoint
● Health:监控状况
● Metrics:运行时指标
● Loggers:日志记录

2、Health Endpoint

健康检查端点,我们一般用于在云平台,平台会定时的检查应用的健康状况,我们就需要Health Endpoint可以为平台返回当前应用的一系列组件健康状况的集合。
重要的几点:
● health endpoint返回的结果,应该是一系列健康检查后的一个汇总报告
● 很多的健康检查默认已经自动配置好了,比如:数据库、redis等
● 可以很容易的添加自定义的健康检查机制

在这里插入图片描述

3、Metrics Endpoint

提供详细的、层级的、空间指标信息,这些信息可以被pull(主动推送)或者push(被动获取)方式得到;
● 通过Metrics对接多种监控系统
● 简化核心Metrics开发
● 添加自定义Metrics或者扩展已有Metrics

在这里插入图片描述

4、管理Endpoints

1、开启与禁用Endpoints

● 默认所有的Endpoint除过shutdown都是开启的。
● 需要开启或者禁用某个Endpoint。配置模式为 management.endpoint..enabled = true

management:
  endpoint:
    beans:
      enabled: true

或者禁用所有的Endpoint然后手动开启指定的Endpoint

management:
  endpoints:
    enabled-by-default: false
  endpoint:
    beans:
      enabled: true
    health:
      enabled: true

2、暴露Endpoints

支持的暴露方式
● HTTP:默认只暴露health和info Endpoint
● JMX:默认暴露所有Endpoint
● 除过health和info,剩下的Endpoint都应该进行保护访问。如果引入SpringSecurity,则会默认配置安全访问规则

IDJMXWeb
auditeventsYesNo
beansYesNo
cachesYesNo
conditionsYesNo
configpropsYesNo
envYesNo
flywayYesYes
healthN/ANo
httptraceYesNo
infoYesYes
integrationgraphYesNo
jolokiaN/ANo
logfileN/ANo
loggersYesNo
liquibaseYesNo
metricsYesNo
mappingsYesNo
prometheusN/ANo
scheduledtasksYesNo
sessionsYesNo
shutdownYesNo
startupYesNo
threaddumpYesNo

3、定制 Endpoint

1、定制 Health 信息

import org.springframework.boot.actuate.health.Health;
import org.springframework.boot.actuate.health.HealthIndicator;
import org.springframework.stereotype.Component;

@Component
public class MyHealthIndicator implements HealthIndicator {

    @Override
    public Health health() {
        int errorCode = check(); // perform some specific health check
        if (errorCode != 0) {
            return Health.down().withDetail("Error Code", errorCode).build();
        }
        return Health.up().build();
    }

}

构建Health
Health build = Health.down()
                .withDetail("msg", "error service")
                .withDetail("code", "500")
                .withException(new RuntimeException())
                .build();
management:
    health:
      enabled: true
      show-details: always #总是显示详细信息。可显示每个模块的状态信息
@Component
public class MyComHealthIndicator extends AbstractHealthIndicator {

    /**
     * 真实的检查方法
     * @param builder
     * @throws Exception
     */
    @Override
    protected void doHealthCheck(Health.Builder builder) throws Exception {
        //mongodb。  获取连接进行测试
        Map<String,Object> map = new HashMap<>();
        // 检查完成
        if(1 == 2){
//            builder.up(); //健康
            builder.status(Status.UP);
            map.put("count",1);
            map.put("ms",100);
        }else {
//            builder.down();
            builder.status(Status.OUT_OF_SERVICE);
            map.put("err","连接超时");
            map.put("ms",3000);
        }


        builder.withDetail("code",100)
                .withDetails(map);

    }
}

2、定制info信息

常用两种方式

1、编写配置文件

info:
  appName: boot-admin
  version: 2.0.1
  mavenProjectName: @project.artifactId@  #使用@@可以获取maven的pom文件值
  mavenProjectVersion: @project.version@

2、编写InfoContributor

import java.util.Collections;

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

@Component
public class ExampleInfoContributor implements InfoContributor {

    @Override
    public void contribute(Info.Builder builder) {
        builder.withDetail("example",
                Collections.singletonMap("key", "value"));
    }

}

http://localhost:8080/actuator/info 会输出以上方式返回的所有info信息

3、定制Metrics信息

1、SpringBoot支持自动适配的Metrics

● JVM metrics, report utilization of:
○ Various memory and buffer pools
○ Statistics related to garbage collection
○ Threads utilization
○ Number of classes loaded/unloaded
● CPU metrics
● File descriptor metrics
● Kafka consumer and producer metrics
● Log4j2 metrics: record the number of events logged to Log4j2 at each level
● Logback metrics: record the number of events logged to Logback at each level
● Uptime metrics: report a gauge for uptime and a fixed gauge representing the application’s absolute start time
● Tomcat metrics (server.tomcat.mbeanregistry.enabled must be set to true for all Tomcat metrics to be registered)
● Spring Integration metrics

2、增加定制Metrics

class MyService{
    Counter counter;
    public MyService(MeterRegistry meterRegistry){
         counter = meterRegistry.counter("myservice.method.running.counter");
    }

    public void hello() {
        counter.increment();
    }
}


//也可以使用下面的方式
@Bean
MeterBinder queueSize(Queue queue) {
    return (registry) -> Gauge.builder("queueSize", queue::size).register(registry);
}

4、定制Endpoint

@Component
@Endpoint(id = "container")
public class DockerEndpoint {


    @ReadOperation
    public Map getDockerInfo(){
        return Collections.singletonMap("info","docker started...");
    }

    @WriteOperation
    private void restartDocker(){
        System.out.println("docker restarted....");
    }

}

场景:开发ReadinessEndpoint来管理程序是否就绪,或者LivenessEndpoint来管理程序是否存活;
当然,这个也可以直接使用 https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-features.html#production-ready-kubernetes-probes

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

21、指标监控 的相关文章

  • 基于springcloud 的Eureka的服务注册与发现

    1 注册中心用来管理每个服务与服务之间的依赖关系 xff08 服务治理 xff09 xff0c 存放服务地址相关信息 xff08 接口地址 xff09 2 服务提供者 xff1a 提供服务接口 3 服务消费者 xff1a 调用服务接口 4
  • 计算机系统层次存储结构

    问 xff1a 当前计算机系统一般会采用层次结构存储数据 xff0c 请介绍下典型计算机存储系统一般分为哪几个层次 xff0c 为什么采用分层存储数据能有效提高程序的执行效率 xff1f 所谓存储系统的层次结构 xff0c 就是把各种不同存
  • Springboot的cache缓存机制

    我们知道一个程序的瓶颈在于数据库 xff0c 我们也知道内存的速度是大大快于硬盘的速度的 当我们需要重复地获取相同的数据的时候 xff0c 我们一次又一次的请求数据库或者远程服务 xff0c 导致大量的时间耗费在数据库查询或者远程方法调用上
  • Python-异常处理+文件

    目录 1 异常处理 1 简单的异常捕获 2 捕获错误类型 3 捕获未知错误 4 完整的异常语法 5 异常的传递 6 抛出异常 2 文件 1 读取文件 2 读取文件后文件指针会改变 3 写入文件 4 分行读取文件 5 复制文件 6 复制大文件
  • Eureka的设计理念

    目录 1 概述 1 1 服务实例如何注册到服务中心 1 2服务实例如何从服务中心剔除 1 3 服务实例信息的一致性问题 2 AP优于CP 3 Peer to Peer架构 3 1 主从复制 3 2 对等复制 4 Zone及Region设计
  • fastjson解析出现引用问题

    1 问题描述 后端返回前端接口数据包含引用数据 xff0c 如下图所示 2 原因 转json时使用这种方式 xff0c fastjson自动使用循环引用 xff1a String content 61 JSONObject toJSONSt
  • idea项目中添加mapper.xml文件样例

    1 点击File gt Settings gt 步骤如下图 然后新建mapper xml文件 点击mapper即可 2 添加其他模板方法同上
  • win10系统jdk1.8和tomcat8环境变量配置

    1 jdk环境变量配置 1 xff09 JAVA HOME 变量值就是jdk安装地址 JRE HOME 变量值就是jre安装地址 2 CLASSPATH 变量为 JAVA HOME lib JAVA HOME lib dt jar JAVA
  • Redis-事物&事物的四大特性(ACID)

    Redis事物 事物是指一系列操作步骤 xff0c 这一系列操作步骤 xff0c 要么完全执行 xff0c 要么完全不执行 Redis中的事物 transaction 是一组命令的集合 xff0c 至少是两个或两个以上的命令 xff0c r
  • 【chrome不能扩展程序怎么办】4步搞定安装导入扩展

    在 Edge 浏览器输入 xff1a edge version xff0c 按回车键后 xff0c 可以看到 用户配置路径 xff1a xxx xff0c 路径下的 Extensions 文件夹就是 Edge 安装扩展的目录 IE扩展位置
  • MariaDB Logs

    查询日志 xff1a query log 慢查询日志 xff1a slow query log 事务日志 xff1a transaction log 二进制日志 xff1a binary log 中继日志 xff1a relay log 错
  • android ViewBinding

    一 kotlin android extensions 在使用ViewBinding之前 xff0c 我们一直使用的是kotlin android extensions xff0c 使用kotlin android extensions可以
  • 如何添加win10命令提示符字体,美化显示效果

    如图 win10命令提示符的字体真让人难受的要死 xff0c 难道就不能改成好看一点的吗 xff1f 笔者开始了停不下来的百度和Google 在查找了大量零碎或者过时的资料后 xff0c 终于找到了一篇看起来还是很靠谱的文章 xff1a Q
  • 手动修改KDM、KSPLASH主题

    system xff1a ubuntu 13 04 x64 Qt 4 8 4 KDE Development Platform 4 10 5 kde4 config 1 0 自从安装了KDE桌面管理系统至今 xff0c 一直在折腾系统主题
  • Linux 安装Python3

    python3 下载地址 python3 下载地址 https www python org downloads 选择自己需要的版本 此文中选择3 10 9 下载源码压缩包 可下载到本地后上传至Linux服务器也可以复制下载地址 span
  • VirtualBox 重要的配置文件和配置程序

    之前我安装了VirtualBox 来跑 Linux 虚拟机 开始设置的时候设了 4G 内存 结果后来不能改了 造成的结果就是一开机 内存飙到40 一开VirtualBox 直接飙到95 然后开个数据库开个EBS 服务 基本就不用干其他事情了
  • 错误 This inspection detects names that should resolve but don't. Due to dynamic dispatch and duck~~~

    This inspection detects names that should resolve but don 39 t Due to dynamic dispatch and duck typing this is possible
  • LAMP源码安装图文详解(超详细)

    文章目录 一 LAMP架构概述1 各组件的主要作用2 各组件安装顺序 二 编译安装Apache httpd服务1 关闭防火墙 xff0c 将安装Apache所需软件包传到 opt目录下2 安装环境依赖包3 配置软件模块4 编译及安装5 优化
  • MySQL数据备份恢复全攻略,让我们通过简单几步找回丢失的数据

    编写初衷 没有人生下来天生就是会计算机的 xff0c 就拿笔者来说的话 xff0c 也是从Windows gt Centos gt Ubuntu一步一步慢慢学习 xff0c 积累下来的 为了让大家能够更快更高效率的学习 xff0c 从今天开

随机推荐

  • 解决/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29‘ not found问题

    1 问题分析 网上有分析说调用的高版本的gcc xff0c 生成的动态库没有替换老版本gcc的动态库导致 因此需要把高版本的so文件复制到低版本的so文件目录下 如下分析 xff1a https www jianshu com p 6424
  • 开源linux远程终端的源码

    C 有很多开源的Linux远程终端源代码可供使用 以下是一些常见的开源项目 xff1a MobaXterm xff1a 这是一个用C 编写的远程终端和X11服务器 xff0c 它支持SSH Telnet RDP VNC和SFTP等协议 Mo
  • 机器人操作系统(ROS)

    机器人操作系统 xff08 Robot Operating System xff0c ROS xff09 是一款广泛应用于机器人领域的开源操作系统 它最初由斯坦福大学人工智能实验室 xff08 Stanford AI Lab xff09 开
  • Ubuntu下运行文件

    在ubuntu下运行 run文件 a 打开一个终端 ctrl 43 alt 43 t b cd 到 run文件所在目录 c 输入 34 chmod 43 x foo run 34 d 输入 34 foo run 34 run文件就会开始运行
  • 必须掌握的8个dos命令

    一 xff0c ping 它是用来检查网络是否通畅或者网络连接速度的命令 作为一个生活在网络上的管理员或者黑客来说 xff0c ping命令 是第一个必须掌握的DOS命令 xff0c 它所利用的原理是这样的 xff1a 网络上的机器都有唯一
  • 搭建redis集群的时候碰到的错误

    1 出现from usr lib ruby site ruby 1 8 rubygems custom require rb 31 in 96 require from redis trib rb 2 错误 在使用ruby进行搭建redis
  • 疫情分析项目

    疫情期间各类政府媒体及社交网站 xff0c 均发布了相关疫情每日统计数据 xff0c 下面基于数据仓库工具Hive请你统计分析相关疫情数据 数据字段为 xff1a 日期 省份 城市 新增确诊 新增出院 新增死亡 消息来源 来源1 xff0c
  • selenium之css元素定位方法

    一 单一属性定位 xff08 id用 xff0c class用 xff09 1 xff1a type selector driver find element by css selector 39 input 39 2 xff1a id 定
  • 应用宝YSDK的快速接入(单机版只包含了游客模式没有加入其他的功能)

    可复制的代码 xff1a mainfest lt activity android name 61 34 com tencent tauth AuthActivity 34 android noHistory 61 34 true 34 a
  • Linux中error while loading shared libraries错误解决办法

    转载自http www cnblogs com codingmengmeng p 7456539 html 默认情况下 xff0c 编译器只会使用 lib和 usr lib这两个目录下的库文件 xff0c 通常通过源码包进行安装时 xff0
  • Java:常用类

    文章目录 一 Object类1 概述1 hashcode xff08 xff09 2 toString xff08 xff09 3 clone xff08 xff09 4 getClass xff08 xff09 5 notify xff0
  • JavaWeb介绍

    文章目录 1 基本概念1 1介绍1 2 Web应用程序1 静态web2 动态web 2 Web服务器2 1 技术介绍1 ASP2 PHP3 JSP Servlet 2 2 服务器介绍1 IIS2 Tomcat 3 Tomcat3 1 安装3
  • 邮件发送原理及实现

    文章目录 一 邮件发送原理1 1 接收发送过程1 2 邮件服务器1 3 邮件传输协议 二 Java邮件发送2 1 准备环境2 2 介绍2 2 1 授权码 2 3 简单邮件2 3 1 引入2 3 2 步骤一 xff1a 准备参数2 3 3 步
  • 11、MyBatis的逆向工程

    文章目录 11 MyBatis的逆向工程11 1 创建逆向工程的步骤1 添加依赖和插件2 创建mybatis config xml的核心配置文件3 创建逆向工程的配置文件4 执行MBG插件的generate目标5 效果6 窜库问题 11 2
  • 20、单元测试

    文章目录 1 JUnit5 的变化2 JUnit5常用注解3 断言 xff08 assertions xff09 1 简单断言2 数组断言3 组合断言4 异常断言5 超时断言6 快速失败 4 前置条件 xff08 assumptions x
  • 使用模拟器发送短信出现错误的解决方法

    在安卓应用开发揭秘第四章讲解使用模拟器发送短信并使用Toast显示短信息的时候 xff0c 本人遇到过如下错误 xff0c 现有一点个人的浅显理解 xff1a 错误 xff1a Couldn 39 t open fd for content
  • 22、原理解析

    文章目录 1 Profile功能1 application profile功能2 64 Profile条件装配功能3 profile分组 2 外部化配置1 外部配置源2 配置文件查找位置3 配置文件加载顺序 xff1a 4 指定环境优先 x
  • 5、网络配置

    文章目录 5 网络配置5 1 VMware三种模式5 1 1 桥连模式5 1 2 NAT模式5 1 3 仅主机模式 5 2 查看网络IP和网关5 2 1 查看虚拟网络编辑器5 2 2 修改虚拟网卡 Ip5 2 3 查看网关5 2 4 查看
  • 1、认识IntelliJ IDEA

    文章目录 1 认识IntelliJ IDEA1 1 JetBrains公司介绍1 2 IntelliJ IDEA介绍1 3 IDEA的主要优势 xff08 对比Eclipse xff09 1 3 1 功能强大1 3 2 符合人体工程学 1
  • 21、指标监控

    文章目录 1 SpringBoot Actuator1 简介2 1 x与2 x的不同3 如何使用4 可视化 2 Actuator Endpoint1 最常使用的端点2 Health Endpoint3 Metrics Endpoint4 管