好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

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

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

搭建admin-server

pom依赖

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

<? 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配置

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

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

启动类

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

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类

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

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 微服务监控内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

原文链接:https://blog.csdn.net/XinTeng2012/article/details/120988806

查看更多关于SpringBoot-Admin实现微服务监控+健康检查+钉钉告警的详细内容...

  阅读:13次