SpringBoot Admin应用监控搭建
简介
Spring Boot Admin 用于监控基于 Spring Boot 的应用,它是在 Spring Boot Actuator 的基础上提供简洁的可视化 WEB UI。
参考手册地址:http://codecentric.github.io/spring-boot-admin/2.1.1/
Spring Boot Admin 是由服务端Server和客户端Client组成
- 服务端
- 1.创建一个springboot工程并添加以下依赖
1 <dependencies>
2 <dependency>
3 <groupId>org.springframework.boot</groupId>
4 <artifactId>spring-boot-starter-web</artifactId>
5 </dependency>
6
7 <dependency>
8 <groupId>de.codecentric</groupId>
9 <artifactId>spring-boot-admin-server</artifactId>
10 <version>2.1.1</version>
11 </dependency>
12
13 <dependency>
14 <groupId>de.codecentric</groupId>
15 <artifactId>spring-boot-admin-server-ui</artifactId>
16 <version>2.1.1</version>
17 </dependency>
18
19 <dependency>
20 <groupId>org.springframework.boot</groupId>
21 <artifactId>spring-boot-starter-security</artifactId>
22 </dependency>
23 </dependencies> - 2.重写权限控制类(非必要)
1 @Configuration
2 public class SecuritySecureConfig extends WebSecurityConfigurerAdapter {
3 private final String adminContextPath;
4
5 public SecuritySecureConfig(AdminServerProperties adminServerProperties) {
6 this.adminContextPath = adminServerProperties.getContextPath();
7 }
8
9 @Override
10 protected void configure(HttpSecurity http) throws Exception {
11 SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
12 successHandler.setTargetUrlParameter("redirectTo");
13 successHandler.setDefaultTargetUrl(adminContextPath + "/monitor");
14
15 http.authorizeRequests()
16 .antMatchers(adminContextPath + "/assets/**").permitAll()
17 .antMatchers(adminContextPath + "/login").permitAll()
18 .anyRequest().authenticated()
19 .and()
20 .formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and()
21 .logout().logoutUrl(adminContextPath + "/logout").and()
22 .httpBasic().and()
23 .csrf()
24 .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
25 .ignoringAntMatchers(
26 adminContextPath + "/instances",
27 adminContextPath + "/actuator/**"
28 );
29 }
30 }1 @EnableWebSecurity
2 public class WebSecurityConfig implements WebMvcConfigurer {
3
4 @Bean
5 public UserDetailsService userDetailsService() throws Exception {
6 InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();
7 manager.createUser(User.withDefaultPasswordEncoder().username("root").password("root").roles("administrator").build());
8 return manager;
9 }
10 } - 3.启动类添加注解@EnableAdminServer
1 @SpringBootApplication
2 @EnableAdminServer
3 public class AdminServerApplication{
4
5 public static void main(String[] args) {
6 SpringApplication.run(AdminServerApplication.class, args);
7 }
8 } - 4.配置application.yml
1 server:
2 port: 8081
3
4 spring:
5 boot:
6 admin:
7 context-path: monitor - 5.浏览器访问该项目
- 客户端
- 1.在需要被监控的应用里面添加如下依赖(注意版本号要与server端相同)
1 <dependency>
2 <groupId>de.codecentric</groupId>
3 <artifactId>spring-boot-admin-starter-client</artifactId>
4 <version>2.1.1</version>
5 </dependency> - 2.编辑配置文件(详细属性配置参考手册)
1 spring.boot.admin.client.url = http://localhost:8081/admin-server/monitor
2 spring.boot.admin.client.username = root
3 spring.boot.admin.client.password = root
4 spring.boot.admin.client.instance.service-base-url=http://localhost:8080
5 spring.boot.admin.client.instance.name = dida
6
7 management.endpoints.web.exposure.include = *
8 management.endpoint.health.show-details = ALWAYS
- 1.在需要被监控的应用里面添加如下依赖(注意版本号要与server端相同)
- 刷新服务端
问题记录
按照上面的操作,我把公司的一个项目配置成了客户端。在我的win10系统电脑上面运行这两个程序是没有问题的。但是当实际部署在linux服务器上面的时候就遇到了问题:我把springbootAdmin的server端部署到了linux服务器(服务器1),把要监控的项目部署到了另一台Linux服务器(服务器2),这两台服务器处于同一个局域网内。运行这两个项目,发现程序server端能够发现这个我的client项目,但是client项目一直处于断开状态。
错误日志
WARN de.codecentric.boot.admin.client.registration.ApplicationRegistrator.register Line:115 - Failed to register application as Application
(name=dida, managementUrl=http://www.xxx.com:8081/dida/actuator, healthUrl=http://www.xxx.com:8081/dida/actuator/health,serviceUrl=http://www.xxx.com:8081/dida)
at spring-boot-admin ([http://admin.xxx.com:8080/monitor/instances]): 404 null. Further attempts are logged on DEBUG level
经过多次尝试,发现spring.boot.admin.client.url 该项目配置应该配置ip地址 http://172.18.0.188:8080/monitor,而不是域名。
INFO de.codecentric.boot.admin.client.registration.ApplicationRegistrator.register Line:98 - Application registered itself as 2449779efa06
日志显示注册成功。
待补充 ... ...
SpringBoot Admin应用监控搭建的更多相关文章
- 关于SpringBoot Admin server 监控注意事项
当你导入了依赖 <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-bo ...
- 使用SpringBoot Admin监控SpringCloud微服务
spring-boot admin的github地址:https://github.com/codecentric/spring-boot-admin 本文基于SpringCloud的环境和配置上增加 ...
- Springboot监控之二:Spring Boot Admin对Springboot服务进行监控
概述 Spring Boot 监控核心是 spring-boot-starter-actuator 依赖,增加依赖后, Spring Boot 会默认配置一些通用的监控,比如 jvm 监控.类加载.健 ...
- 【Springboot】用Springboot Admin监控你的微服务应用
1 简介 目前,微服务大行其道,各大小公司争相学习模仿,把单体应用拆得七零八落.服务多了,运行的实例多了,给运维人员的压力就更大了.如果有十几个应用,单单做Health Check就已经够费时间的了. ...
- Spring-Boot之Admin服务监控-9
一.Spring Boot Admin用于管理和监控一个或者多个Spring Boot程序.Spring Boot Admin分为Server端和Client 端,Client端可以通过向Http S ...
- SpringBoot系列——admin服务监控
前言 springboot项目部署起来后,如何实时监控项目的运行状况呢?本文记录使用springboot-admin对服务进行监控. springboot-admin介绍:https://codece ...
- Spring Cloud第十三篇 | Spring Boot Admin服务监控
本文是Spring Cloud专栏的第十三篇文章,了解前十二篇文章内容有助于更好的理解本文: Spring Cloud第一篇 | Spring Cloud前言及其常用组件介绍概览 Spring Clo ...
- 实战SpringBoot Admin
长话短说哦,直接查看下文吧 目录 声明 先锋 前提 SpringBoot Admin 介绍 服务端的搭建 客户端的搭建 参数的指南 尾声 声明 见名知意,实战SpringBoot Admin,实战!实 ...
- LNMP+zabbix分布式监控搭建及版本升级
LNMP+zabbix分布式监控搭建需要组件:gcc gcc-c++ openssl* pcre pcre-devel gd gd-devel libjpeg-devel libpng-devel l ...
随机推荐
- 第2层交换和生成树协议(STP)__MAC地址表
1.MAC(Media Access Control, 介质访问控制)地址是识别LAN节点的标识.网卡的物理地址通常是由网卡生产厂家烧入网卡的EPROM(一种闪存芯片,通常可以通过程序擦写),它存储的 ...
- java封装详解
三大特性之---封装 封装从字面上来理解就是包装的意思,专业点就是信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能 ...
- httprunner(4)录制生成测试用例
前言 写用例之前,我们应该熟悉API的详细信息.建议使用抓包工具Charles或AnyProxy进行抓包. har2case 我们先来了解一下另一个项目har2case 他的工作原理就是将当前主流的抓 ...
- 数组复制函数memcpy和strcpy
strcpy和memcpy主要有以下3方面的区别.1.复制的内容不同.strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组.整型.结构体.类等.2.复制的方法不同.strcpy不需 ...
- SPOJ Favorite Dice(概率dp)
题意: 一个骰子,n个面,摇到每一个面的概率都一样.问你把每一个面都摇到至少一次需要摇多少次,求摇的期望次数 题解: dp[i]:已经摇到i个面,还需要摇多少次才能摇到n个面的摇骰子的期望次数 因为我 ...
- Codeforces Round #177 (Div. 2) B. Polo the Penguin and Matrix (贪心,数学)
题意:给你一个\(n\)x\(m\)的矩阵,可以对矩阵的所有元素进行\(\pm d\),问能否使得所有元素相等. 题解:我们可以直接记录一个\(n*m\)的数组存入所有数,所以\((a_1+xd)=( ...
- Educational Codeforces Round 94 (Rated for Div. 2) C. Binary String Reconstruction (构造)
题意:给你一个字符串\(s\),原字符串为\(w\),如果\(i>x\)且\(w_{i-x}=1\),那么\(s_{i}=1\),如果\(i+x\le n\)且\(w_{i+x}=1\),那么\ ...
- vi、wc、gzip、bzip2、tar、yum安装、dpek、用户信息操作等命令
命令模式 输入"dd"即可将这一行删除 按下"p"即可粘贴 插入模式: a:从光标这个位置之后插入 A:在行尾插入 i:从光标之前插入 I:行首插入 o:在光标 ...
- Codeforces Round #655 (Div. 2) C. Omkar and Baseball (思维)
题意:有一个数组,每次可以修改子数组,但是修改后每个元素的位置都必须变化,求最少修改多少次使得这个数组有序. 题解:假如这个数组本来就有序,我们直接输出0.否则,对于数组两端,假如它们有序,那么我们可 ...
- Gome 高性能撮合引擎微服务
Gome 高性能撮合引擎微服务 使用 Golang 做计算,gRPC 做服务,ProtoBuf 做数据交换,RabbitMQ 做队列,Redis 做缓存实现的高性能撮合引擎微服务 依赖 具体依赖信息可 ...