框架建设收集

Spring Boot Admin实现服务监控

2019-05-23  本文已影响103人  SMTC

Spring Boot Admin简介

SBA 全称 Spring Boot Admin Spring Boot Admin是一个开源社区项目,用于管理和监控SpringBoot应用程序。 应用程序作为Spring Boot Admin Client向为Spring Boot Admin Server注册(通过HTTP)或使用SpringCloud注册中心(例如Eureka,Consul)发现。 UI是的AngularJs应用程序,展示Spring Boot Admin Client的Actuator端点上的一些监控。常见的功能或者监控如下:


SBA结合eureka实现服务监控以及邮件通知

搭建eureka集群服务

首先搭建注册中心
eureka server HA服务,至少启动2个服务。

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
            <version>2.1.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
/**
 * @author sl
 */
@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }

}
# server (eureka 默认端口为:8761)
server.port=8761
# 服务名
spring.application.name=eureka-server
# 是否注册到eureka(eureka本身是不需要再注册到自己的)
eureka.client.register-with-eureka=false
# 是否从eureka获取注册信息
eureka.client.fetch-registry=false
# eureka服务器的地址
eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/
#服务失效时间,Eureka多长时间没收到服务的renew操作,就剔除该服务,默认90秒
eureka.instance.leaseExpirationDurationInSeconds=90
#eureka server清理无效节点的时间间隔,默认60000毫秒,即60秒
eureka.server.evictionIntervalTimerInMs=20000
# 自我保护模式(缺省为打开)
eureka.server.enable-self-preservation=false
# 续期时间,即扫描失效服务的间隔时间(缺省为60*1000ms)
eureka.server.eviction-interval-timer-in-ms=20000
#logback配置
logging.path=./logs
logging.file=eureka-server.log
logging.level.root=info

由于在开发环境下很容易出现自我保护机制,推荐开发环境关闭eureka自我保护机制

镜像配置一台端口为8762 eureka服务,此处省略


搭建spring boot admin server服务,即监控程序

pom添加如下依赖

       <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            <version>2.1.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-server</artifactId>
            <version>2.1.3</version>
        </dependency>
/**
 * @author sl
 */
@SpringBootApplication
@EnableAdminServer
@EnableDiscoveryClient
public class UnionAdminApplication {

    public static void main(String[] args) {
        SpringApplication.run(UnionAdminApplication.class, args);
    }

}
spring.application.name=admin-server
server.port=43200
#eureka config
eureka.instance.health-check-url-path=/actuator/health
eureka.client.registry-fetch-interval-seconds=5
eureka.client.service-url.defaultZone=http://192.168.94.44:8761/eureka
# 是否注册到eureka(eureka本身是不需要再注册到自己的)
eureka.client.register-with-eureka=false
##############################日志配置#############################
logging.path=./logs
logging.file=admin.log
logging.level.root=info

#邮件配置
spring.mail.host=smtp.qq.com
spring.mail.username=****@qq.com
spring.mail.password=*****
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
# 发送给谁
spring.boot.admin.notify.mail.to=***@**.com,***@**.com
# 是谁发送出去的
spring.boot.admin.notify.mail.from=***@qq.com

应用服务接入

由于受到公司框架制约应用sprngboot版本无法升级到2.0.X,因此admin client 采用1.5.x版本

可以使用Spring Boot Admin 2.x监视Spring Boot 1.5.x应用程序。旧的Spring Boot Admin Client能够在较新的服务器上注册。由于API稍有更改,因此您需要在旧客户端上设置以下属性:
重新配置Spring Boot Admin Client 1.5.x的api路径:
application.yml

spring.boot.admin.api-path: instances**

由于一些执行器端点随Spring Boot 2发布而改变,因此并非所有选>项都可用(例如/metrics端点); 对于某些端点,我们提供传统转换>器。

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            <version>1.4.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-client</artifactId>
            <version>1.5.7</version>
        </dependency>

/**
 * @author sl
 */
@EnableTransactionManagement
@SpringBootApplication(scanBasePackages = {"com.demo.ai.aidrg"},
        exclude = {DataSourceAutoConfiguration.class})
public class AidrgApplication {

    public static void main(String[] args) {
        SpringApplication.run(AidrgApplication.class, args);
    }

    @RestController
    public static class EchoTest {

        @GetMapping("/")
        public Result<String> echo() {
            return Results.success("AidrgApplication");
        }

    }

}
#eureka配置
eureka.instance.prefer-ip-address=true
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
eureka.client.service-url.defaultZone=http://192.168.94.44:8761/eureka/
eureka.client.registryFetchIntervalSeconds=15
eureka.instance.leaseRenewalIntervalInSeconds=10

#监控
management.endpoint.health.show-details=ALWAYS
management.endpoints.jmx.exposure.exclude=*
management.endpoints.web.exposure.include=*
spring.boot.admin.api-path=instances
management.security.enabled=false
management.context-path=/actuator

效果

注册中心中可以看到注册的服务


image.png image.png image.png image.png
上一篇下一篇

猜你喜欢

热点阅读