【Springcloud】Actuator服务监控

【Springcloud】Actuator服务监控

  • 【一】基本介绍
  • 【二】如何使用
  • 【三】端点分类
  • 【四】整合Admin-Ui
  • 【五】客户端配置
  • 【六】集成Nacos
  • 【七】登录认证
  • 【八】实时日志
  • 【九】动态日志
  • 【十】自定义通知

【一】基本介绍

(1)什么是服务监控
监视当前系统应用状态、内存、线程、堆栈、日志等等相关信息,主要目的在服务出现问题或者快要出现问题时能够准确快速地发现以减小影响范围。

(2)为什么要使用服务监控
服务监控在微服务改造过程中的重要性不言而喻,没有强大的监控能力,改造成微服务架构后,就无法掌控各个不同服务的情况,在遇到调用失败时,如果不能快速发现系统的问题,对于业务来说就是一场灾难。

(3)spring boot actuator 服务监控接口
actuator是监控系统健康情况的工具。

(4)spring boot admin 服务监控管理
Spring Boot Admin是一个针对spring-boot的actuator接口进行UI美化封装的监控工具。他可以:在列表中浏览所有被监控spring-boot项目的基本信息,详细的Health信息、内存信息、JVM信息、垃圾回收信息、各种配置信息(比如数据源、缓存列表和命中率)等,还可以直接修改logger的level。

【二】如何使用

(1)添加依赖

<!-- SpringBoot Web -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency><!-- SpringBoot Actuator -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

(2)在application.yml配置暴露所有监控端点

management:endpoints:web:exposure:include: '*'

(3)启动后访问http://localhost:9100/actuator,返回正确数据表示测试通过。

【三】端点分类

/beans 显示所有的Spring bean列表
/caches 显示所有的缓存相关信息
/scheduledtasks 显示所有的定时任务相关信息
/loggers 显示所有的日志相关信息
/configprops 显示所有的配置信息
/env 显示所有的环境变量信息
/mappings 显示所有控制器相关信息
/info 显示自定义用户信息配置
/metrics 显示应用指标相关信息
/health 显示健康检查状态信息,up表示成功 down表示失败
/threaddump 显示程序线程的信息

【四】整合Admin-Ui

(1)添加依赖

<!-- SpringBoot Admin -->
<dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-server</artifactId><version>${spring-boot-admin.version}</version>
</dependency>

(2)启动类添加@EnableAdminServer注解

(3)测试访问
浏览器访问(http://localhost:9100 (opens new window))可以看到以下界面。

在这里插入图片描述

【五】客户端配置

(1)添加依赖

<!-- SpringBoot Admin Client -->
<dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-client</artifactId>
</dependency><!-- SpringBoot Actuator -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

(2)配置服务端地址

spring:application:name: ruoyi-admin-clientboot:admin:client:url: http://localhost:9100

【六】集成Nacos

在使用Admin时,如果没有注册中心,需要各个客户端填写Admin服务端地址,而Admin是支持Nacos、Eureka、ZooKeeper等组件,可以直接从注册中心拉取服务实例

(1)添加依赖

<!-- springcloud alibaba nacos discovery -->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

(2)项目yml配置添加nacos地址,包含客户端和服务端

spring: application:# 应用名称name: ruoyi-xxxx cloud:nacos:discovery:# 服务注册地址server-addr: 127.0.0.1:8848

【七】登录认证

(1)添加依赖

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

(2)配置spring security权限

package com.ruoyi.modules.monitor.config;import de.codecentric.boot.admin.server.config.AdminServerProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;/*** 监控权限配置* * @author ruoyi*/
@Configuration
public class WebSecurityConfigurer extends WebSecurityConfigurerAdapter
{private final String adminContextPath;public WebSecurityConfigurer(AdminServerProperties adminServerProperties){this.adminContextPath = adminServerProperties.getContextPath();}@Overrideprotected void configure(HttpSecurity http) throws Exception{SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();successHandler.setTargetUrlParameter("redirectTo");successHandler.setDefaultTargetUrl(adminContextPath + "/");http.headers().frameOptions().disable().and().authorizeRequests().antMatchers(adminContextPath + "/assets/**", adminContextPath + "/login", adminContextPath + "/actuator/**", adminContextPath + "/instances/**").permitAll().anyRequest().authenticated().and().formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and().logout().logoutUrl(adminContextPath + "/logout").and().httpBasic().and().csrf().disable();}
}

(3)在ruoyi-monitor-dev.yml配置用户,默认账户ruoyi/123456

# spring
spring: security:user:name: ruoyipassword: 123456boot:admin:ui:title: 若依服务状态监控

【八】实时日志

Spring Boot Admin提供了基于Web页面的方式实时查看服务输出的本地日志,前提是服务中配置了logging.file.name

以ruoyi-xxxx模块为例,bootstrap.yml配置logging.file.name配置

logging:file:name: logs/${spring.application.name}/info.log

进入日志-日志文件查看实时日志,效果如下
在这里插入图片描述

【九】动态日志

Spring Boot Admin支持动态修改日志级别。

进入日志-日志配置修改日志级别,效果如下

在这里插入图片描述

【十】自定义通知

可以通过添加实现Notifier接口的Spring Beans来添加您自己的通知程序。

import org.springframework.stereotype.Component;
import de.codecentric.boot.admin.server.domain.entities.InstanceRepository;
import de.codecentric.boot.admin.server.domain.events.InstanceEvent;
import de.codecentric.boot.admin.server.domain.events.InstanceStatusChangedEvent;
import de.codecentric.boot.admin.server.notify.AbstractStatusChangeNotifier;
import reactor.core.publisher.Mono;/*** 通知发送配置* * @author ruoyi*/
@Component
public class RuoYiStatusChangeNotifier extends AbstractStatusChangeNotifier
{public RuoYiStatusChangeNotifier(InstanceRepository repository){super(repository);}@Overrideprotected Mono<Void> doNotify(InstanceEvent event,de.codecentric.boot.admin.server.domain.entities.Instance instance){return Mono.fromRunnable(() -> {if (event instanceof InstanceStatusChangedEvent){String status = ((InstanceStatusChangedEvent) event).getStatusInfo().getStatus();switch (status){// 健康检查没通过case "DOWN":System.out.println("发送 健康检查没通过 的通知!");break;// 服务离线case "OFFLINE":System.out.println("发送 服务离线 的通知!");break;// 服务上线case "UP":System.out.println("发送 服务上线 的通知!");break;// 服务未知异常case "UNKNOWN":System.out.println("发送 服务未知异常 的通知!");break;default:break;}}});}
}

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

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

相关文章

pdf怎么转换成dwg格式?简单转换方法分享

当我们需要在CAD中编辑PDF文件中的向量图形时&#xff0c;将PDF转换成DWG格式是一个非常好的选择。因为PDF是一种非常流行的文档格式&#xff0c;很多时候我们会接收到PDF文件&#xff0c;但是PDF文件中的向量图形无法直接在CAD中编辑。而将PDF转换成DWG格式后&#xff0c;就可…

shell入门运算符操作、条件判断

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a; 小刘主页 ♥️努力不一定有回报&#xff0c;但一定会有收获加油&#xff01;一起努力&#xff0c;共赴美好人生&#xff01; ♥️学习两年总结出的运维经验&#xff0c;以及思科模拟器全套网络实验教程。专栏&#xf…

PHP8函数包含文件-PHP8知识详解

在php中&#xff0c;可以使用以下函数来包含其他文件&#xff1a;include()、include_once()、require()、require_once()。 1、include(): 包含并运行指定文件中的代码。如果文件不存在或包含过程中出现错误&#xff0c;将发出警告。 <?php include filename.php; ?>…

2023年高教社杯数学建模国赛C题详细版思路

C 题 蔬菜类商品的自动定价与补货决策 2023年国赛如期而至&#xff0c;为了方便大家尽快确定选题&#xff0c;这里将对C题进行解题思路说明&#xff0c;以分析C题的主要难点、出题思路以及选择之后可能遇到的难点进行说明&#xff0c;方便大家尽快找到C题的解题思路。 难度排…

uni-app 折叠自定义

uni-app的uni-collapse折叠组件样式修改 下面是修改后的样式 <uni-collapse accordion class"ze" v-model"isCollapse" click"toggleCollapse"><!-- 因为list默认带一条分隔线&#xff0c;所以使用 titleBorder"none" 取消…

Linux之防火墙

目录 什么是防火墙 分类&#xff1a; Netfilter(数据包过滤) 防火墙无法完成的任务 iptables 与 firewalld 区别 iptables iptables执行原则 规则链 概念 分析 流程图 规则链分类 iptables 流量处理动作 iptables表 四种规则表 安装iptables 预处理 管理命令 …

2023 年高教社杯全国大学生数学建模竞赛题目 A 题 定日镜场的优化设计

A 题 定日镜场的优化设计 构建以新能源为主体的新型电力系统&#xff0c;是我国实现“碳达峰”“碳中和”目标的一项重要措施。塔式太阳能光热发电是一种低碳环保的新型清洁能源技术[1]。 定日镜是塔式太阳能光热发电站&#xff08;以下简称塔式电站&#xff09;收集太阳能的基…

SpringBoot 拦截org.thymeleaf.exceptions.TemplateInputException异常

SpringBoot 拦截thymeleaf异常 org.thymeleaf.exceptions.TemplateInputException异常 org.thymeleaf.exceptions.TemplateProcessingE xception: Could not parse as each: "message : xxx " (template: “xxxx” - line xx, col xx) thymeleaf异常复现 你是故意的…

ubuntu上ffmpeg使用framebuffer显示video

这个主题是想验证使用fbdev(Linux framebuffer device&#xff09;&#xff0c;将video直接显示到Linux framebuffer上&#xff0c;在FFmpeg中对应的FFOutputFormat 就是ff_fbdev_muxer。 const FFOutputFormat ff_fbdev_muxer {.p.name "fbdev",.p.long_…

YMatrix 5.0 与天翼云完成产品兼容性认证

近日&#xff0c;北京四维纵横数据技术有限公司与天翼云宣布完成产品兼容性认证。经过双方严格的测试验证&#xff0c;超融合数据库 YMatrix 5.0 与天翼云兼容性良好&#xff0c;可基于天翼云稳定运行。 数据库系统作为基础软件的核心&#xff0c;自主可控势在必行。在此背景下…

OpenCV(十六):高斯图像金字塔

目录 1.高斯图像金字塔原理 2.高斯图像金字塔实现 1.高斯图像金字塔原理 高斯图像金字塔是一种用于多尺度图像表示和处理的重要技术。它通过对图像进行多次高斯模糊和下采样操作来生成不同分辨率的图像层级&#xff0c;每个层级都是原始图像的模糊和降采样版本。 以下是高斯…

github网站打不开,hosts文件配置

首先获取github官网的ip地址&#xff0c; 打开cmd&#xff0c;输入ping github.com 配置&#xff1a; #github 140.82.114.4 github.com 199.232.69.194 github.global.ssl.fastly.net 185.199.108.153 assets-cdn.github.com 185.199.110.153 assets-cdn.github.com 185.199…