Spring-Boot之Admin服务监控-9

  一、Spring Boot Admin用于管理和监控一个或者多个Spring Boot程序。Spring Boot Admin分为Server端和Client 端,Client端可以通过向Http Server端注册,也可以结合SpringCloud的服务注册组件Eureka 进行注册。SpringBoot Admin 提供了用AngularJs 写的 Ul 界面,用于管理和监控。其中监控内容包括Spring Boot的监控组件Actuator的各个Http节点,也支持更高级的功能,包括Turbine、Jmx、Loglevel 等。

  二、直接使用Spring Boot Admin监控客户端

  1、Admin Server

  (1)加入依赖

        <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>
            <version>2.0.4</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

  (2)编写启动项

package com.cetc;

import de.codecentric.boot.admin.server.config.EnableAdminServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@EnableAdminServer
public class AdminServerApplication {

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

}

  (3)编写配置文件application.yaml

server:
  port: 8691
spring:
  application:
    name: admin-server
management:
  endpoints:
    web:
      exposure:
        include: ["*"]
  endpoint:
    health:
      show-details: always

  2、Admin Client,为了简单使用,我这里还是通过feign的方式去接入Eureka的服务。

  (1)目录结构和Spring-Cloud之Feign声明式调用-4类似,这里全部写出来,有兴趣可以看下方源码

  

  (2)加入依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--admin-client-->
        <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>2.0.4</version>
        </dependency>
        <!--admin-client-->

  (3)启动项没有什么特别的,这里直接编写配置文件application.yaml

server:
  port: 8692
spring:
  application:
    name: admin-client
  boot:
    admin:
      client:
        url: ["http://127.0.0.1:8691"] # 配置注册的admin Server服务
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:8670/eureka/ # 实际开发中建议使用域名的方式
management:
  endpoints:
    web:
      exposure:
        include: ["*"]
  endpoint:
    health:
      show-details: always
    logfile:
      external-file: logs/log.log # 这里的配置主要是在admin server中看到日志记录
logging:
  path: logs
  file: logs/log.log # 日志配置

  3、测试。启动Eureka-Server,Eureka-Client,Admin-Server,Admin-Client。端口分别为:8670、8673、8691、8692。

  (1)Eureka-Server注册效果

  

  (2)Admin-Server效果

  

  三、让Admin-Server通过Eureka注册中心来监控所有服务(这才是重点),这里还加入了Security配置,主要目的是为了安全。

  1、Admin-Server

  (1)所需依赖

        <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-web</artifactId>
        </dependency>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-server</artifactId>
            <version>2.0.4</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

  说明:spring-boot-admin-starter-server的版本选择要慎重,不然会有很多坑。

  (2)编写启动项

package com.cetc;

import de.codecentric.boot.admin.server.config.EnableAdminServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@SpringBootApplication
@EnableAdminServer
@EnableEurekaClient
public class AdminServerApplication {

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

  (3)编写Security配置,这里也可以参考官网配置:https://codecentric.github.io/spring-boot-admin/2.0.4/#_securing_spring_boot_admin_server

package com.cetc.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter{

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .csrf().disable()
            .authorizeRequests()
            .anyRequest()
            .authenticated()
        .and()
            //说明:这里和官网不同的是,因为默认端口为/login,所以我这里直接放开login.html就可以了不用配置loginProcessingUrl
            //在说明一点,这里是采用的本地页面的。如果前后端分开,请配具体的登录接口。
            .formLogin()
            .loginPage("/login.html").permitAll()
        .and()
            //默认接口/logout,不用配置logoutUrl
            .logout()
            .logoutSuccessUrl("/login.html")
        .and()
            //这里必须加入httpBasic,因为Eureka-Server是基于最原始的方式进行验证的。
            .httpBasic();
    }
}

  (4)编写配置文件

server:
  port: 8691
spring:
  application:
    name: admin-server
  security:
    user:
      name: admin
      password: admin # 加入登录密码
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:8670/eureka/ # 实际开发中建议使用域名的方式
  instance:
    metadata-map:
      user.name: ${spring.security.user.name}
      user.password: ${spring.security.user.password}
management:
  endpoints:
    web:
      exposure:
        include: ["*"]
  endpoint:
    health:
      show-details: always # 显示具体详情

  说明:metadata-map,主要用于方向验证使用。

  2、Admin-Client这里不需要修改任何配置,只需要注册配置文件手动注册的配置

server:
  port: 8692
spring:
  application:
    name: admin-client
#  boot:
#    admin:
#      client:
#        url: ["http://127.0.0.1:8691"] # 配置注册的admin Server服务
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:8670/eureka/ # 实际开发中建议使用域名的方式
management:
  endpoints:
    web:
      exposure:
        include: ["*"]
  endpoint:
    health:
      show-details: always
    logfile:
      external-file: logs/log.log # 这里的配置主要是在admin server中看到日志记录
logging:
  path: logs
  file: logs/log.log # 日志配置

  3、测试。启动Eureka-Server,Eureka-Client,Admin-Server,Admin-Client。端口分别为:8670、8673、8691、8692。

  (1)Eureka-Server效果

  

  (2)Admin-Server效果

  

  说明:为什么Eureka-Client是INSTANCES DOWN的状态。这里服务其实是正常的,最主要的点在于Eureka-Client没有配置actuator。所以访问不到/acturtor/health接口。

  四、源码地址:https://github.com/lilin409546297/spring-cloud/tree/master/admin

原文地址:https://www.cnblogs.com/ll409546297/p/12068797.html

时间: 2024-11-10 08:34:53

Spring-Boot之Admin服务监控-9的相关文章

Spring Cloud第十三篇 | Spring Boot Admin服务监控

本文是Spring Cloud专栏的第十三篇文章,了解前十二篇文章内容有助于更好的理解本文: Spring Cloud第一篇 | Spring Cloud前言及其常用组件介绍概览 Spring Cloud第二篇 | 使用并认识Eureka注册中心 Spring Cloud第三篇 | 搭建高可用Eureka注册中心 Spring Cloud第四篇 | 客户端负载均衡Ribbon Spring Cloud第五篇 | 服务熔断Hystrix Spring Cloud第六篇 | Hystrix仪表盘监控

Spring Boot、微服务架构和大数据

一文读懂 Spring Boot.微服务架构和大数据治理三者之间的故事 https://www.cnblogs.com/ityouknow/p/9034377.html 微服务架构 微服务的诞生并非偶然,它是在互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下诞生的产物.互联网时代的产品通常有两类特点:需求变化快和用户群体庞大,在这种情况下,如何从系统架构的角度出发,构建灵活.易扩展的系统,快速应对需求的变化:同时,随着用户的增加,如何保证系统的可伸缩性.高可用性,

一文读懂 Spring Boot、微服务架构和大数据治理三者之间的故事

微服务的诞生并非偶然,它是在互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下诞生的产物. 微服务的诞生并非偶然,它是在互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下诞生的产物.互联网时代的产品通常有两类特点:需求变化快和用户群体庞大,在这种情况下,如何从系统架构的角度出发,构建灵活.易扩展的系统,快速应对需求的变化:同时,随着用户的增加,如何保证系统的可伸缩性.高可用性,成为系统架构面临的挑战.如果你想了解大数据的学习路线,想学习

使用Spring Boot构建微服务(文末福利)

本文主要内容 学习微服务的关键特征 了解微服务是如何适应云架构的 将业务领域分解成一组微服务 使用Spring Boot实现简单的微服务 掌握基于微服务架构构建应用程序的视角 学习什么时候不应该使用微服务 软件开发的历史充斥着大型开发项目崩溃的故事,这些项目可能投资了数百万美元.集中了行业里众多的顶尖人才.消耗了开发人员成千上万的工时,但从未给客户交付任何有价值的东西,最终由于其复杂性和负担而轰然倒塌. 这些庞大的项目倾向于遵循大型传统的瀑布开发方法,坚持在项目开始时界定应用的所有需求和设计.这

代码大爆炸|用Spring Boot创建微服务的21种代码描述(上)

代码大爆炸|用Spring Boot创建微服务的21种代码描述(上)

Spring Boot使用Druid和监控配置

Spring Boot默认的数据源是:org.apache.tomcat.jdbc.pool.DataSource Druid是Java语言中最好的数据库连接池,并且能够提供强大的监控和扩展功能. 下面来说明如何在 Spring Boot 中配置使用Druid (1)添加Maven依赖 (或jar包)\ <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId&g

搭建spring boot+elasticsearch+activemq服务

目前时间是:2017-01-24 本文不涉及activemq的安装 需求 activemq实时传递数据至服务 elasticsearch做索引 对外开放查询接口 完成全文检索 环境 jdk:1.8 spirng boot:1.4.3.RELEASE elasticsearch:2.4.3 activemq:5.13.2 ES插件 head:版本好像无太大差别 能查数据就行 analysis-ik:1.10.3 search-guard-2:2.4.3.9 search-guard-ssl:2.4

spring cloud + spring boot +分布式微服务云架构

做一个微服务架构需要的技术整理: View: H5.Vue.js.Spring Tag.React.angularJs Spring Boot/Spring Cloud:Zuul.Ribbon.Feign.Turbine.Hystrix.Oauthor2.Sleuth.API Gateway.Spring Cloud.Config Eureka.SSO.Spring Cloud.BUS.Turbine.Zipkin.Cache.Spring Cloud Admin.API Gateway.ELK

SpringBoot:spring boot使用Druid和监控配置

Druid是Java语言中最好的数据库连接池,并且能够提供强大的监控和扩展功能. Spring Boot默认的数据源是:org.apache.tomcat.jdbc.pool.DataSource 业界把 Druid 和 HikariCP 做对比后,虽说 HikariCP 的性能比 Druid 高,但是因为 Druid 包括很多维度的统计和分析功能,所以这也是大家都选择使用它的原因. 下面来说明如何在 spring Boot 中配置使用Druid 整体步骤: (1)    ——   Druid简