06. Springboot admin集成Actuator(二)

目录

1、前言

2、快速使用

2.1、服务端集成

2.1.1、添加依赖

2.1.2、配置启动类

2.1.3、配置application.yml

2.1.4、定制security config

2.1.5、启动程序

2.2、客户端集成

2.2.1、添加依赖

2.2.2、配置application.yml

2.2.3、启动程序

2.3、告警通知

2.3.1、邮件通知

2.3.2、Notifier 接口


1、前言

在《Springboot admin集成Actuator(一)》一文中简单演示了Actuator的初步使用,但是可以发现都是json形式返回的结构,那么是否有能够可视化的方式来展示这些指标呢?当然有,就是接下来要说的Springboot Admin。Spring Boot Admin能够将 Actuator 中的信息进行界面化的展示,也可以监控所有 Spring Boot 应用的健康状况,提供实时警报功能。

注:虽然名叫Springboot Admin,但却不是Spring团队研发的。而是由Codecentric公司创建的,代码在Github: spring-boot-admin在新窗口打开上。

2、快速使用

springboot admin分为服务端(spring-boot-admin-server)和客户端(spring-boot-admin-client)。服务端和客户端之间采用 http 通讯方式实现数据交互;单体项目中需要整合 spring-boot-admin-client 才能让应用被监控。在 SpringCloud 项目中,spring-boot-admin-server 是直接从注册中心抓取应用信息,不需要每个微服务应用整合 spring-boot-admin-client 就可以实现应用的管理和监控。

2.1、服务端集成

2.1.1、添加依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 添加security模块,可以对spring boot admin设置登录账号密码,添加安全性 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-server</artifactId><version>${spring.boot.admin.version}</version>
</dependency>

2.1.2、配置启动类

启动类需要添加注解@EnableAdminServer。

@EnableAdminServer
@SpringBootApplication
public class SbaServerLauncher {public static void main(String[] args) {SpringApplication.run(SbaServerLauncher.class, args);}
}

2.1.3、配置application.yml

server:port: 9001spring:application:name: sba-server# 配置登录springboot admin管理端的账号密码security:user:name: adminpassword: 123456# 启动actuator端点
management:endpoints:web:exposure:include: '*'endpoint:health:show-details: always

2.1.4、定制security config

@Configuration
public class SecuritySecureConfig extends WebSecurityConfigurerAdapter {private final String adminContextPath;public SecuritySecureConfig(AdminServerProperties adminServerProperties) {this.adminContextPath = adminServerProperties.getContextPath();}@Overrideprotected void configure(HttpSecurity http) throws Exception {// 登录成功处理类SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();successHandler.setTargetUrlParameter("redirectTo");successHandler.setDefaultTargetUrl(adminContextPath + "/");http.authorizeRequests()//静态文件允许访问.antMatchers(adminContextPath + "/assets/**").permitAll()//登录页面允许访问.antMatchers(adminContextPath + "/login", "/css/**", "/js/**", "/image/*").permitAll()//其他所有请求需要登录.anyRequest().authenticated().and()//登录页面配置,用于替换security默认页面.formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and()//登出页面配置,用于替换security默认页面.logout().logoutUrl(adminContextPath + "/logout").and().httpBasic().and().csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()).ignoringAntMatchers("/instances","/actuator/**");}
}

2.1.5、启动程序

接下来就可以启动程序。访问地址http://localhost:9001

输入账号密码admin/123456,进入控制台首页,服务端集成到此就好了。

2.2、客户端集成

服务端集成后,我们发现其应用数为0。这里的应用就是需要我们客户端集成后注册进去。

2.2.1、添加依赖

<dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-client</artifactId><version>${spring.boot.admin.version}</version>
</dependency>

2.2.2、配置application.yml

server:port: 9001spring:boot:admin:client:# 这里就是注册服务端的地址url: http://localhost:9001username: ${spring.security.user.name}password: ${spring.security.user.password}instance:service-host-type: ipmetadata:user.name: ${spring.security.user.name}user.password: ${spring.security.user.password}

2.2.3、启动程序

启动程序,访问下控制台地址:http://localhost:9001,可以发现我们的服务已经注册上去了。因为我这边服务端和客户端是在同一套工程上,因此可以看到我们自己的应用服务。

点击sba-server应用,可以进去详情查看各个端点信息:

这些信息其实就是前面介绍的actuator各个端点的数据以可视化方式呈现。到此我们的集成就算是完成了。

除此之外,我们还可以自定义springboot admin的导航菜单,通过view-setting配置。以及其他一些可扩展的东西,这里就不赘述,需要感兴趣的小伙伴们慢慢探索。

2.3、告警通知

当检测到状态发生变化时, 我们需要发送一些消息通知。sba-server中内置了如email、消息等通知。

2.3.1、邮件通知

我们以为发送email为例,需要添加如下配置:

添加依赖:

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

添加email配置:

spring:mail:host: ${MAIL_HOST:邮箱服务器地址}port:username: ${MAIL_USERNAME:邮箱服务器用户名}password: ${MAIL_PWD:邮箱服务器密码}protocol: ${MAIL_PROTOCOL:smtp}default-encoding: UTF-8properties:mail.smtp.auth: truemail.smtp.starttls.enable: truemail.smtp.starttls.required: truemail.smtp.socketFactory.port: ${MAIL_SMTP_SOCKETFACTORY_PORT:465}mail.smtp.socketFactory.class: javax.net.ssl.SSLSocketFactorymail.smtp.socketFactory.fallback: falsemail.smtp.ssl.protocols: ${MAIL_SMTP_SSL_PROTOCOLS:TLSv1}

添加spring boot admin邮件告警配置:

spring:boot:admin:notify:mail:to: ${NOTIFY_MAIL_TO:邮箱接收人,多个用,隔开}from: ${NOTIFY_MAIL_FROM:邮箱发送人}

配置完,当客户端出现异常时,就会收到邮件告警。

2.3.2、Notifier 接口

除了内置的一些通知类型外,还可以自定义通知功能。自定义的通知可以实现 AbstractStatusChangeNotifier 抽象类,或者 Notifier 接口。我们以继承AbstractStatusChangeNotifier类为例,使用Notifier接口类似:

public class CustomNotifier extends AbstractStatusChangeNotifier {}

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

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

相关文章

arr.sort((a,b)=>a-b)

当你需要对一个数组进行正排序和逆向排序的时候,选择arr.sort((a,b)>a-b)方法

C# 利用委托自定义事件

using System; using System.Windows.Forms; namespace DelegateTest { public delegate void OnTestedEventHandler(object message); //定义用于声明事件的委托 public partial class Form1 : Form { public event OnTestedEventHandler OnTested null; //声明…

【自然语言处理】【大模型】 ΨPO:一个理解人类偏好学习的统一理论框架

一个理解人类偏好学习的统一理论框架 《A General Theoretical Paradiam to Understand Learning from Human Preferences》 论文地址&#xff1a;https://arxiv.org/pdf/2310.12036.pdf 相关博客 【自然语言处理】【大模型】 ΨPO&#xff1a;一个理解人类偏好学习的统一理论框…

centos 安装 zlib 库

centos 编译安装 zlib 下载地址 下载需要的版本后解压&#xff0c;我下载的是最新可用版本。 进入到解压后的目录&#xff0c;执行&#xff1a; ./configure --prefix/usr/local/zlib make && make installecho "/usr/local/zlib/lib" >> /etc/ld.s…

服务器租用的作用是什么?

服务器是一台电脑&#xff0c;但是对比于普通的电脑来说&#xff0c;它的数据处理能力更强&#xff0c;负载性能更好&#xff0c;价格方面也会更贵&#xff0c;所用的CPU、主板等都是不同的&#xff0c;那么服务器租用的作用是什么呢 &#xff0c;小编今天就来谈一谈吧&#xf…

【K8S 部署】基于kubeadm搭建Kurbernetes集群

目录 一、基本架构 二、环境准备: 三、安装部署 1、所有节点安装docker 2、、所有节点安装kubeadm&#xff0c;kubelet和kubectl 3、配置网络--flannel 4、测试 pod 资源创建 四、安装部署与k8s集群对接的Harbor仓库 五、Dashboard安装部署&#xff1a; 一、基本架构…

软件测试/测试开发丨Pytest 参数化用例

参数化 通过参数的方式传递数据&#xff0c;从而实现数据和脚本分离。并且可以实现用例的重复生成与执行。 参数化应用场景 测试登录场景 测试登录成功&#xff0c;登录失败(账号错误&#xff0c;密码错误)创建多种账号: 中⽂文账号&#xff0c;英⽂文账号 普通测试用例方法 …

纷享销客华为云:如何让企业多一个选择?

纷享销客携手华为云推出多项联合解决方案&#xff0c;为企业的数字化提供了一个新选择。12月12日&#xff0c;纷享销客&华为云联合解决方案发布会在北京举办。本次发布会以“「CRM云」让企业多一个选择”为主题&#xff0c;来自行业头部企业的CEO、CIO、业务负责人等&#…

AGV智能搬运机器人-替代人工工位让物流行业降本增效

在当今快速发展的世界中&#xff0c;物流业面临着巨大的挑战&#xff0c;包括提高效率、降低成本和优化工作流程。为了应对这些挑战&#xff0c;一种新型的自动化设备——智能搬运机器人正在崭露头角。本文将通过一个具体的案例来展示富唯智能转运机器人在实际应用中的价值。 案…

C++:map和set的介绍及使用

目录 1. 关联式容器 2. 键值对 3. 树形结构的关联式容器 3.1 set 3.1.1 set的介绍 3.1.2 set的使用 3.2 map 3.2.1 map的介绍 3.2.2 map的使用 3.3 multiset 3.3.1 multiset的介绍 3.3.2 multiset的使用 3.4 multimap 3.4.1 multimap的介绍 3.4.2 multimap的使用…

如何安装T4显卡的驱动

文章目录 一、没有驱动的报错现象二、cuda版本与驱动的版本对应关系三、安装驱动方法1&#xff1a;方法2&#xff1a; 一、没有驱动的报错现象 ERROR: Unable to find the kernel source tree for the currently running kernel. Please make sure you have installed the ker…

Java 将 List 转换为 String常见方式

将 List 转换为 String的几种方式 使用 List的toString()方法将 List 转换为 String&#xff1b;结果前后会带有英文的中括号[]&#xff0c;如&#xff1a;[1, 2, 3, 4, 5]使用Java8 stream流中的Collections.joining()方法&#xff0c;带有逗号分隔符或自定义分隔符将集合转成…

CMEMS数据下载

CMEMS最近在更新数据库&#xff0c;有一些数据库不能像之前一样在网页上下载了&#xff0c;但是CMEMS推荐了一个工具Copernicus Marine Toolbox&#xff0c;通过脚本进行下载。 环境&#xff1a;Ubuntu20.04 一、 Copernicus Marine Toolbox安装 &#xff08;原文为mamba或者py…

【标定】利用iphone基于python与opencv对手机相机做标定

利用iphone基于python与opencv对手机相机做标定 1. 标定步骤2. 标定代码3. 标定结果 之前基于ros实现了网络摄像机的标定&#xff0c;详细见 1. 标定步骤 &#xff08;1&#xff09;打印一张棋盘格A4纸张&#xff08;黑白间距已知&#xff09;&#xff0c;并贴在一个平板上。…

数字时代跨境电商营销大变革:海外网红营销的力量与影响

随着全球化的推进和数字技术的不断发展&#xff0c;跨境电商行业迎来了一场营销变革的浪潮。在这个过程中&#xff0c;一种新的营销方式崭露头角&#xff0c;那就是海外网红营销。海外网红以其独特的个人魅力和影响力&#xff0c;成为跨境电商推广的重要力量&#xff0c;为品牌…

Flink1.17实战教程(第五篇:状态管理)

系列文章目录 Flink1.17实战教程&#xff08;第一篇&#xff1a;概念、部署、架构&#xff09; Flink1.17实战教程&#xff08;第二篇&#xff1a;DataStream API&#xff09; Flink1.17实战教程&#xff08;第三篇&#xff1a;时间和窗口&#xff09; Flink1.17实战教程&…

设计模式(4)--对象行为(7)--观察者

1. 意图 定义对象间的一种一对多的依赖关系&#xff0c; 当一个对象的状态改变时&#xff0c;所有依赖于它的对象都得到通知并被自动更新。 2. 四种角色 抽象目标(Subject)、具体目标(Concrete Subject)、抽象观察者(Observer)、 具体观察者(Concrete Observer) 3. 优点 3.1 …

模型量化 | Pytorch的模型量化基础

官方网站&#xff1a;Quantization — PyTorch 2.1 documentation Practical Quantization in PyTorch | PyTorch 量化简介 量化是指执行计算和存储的技术 位宽低于浮点精度的张量。量化模型 在张量上执行部分或全部操作&#xff0c;精度降低&#xff0c;而不是 全精度&#xf…

RBE306TC Computer Vision Systems Lab Manuals and Reports

RBE306TC Computer Vision Systems Lab Manuals and Reports Lab 1 on Nov. 10th, 2023 Objectives : • Introducing the image processing capabilities of Matlab with Image Processing Toolbox • Learn to read and display images • Learn basic image processin…

HTML+CSS制作动漫绿巨人

🎀效果展示 🎀代码展示 <!DOCTYPE html> <html lang="en" > <head>