很多时候,你根本不会知道你服务在哪台实体机上执行,也不知道现在用到哪一版
所以在微服务系统架构中...监控管理是非常重要的一环
其实在 SpringBoot中有内建 提供非常多的资讯跟一些简单的服务管理功能
后来有一个团队做了不错看的 UI 出来, 就是 SpringBoot Admin 也跟 Spring Cloud 做了不错的整合, 就算不用 SpringCloud 单独使用也非常好用.
Server 端
首先我再建立个新专案叫 admin
专案的 build.gradle 如下
我们加上了 spring-boot-admin-server 这是监控端, spring-boot-admin-server-ui 就是 UI 啦
然后我们启动程程序加上
加上了 EnableAdminServer 就可以了
启动之后 打开
http://localhost:8080
然后当你用 Chrome 打开页面的时候, 会跳出下面通知接收的询问
这边我们先按允许
Client 端
客户端更简单, 只需要引入 spring-boot-admin-starter-client 套件
application.yml 我们改一下 port 然后加上 client 的配置让他知道 server 在哪
还有我们给应用程式一个名称 bookservice 之后比较好辨识
接下来只要启动程序就可以了, 你可以看到我们
画面中我们的 bookservice 是启动状态, 同时状态变动的时候 springboot admin 也会透过 chrome 的机制来通知我们
是不是感觉安心很多了呢? 至少不会发生服务挂掉一天一夜没人发现这种鸟事。
Client 端 安全机制
但是 Client 端的 port 跟 api 是一样的, 所以外面的人也可以透过这个 port 来监控你的应用
所以我们再做一点手脚来保护
简单一点的呢....就直接加上
预设呢....就是所有 API 全部都需要授权(包含监控资讯)
所以稍微加上自己的配置 WebSecurityConfig.java, 作用在我们自己写的 api 开头 url 开放(之后会再用我们自订的管理方式), 其他都需要授权
然后配置档 application.yml 就改成 这样
management.security.enabled 一定要开启, 不开启等于没有生效
security 这边就是 basicAuth
admin.client 这边就是让 server 端可以透过 basicAuth 正常存取 Client 的资讯
閱讀更多 Java高級開發工程師 的文章