持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第21天,点击查看活动详情
哈喽,大家好,我是一条。
今天去厕所看到运维组的围在一块看监控仪表盘,这也太炫酷了,各项指标全部可视化,清晰明了。不行,我也得搞一个。
不去厕所(摸鱼)了,开干。
选型
线上应用监控,其实有很多开源组件,凭我多年经验,断定运维组用的应该是普罗米修斯(prometheus)+ Grafana。就像这样
或者是对于服务器资源的监控,这样:
这个呢,早就已经搞过了。毕竟我们只是开发,所以得搞个轻量级,上手快的,不能耽误其他工作。
SpringBootAdmin
轻量的来了,开箱即用。
第一步,不用想,引入pom依赖。
spring-boot-starter-web 这里有个坑,下期说。
<!-- SpringBoot Admin -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- 引入 Web 功能 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
搞错了,先建个工程哈,没建工程的一定要建个工程,没建工程的一定要建个工程,没建工程的一定要建个工程,重要的事说三遍。
然后写pom,写完pom再写配置。
这里有两种方式哈。
- 从注册中心nacos获取各服务的信息。
- 每个应用都暴露自己的信息,将其注册到admin
那我们肯定是选第一种了,毕竟nacos昨天已经搞完了,没搞的赶紧搞。
server:
port: 3001
servlet:
context-path: /cloud-admin
spring:
application:
name: cloud-alibaba-admin
cloud:
nacos:
discovery:
enabled: true
server-addr: xxxxxxxx:8848
namespace: 9862bd7f-2dc2-47a4-9c80-c6290c5c3e2b
metadata:
management:
context-path: ${server.servlet.context-path}/actuator
thymeleaf:
check-template: false
check-template-location: false
# 暴露端点
management:
endpoints:
web:
exposure:
include: '*' # 需要开放的端点。默认值只打开 health 和 info 两个端点。通过设置 *, 可以开放所有端点
endpoint:
health:
show-details: always
写个启动类,不多哔哔。@EnableAdminServer别忘了加。
@SpringBootApplication
@EnableAdminServer
public class AdminAppMain {
public static void main(String[] args) {
SpringApplication.run(AdminAppMain.class,args);
System.out.println("admin application starting success");
}
}
看效果
全部接入
其他应用想要接入监控,只需要注册到nacos,并暴露端点及元数据信息。
即修改bootstrap.yml
metadata:
management:
context-path: ${server.servlet.context-path}/actuator
安全控制
如此这样,一旦网址泄漏,服务信息即公之于众,所以得做个安全登录,为了方便,引入spring-security。
<!-- 开启登录认证功能 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
配置账号密码,默认用户是user 密码随机。
spring:
application:
name: cloud-alibaba-admin
security:
user:
name: y
password: b
下班
搞完下班,哎呀,望去厕所了。