基于SpringCloud微服务平台,进行服务实例监控及健康检查,注册中心为eureka,SpringBoot提供了很好的组件SpringBoot Admin,2.X版本直接可以配置钉钉机器人告警。
效果:可以实现eureka注册的实例上线、下线触发钉钉告警。监控我们的服务实例健康检查。
- 搭建admin-server
- pom依赖
在这里插入代码片 4.0.0 org.springframework.boot spring-boot-starter-parent 2.4.11 com.example admin-server 1.0.0 etc-admin-server Spring Boot Admin监控eureka服务实例和健康检查,钉钉告警 1.8 2.4.3 2020.0.4 org.springframework.boot spring-boot-starter-security org.springframework.boot spring-boot-starter-web de.codecentric spring-boot-admin-starter-server org.springframework.cloud spring-cloud-starter-netflix-eureka-client org.springframework.boot spring-boot-starter-test test org.springframework.cloud spring-cloud-dependencies ${spring-cloud.version} pom import de.codecentric spring-boot-admin-dependencies ${spring-boot-admin.version} pom import ${project.name} org.springframework.boot spring-boot-maven-plugin
- application.yml配置
spring:
application:
name: admin-server
security:
user:
name: "admin"
password: "pwd"
boot:
admin:
notify:
dingtalk:
enabled: true
webhookUrl: 'https://oapi.dingtalk.com/robot/send?access_token=钉钉机器人access_token'
secret: '钉钉机器人secret'
message: '服务告警: #{instance.registration.name} #{instance.id} is #{event.statusInfo.status}'
server:
port: 9002
eureka:
client:
registryFetchIntervalSeconds: 5
service-url:
defaultZone: 'http://127.0.0.1:8020/eureka/'
instance:
hostname: ${spring.cloud.client.ip-address}
instance-id: ${spring.cloud.client.ip-address}:${server.port}
prefer-ip-address: true
ip-address: ${spring.cloud.client.ip-address}
leaseRenewalIntervalInSeconds: 10
health-check-url-path: /actuator/health
metadata-map:
user.name: ${spring.security.user.name}
user.password: ${spring.security.user.password}
management:
endpoints:
web:
exposure:
include: "*"
endpoint:
health:
show-details: ALWAYS
- 启动类
package com.example;
import de.codecentric.boot.admin.server.config.EnableAdminServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@EnableAdminServer
@EnableDiscoveryClient
@SpringBootApplication
public class AdminServerApplication {
public static void main(String[] args) {
SpringApplication.run(AdminServerApplication.class, args);
}
}
- config类
package com.example;
import de.codecentric.boot.admin.server.config.AdminServerProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;
import org.springframework.security.web.csrf.cookieCsrfTokenRepository;
@Configuration
public class WebSecurityConfigure extends WebSecurityConfigurerAdapter {
private final String adminContextPath;
public WebSecurityConfigure(AdminServerProperties adminServerProperties) {
this.adminContextPath = adminServerProperties.getContextPath();
}
@Override
protected void configure(HttpSecurity http) throws Exception {
// @formatter:off
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/**"
);
// @formatter:on
}
}
- 启动后效果
-------------欢迎各位留言交流,如有不正确的地方,请予以指正。【Q:981233589】



