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)方法

【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…

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

随着全球化的推进和数字技术的不断发展&#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…

HTML+CSS制作动漫绿巨人

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

Apollo自动驾驶概述:引领智能交通的未来(文末赠送apollo周边)

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《linux深造日志》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! ⛳️ 粉丝福利活动 ✅参与方式&#xff1a;通过连接报名观看课程&#xff0c;即可免费获取精美周边 ⛳️活动链接&#xf…

算法基础之最短编辑距离

最短编辑距离 核心思想 &#xff1a; 线性dp 集合定义 &#xff1a; f[i][j]为操作方式的最小值 集合计算 : 三种操作 取最小 ① 删除 : 将a[i]删掉 使ab相同 –> f[i-1][j] 1 f[i][j]② 增添 : 在a[i]后加上一个数 使ab相同 –> f[i][j-1] 1 f[i][j]③ 替换 : 将a[…

聚观早报 |一加Ace 3外观细节;小米14 Ultra电池曝光

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 12月28日消息 一加Ace 3外观细节 小米14 Ultra电池曝光 Lucid正开发电动汽车 英特尔获以色列32亿美元补贴 新能…

用编程解决习题【计算机图像处理】

用编程解决习题【计算机图像处理】 前言版权第三章 03采样量化与像素间关系三种距离计算编程 第六章 06图像的直方图变换均衡化直方图编程规定化直方图编程 第七章 07图像的噪声抑制均值滤波 中值滤波计算编程knn滤波计算编程 第十章 10二值图像的分析贴标签 膨胀 腐蚀编程 最后…

Hadoop安装笔记_单机/伪分布式配置_Hadoop3.1.3——备赛笔记——2024全国职业院校技能大赛“大数据应用开发”赛项——任务2:离线数据处理

将下发的ds_db01.sql数据库文件放置mysql中 12、编写Scala代码&#xff0c;使用Spark将MySQL的ds_db01库中表user_info的全量数据抽取到Hive的ods库中表user_info。字段名称、类型不变&#xff0c;同时添加静态分区&#xff0c;分区字段为etl_date&#xff0c;类型为String&am…

代码审计必要性探讨

1、背景 为了保证代码的质量&#xff0c;需要一系列的流程来进行保证&#xff1a; 今天要探讨的是代码审计的必要性。 2、代码审计 代码审计的做法多种多样&#xff0c;我理解必须解决以下问题 &#xff0c;才可能有效&#xff1a; 核心&#xff1a;审计的本质是对比&#…

RabbitMQ 报错:Failed to declare queue(s):[QD, QA, QB]

实在没想到会犯这种低级错误。 回顾整理一下吧&#xff1a; 原因&#xff1a;SpringBoot主配置类默认只会扫描自己所在的包及其子包下面的组件。其他位置的配置不会被扫描。 如果非要使用其他位置&#xff0c;就需要在启动类上面指定新的扫描位置。注意新的扫描位置会覆盖默…

C# 运算符重载

C# 运算符重载 运算符重载运算符重载的实现1. 类中重载的方法必须是public公有的2. 类中定义的重载方法必须是静态的3. 在运算符前需要加上关键字 operator 使用如下可重载和不可重载运算符实例 运算符重载 一提到 - * / %这种类似的运算符都应该很清楚是什么&#xff0c;但是…