今天本来是来参加公司所谓的核心员工的内部培训的,会议在下午,想着搞一天算加班。所以上午送老婆上班就顺便过来了,看了会技术视频,头有点大,就想着换换脑子。昨天看到一个朋友分享的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相关推荐

  1. 搭建springcloud微服务下的网关Netfilx Zuul

    原创文章转载请注明来源:https://blog.csdn.net/weixin_41756573/article/details/88689617 1.pom.xml(基于springboot2.0 ...

  2. SpringCloud 微服务监控方案sentinel + spring boot admin

    SpringCloud 微服务监控方案sentinel + spring boot admin 前言:项目基于springcloud框架,服务注册中心使用的是Eureka spring boot ad ...

  3. 微服务下的APM全链路监控

    https://opentalk.upyun.com/333.html 2017 年 10 月 29 日,又拍云 Open Talk 联合 Spring Cloud 中国社区成功举办了"进击 ...

  4. 计算机毕业设计springcloud“微服务”架构下新闻头条的设计与实现

    最新计算机专业原创毕业设计参考选题都有源码+数据库是近期作品 你的选题刚好在下面有,有时间看到机会给您发 1 ssm毕业生实习管理系统 2 ssm基于vue.js开发的红酒网站 3 springboo ...

  5. SpringCloud微服务(04):Turbine组件,实现微服务集群监控

    一.聚合监控简介 1.Dashboard组件 微服务架构中为了保证程序的可用性,防止程序出错导致网络阻塞,出现了断路器模型.断路器的状况反应程序的可用性和健壮性,它是一个重要指标.HystrixDas ...

  6. SpringCloud微服务架构学习

    SpringCloud 1. 微服务架构理论入门 1.1. 微服务架构概述 微服务架构是一种架构模式,它提倡将单一应用程序划分为一组小的服务,服务之间互相协调,互相配合,为用户提供最终价值.每个服务运 ...

  7. SpringCloud微服务技术实践与总结(基础篇)

    1.认识微服务 1.1.单体架构 单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署. 单体架构的优缺点如下: 优点: 架构简单.部署成本低 缺点: 耦合度高(维护困难.升级困难) 1.2 ...

  8. 2021/04/25 SpringBoot + SpringCloud微服务项⽬交付案例

    第1章 SpringBoot + SpringCloud微服务项⽬交付案例 1.1 微服务概念 传统的是用户通过终端链接到应用里 现在服务往越来越小的方向做,把每个服务做成一个独立的功能,每个服务完成 ...

  9. 学习笔记:SpringCloud 微服务技术栈_实用篇①_基础知识

    若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 前言 学习视频链接 SpringCloud + RabbitMQ + Docker + Redis + 搜 ...

最新文章

  1. 五个角度解释深度学习中 Batch Normalization为什么效果好?
  2. SAP 预制发票报错 -Material 20000000 D119223073 in valuation area VNSM has inconsistant ML data- 之对策
  3. 实验9:Problem D: 从点到面
  4. 音视频技术开发周刊 | 201
  5. 应用程序添加到服务器,在同一应用程序中的配置服务器和eureka服务器:尝试连接到localhost:8761...
  6. 170. Two Sum III - Data structure design【easy】
  7. VB案例:宁越电子琴
  8. linux中pss用法,[Linux] Memory: VSS/RSS/PSS/USS
  9. Dapper在.Net中的使用(二)
  10. 关于如何学好前端开发,你需要知道的事!
  11. 优秀代码所具备的5大品质 你的代码呢?
  12. 基于OSSIM平台下华为交换机日志收集插件的开发
  13. Linux建立虚拟ip的方法
  14. 结对编程四则运算第三周-挑战出题(20172301、20172304、20172328)
  15. linux 命令 查询丢包率,linux测试丢包率的命令 linux查看丢包率命令
  16. 字节跳动年薪百万的测试开发=“半个产品+半个开发”?
  17. 大型重工机械设备远程监控系统平台
  18. ElasticSearch—冷热(hotwarm)架构部署
  19. 征战奥斯卡,3部冲奥动画短片制作解析抢鲜看
  20. 某校2019专硕编程题-素数和

热门文章

  1. vuecli脚手架的搭建
  2. 人生最难的阶段,是你不懂你自己
  3. 获取当天凌晨和第二天凌晨时间戳的工具类
  4. AE常用若干插件名称
  5. CF232E Quick Tortoise , Fzoj 3118
  6. openlayer拖动图标消失以及绘线穿越地图问题
  7. 【数据增强】---- 使用 Pytorch 裁剪图片并保存
  8. Latex生成两种效果的表格
  9. 我们用计算机玩反恐精英,电脑是联想B320昨天玩游戏反恐精英Online突然打不开了,双击以后显示游戏已停止工作,电脑不懂...
  10. 数据挖掘十大算法之决策树详解(1)