SpringBoot-Admin实现微服务监控+健康检查+钉钉告警

基于SpringCloud微服务平台,进行服务实例监控及健康检查,注册中心为eureka,SpringBoot提供了很好的组件SpringBoot Admin,2.X版本直接可以配置钉钉机器人告警。

效果:可以实现eureka注册的实例上线、下线触发钉钉告警。监控我们的服务实例健康检查。

搭建admin-server

pom依赖

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<parent>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-parent</artifactId>

<version>2.4.11</version>

<relativePath/> <!-- lookup parent from repository -->

</parent>

<groupId>com.example</groupId>

<artifactId>admin-server</artifactId>

<version>1.0.0</version>

<name>etc-admin-server</name>

<description>Spring Boot Admin监控eureka服务实例和健康检查,钉钉告警</description>

<properties>

<java.version>1.8</java.version>

<spring-boot-admin.version>2.4.3</spring-boot-admin.version>

<spring-cloud.version>2020.0.4</spring-cloud.version>

</properties>

<dependencies>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-security</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

</dependency>

<dependency>

<groupId>de.codecentric</groupId>

<artifactId>spring-boot-admin-starter-server</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-test</artifactId>

<scope>test</scope>

</dependency>

</dependencies>

<dependencyManagement>

<dependencies>

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-dependencies</artifactId>

<version>${spring-cloud.version}</version>

<type>pom</type>

<scope>import</scope>

</dependency>

<dependency>

<groupId>de.codecentric</groupId>

<artifactId>spring-boot-admin-dependencies</artifactId>

<version>${spring-boot-admin.version}</version>

<type>pom</type>

<scope>import</scope>

</dependency>

</dependencies>

</dependencyManagement>

<build>

<finalName>${project.name}</finalName>

<plugins>

<plugin>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-maven-plugin</artifactId>

</plugin>

</plugins>

</build>

</project>

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;

/**

* @author xxx

*/

@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;

/**

* WebSecurity配置

* @author xxxx

*/

@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

}

}

启动后效果

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

到此这篇关于SpringBoot-Admin实现微服务监控+健康检查+钉钉告警的文章就介绍到这了,更多相关SpringBoot-Admin 微服务监控内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

以上是 SpringBoot-Admin实现微服务监控+健康检查+钉钉告警 的全部内容, 来源链接: utcz.com/p/250246.html

回到顶部