SpringCloud微服务下的健康监控Admin
序
今天本来是来参加公司所谓的核心员工的内部培训的,会议在下午,想着搞一天算加班。所以上午送老婆上班就顺便过来了,看了会技术视频,头有点大,就想着换换脑子。昨天看到一个朋友分享的SpringBoot+Prometheus+Grafana实现应用监控和报警,大概看了下springboot版本有点老,况且觉得现在spring生态有这样的组件支持为啥不试试,所以就整整这个Admin。这里分享的是springCloud使用Eureka下的监控监控,废话完毕。
一、各个服务开启actuator
说到底这个Admin实际就是对actuator监控监控没有界面的补充,所以要弄这个Admin必须先集成开启actuator。我这里因为是springCloud项目,且所有项目是简历在一个父级项目下的,所以我直接在父级的pom.xml增加对actuator的支持。
<!-- actuator支持 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency>
我这里因为各个springBoot服务都有自定义的WebMvcConfigurer类,里面有对请求进行拦截,所以我需要放开所有actuator的请求。我这里的放行请求url是放在一个global.yml配置文件里,各配置类拦截到请求先比较匹配确定是否要校验token,看看我这里/actuator/**.
#不校验token放行url
web:pass:url: /**/error,/**/login/**,/**/user/info/checkUserExist,/**/user/info/register,/**/getMobileValidCode,/**/user/info/forgetLoginPassword,/**/open/**,/**/file/storage/downloadFile,/actuator/**
验证各服务是否可以直接访问/actuator请求,例如我这里:
二、增加健康监控Admin moudle
这个建一个springBoot的maven项目我就不多说了,下面先看下结构:
1、pom.xml
<!-- 注册中心客户端支持 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><!-- openFeign支持 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><!-- 配置中心支持 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-config</artifactId></dependency><!-- springboot admin支持 --><dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-server</artifactId></dependency><!-- security权限支持 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency><!-- 邮件支持 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency>
这个module也是在主项目下的,所以里面没有actuator的引包。这几个除了配置中心、openFeign不是必须的(根据自己项目的情况)其他几个都是必须的。
2、配置文件
bootstrap.yml
#如果通过注册中心取配置,eureka的配置必须本地配置
eureka:client:serviceUrl:defaultZone: http://@fsihouse.eureka@:8801/eureka/instance:metadata-map:user.name: fsihouseAdminuser.password: 123456#配置信息获取配置设置
spring:cloud:config:name: fsihouse-global-config,fsihouse-cloud-adminprofile: @spring.cloud.config.profile@#uri: http://localhost:8802discovery:enabled: trueserviceId: fsihouse-cloud-configloadbalancer: #springCloud已经包含,ribbon已经进入维护期,不会再增加新特性ribbon:enabled: falsemain:allow-bean-definition-overriding: true
这里要说明的是instance下的配置,这个里面的账号是配置的security安全方面的账号与后面的Admin的登录账号密码一致。
然后我这里因为是用的配置中心,可以看到是引入了global配置、admin的配置。
fsihouse-cloud-admin.yml
#admin的配置
server:port: 9009
spring:application:name: FSIHOUSE-CLOUD-ADMINsecurity: #security授权账号,与eureka里的账号一致user:name: fsihouseAdminpassword: 123456boot:admin:ui:title: 菲寓Adminnotify: #开启邮件通过mail:cc: zhengwen@xx.com #抄送enabled: true #开启邮件通知功能from: 269026790@qq.com #发送者to: zwsky88@126.com #发给谁mail:host: smtp.qq.comport: 465username: 269026790@qq.compassword: xxxxxxprotocol: smtptest-connection: trueproperties:mail.smtp.auth: truemail.smtp.ssl.enable: truemail.smtp.connectiontimeout: 5000mail.smtp.writetimeout: 5000mail.smtp.timeout: 3000#日志配置
logging:file:name: ./logs/fsihouse-cloud-admin.loglevel:root: infoconfig: classpath:config/logback-spring.xml
path:log: ./logs/fsihouse-cloud-admin/
3、java类
启动类,注意注解@EnableAdminServer
/*** @author zhengwen*/
@EnableDiscoveryClient
@EnableAdminServer
@SpringBootApplication
public class FsihouseCloudAdminApplication {public static void main(String[] args) {SpringApplication.run(FsihouseCloudAdminApplication.class, args);System.out.println("--健康监控启动成功--");}}
配置类
/*** @author zhengwen**/
@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").permitAll().anyRequest().authenticated().and().formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and().logout().logoutUrl(adminContextPath + "/logout").and().httpBasic().and().csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()).ignoringAntMatchers(adminContextPath + "/instances",adminContextPath + "/actuator/**");}}
三、监控报警邮件提醒
这个其实已经在上面的pom.xml、admin.yml里都有了配置,也有描述。其实就是要引入mail支持,然后配置邮件发送、接收信息,注意password不是真实的密码,而是生成的客户端的专用密码。具体配置各邮箱都有说明。我这里是用qq邮箱试验的。
四、效果查看
账号密码与配置文件里的一致。
五、总结
先赞美下spring生态,这个真是不错,妈妈再也不用担心我服务不知不觉挂了的情况了。
但是也有不足,首先就是监控的界面都不怎么好看,发送的邮件更是不忍直视。
前面说的SpringBoot+Prometheus+Grafana好像做的更好,而且支持k8s,不过个人还是期待spring的生态做的更好点。其实理解这个原理了,自己都可以专门做个Admin,反正就是将actuator的一下指标美化展示嘛。另外就是部署说一下,这个Admin我个人觉得单独部署在一个靠谱服务器上才能真正起到监控效果,不然,那服务器都挂了,邮件肯定也发不出来。
希望能帮到大家。谢谢
SpringCloud微服务下的健康监控Admin相关推荐
- 搭建springcloud微服务下的网关Netfilx Zuul
原创文章转载请注明来源:https://blog.csdn.net/weixin_41756573/article/details/88689617 1.pom.xml(基于springboot2.0 ...
- SpringCloud 微服务监控方案sentinel + spring boot admin
SpringCloud 微服务监控方案sentinel + spring boot admin 前言:项目基于springcloud框架,服务注册中心使用的是Eureka spring boot ad ...
- 微服务下的APM全链路监控
https://opentalk.upyun.com/333.html 2017 年 10 月 29 日,又拍云 Open Talk 联合 Spring Cloud 中国社区成功举办了"进击 ...
- 计算机毕业设计springcloud“微服务”架构下新闻头条的设计与实现
最新计算机专业原创毕业设计参考选题都有源码+数据库是近期作品 你的选题刚好在下面有,有时间看到机会给您发 1 ssm毕业生实习管理系统 2 ssm基于vue.js开发的红酒网站 3 springboo ...
- SpringCloud微服务(04):Turbine组件,实现微服务集群监控
一.聚合监控简介 1.Dashboard组件 微服务架构中为了保证程序的可用性,防止程序出错导致网络阻塞,出现了断路器模型.断路器的状况反应程序的可用性和健壮性,它是一个重要指标.HystrixDas ...
- SpringCloud微服务架构学习
SpringCloud 1. 微服务架构理论入门 1.1. 微服务架构概述 微服务架构是一种架构模式,它提倡将单一应用程序划分为一组小的服务,服务之间互相协调,互相配合,为用户提供最终价值.每个服务运 ...
- SpringCloud微服务技术实践与总结(基础篇)
1.认识微服务 1.1.单体架构 单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署. 单体架构的优缺点如下: 优点: 架构简单.部署成本低 缺点: 耦合度高(维护困难.升级困难) 1.2 ...
- 2021/04/25 SpringBoot + SpringCloud微服务项⽬交付案例
第1章 SpringBoot + SpringCloud微服务项⽬交付案例 1.1 微服务概念 传统的是用户通过终端链接到应用里 现在服务往越来越小的方向做,把每个服务做成一个独立的功能,每个服务完成 ...
- 学习笔记:SpringCloud 微服务技术栈_实用篇①_基础知识
若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 前言 学习视频链接 SpringCloud + RabbitMQ + Docker + Redis + 搜 ...
最新文章
- 五个角度解释深度学习中 Batch Normalization为什么效果好?
- SAP 预制发票报错 -Material 20000000 D119223073 in valuation area VNSM has inconsistant ML data- 之对策
- 实验9:Problem D: 从点到面
- 音视频技术开发周刊 | 201
- 应用程序添加到服务器,在同一应用程序中的配置服务器和eureka服务器:尝试连接到localhost:8761...
- 170. Two Sum III - Data structure design【easy】
- VB案例:宁越电子琴
- linux中pss用法,[Linux] Memory: VSS/RSS/PSS/USS
- Dapper在.Net中的使用(二)
- 关于如何学好前端开发,你需要知道的事!
- 优秀代码所具备的5大品质 你的代码呢?
- 基于OSSIM平台下华为交换机日志收集插件的开发
- Linux建立虚拟ip的方法
- 结对编程四则运算第三周-挑战出题(20172301、20172304、20172328)
- linux 命令 查询丢包率,linux测试丢包率的命令 linux查看丢包率命令
- 字节跳动年薪百万的测试开发=“半个产品+半个开发”?
- 大型重工机械设备远程监控系统平台
- ElasticSearch—冷热(hotwarm)架构部署
- 征战奥斯卡,3部冲奥动画短片制作解析抢鲜看
- 某校2019专硕编程题-素数和