SprigBoot学习笔记(五)

监控

监控的意义
可视化监控平台
监控原理
自定义监控指标

监控的意义

监控服务状态是否宕机
监控服务运行指标(内存、虚拟机、线程、请求等)
监控日志
管理服务(服务下线)

监控的实施方式

显示监控信息的服务器:用于获取服务信息,并显示对应的信息
运行的服务:启动时主动上报,告知监控服务器自己需要受到监控

总结:
1.监控的意义
2.监控方式


SpringBootAdmin

可视化监控平台

Admin服务端

<properties>
	<spring-boot-admin.version>2.5.4</spring-boot-admin.version>
</properties>
<dependencies>
	<dependency>
		<groupId>de.codecentric</groupId>
		<artifactId>spring-boot-admin-starter-server</artifactId>
	</dependency>
</dependencies>
<dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>de.codecentric</groupId>
			<artifactId>spring-boot-admin-dependencies</artifactId>
			<version>${spring-boot-admin.version}</version>
			<type>pom</type>
			<scope>import</scope>
		</dependencies>
	</dependencies>
</dependencyManagement>

Admin服务端

<dependency>
	<groupId>de.codecentric</groupId>
	<artifactId>spring-boot-admin-starter-server</artifactId>
	<version>2.5.4</version>
</dependency>

Admin客户端

<dependency>
	<groupId>de.codecentric</groupId>
	<artifactId>spring-boot-admin-starter-client</artifactId>
	<version>2.5.4</version>
</dependency>

详情参看:http://giuhub.com/codecentic/spring-boot-admin

Admin服务端

server:
	port: 8080

设置启用Spring-Admin

@SpringBootApplication
@EnableAdminServer
public class Springboot2ActuatorServerApplication {
	public static void main(String[] args) {
		SpringApplication.run(Springboot25ActuatorServerApplication.class,args);
	}
}

Admin客户端

spring:
  boot:
    admin:
      client:
        url: http://localhost:8080
management:
  endpoint:
    health:
      show-details:  always
  endpoints:
    web:
      exposure:
        include: "*"

总结:

1.可视化监控平台----Spring Boot Admin
2.配置通过web端读取监控信息


actuator

SprigBoot学习笔记(五)_第1张图片

监控原理

Actuator提供了SpringBoot生产就绪功能,通过端点的配置与访问,获取端点信息
端点描述了一组监控信息,SpringBoot提供了多个内置端点,也可以根据需要自定义端点信息
访问当前应用所有端点信息:/actuator
访问端点详细信息:/actuator/端点名称

ID 描述 默认启动
auditevents 暴露当前应用程序的审计事件信息。
beans 显示当前程序中所有Spring bean的完整列表
caches 暴漏可用的缓存。
conditions 显示在配置和自动配置类上评估的条件以及它们匹配或不匹配的原因。
configprops 显示所有@ConfigurationProperties的校队清单。
env 暴漏Spring CofigurableEnviroment中的属性。
flyway 显示已应用的Flyway数据库迁移。
health 显示应用程序健康信息
httptrace 显示HTTP追踪信息(默认情况下,最后100个HTTP请求/响应交换)。
info 显示应用程序信息。
integrationgraph 显示Spring Integration图。
loggers 显示和修改应用程序中日志记录器的配置。
liquibase 显示已应用的Liquibase数据库迁移。
metrics 显示当前应用程序的指标度量信息。
mappings 显示所有@RequestMapping路径的整理清单。
scheduledtasks 显示应用程序中的调度任务。
sessions 允许从SPring Session支持的会话存储中检索和删除用户会话。当使用SPring Session的响应式Web应用程序支持时不可用。
shutdown 正常关闭应用程序。
threaddump 执行线程dump。

Web程序专用端点

ID 描述 默认启动
headdump 返回一个hprof堆dump文件。
jolokia 通过HTTP暴露JMX bean(当Jolokia在classpath上时,不适用于WebFlux)。
logfile 返回日志文件的内容(入如果已设置logging.file或logging.path属性)。支持使用HTTP Range头来检索部分日志文件的内容。
prometheus 以可以由Prometheus服务器抓取的格式暴露指标。

启用指定端点

management:
  endpoint:
    health:  # 端点名称
      enabled: true
      show-details: always
    beans:   # 端点名称
      enabled: true

启动所有端点

managment:
  endpoints:
    enabled-by-default: true

暴露端点功能
    端点中包含的信息存在敏感信息,需要对外暴露端点功能时手动设定指定端点信息

属性 默认
management.endpoints.jmx.exposure.exclude
management.endpoints.jmx.exposure.include *
management.endpoints.web.exposure.exclude
management.endpoints.web.exposure.include info,health

暴露端点功能

ID JMX Web
audievents
beans
caches
conditions
configprops
env
flyway
health
headdump N/A
httptrace
info

总结:
1.Actuator
2.端点功能开启与关闭
3.端点功能暴露


info端点指标控制

SprigBoot学习笔记(五)_第2张图片

自定义监控指标

方式一:为info端点添加自定义指标

info::
  appName: @project.artifactId@
  version: @project.version@
  author: itheima

SprigBoot学习笔记(五)_第3张图片
方式二:为info端点添加一些动态指标

@Component
public class AppInfoContributor implements InfoContributor {
	@Override
	public void contribute(Info.Builder builder) {
		Map<String,Object> infoMqp = new HashMap<>();
		infoMap.put("buildTime","2006");
		builder.withDetail("runTime",System.currentTimeMillis())
			.withDetail("company","传智教育");
		}
		builder.withDetails(infoMap);
	}
}

总结:
自定义info端点信息


health端点指标控制

SprigBoot学习笔记(五)_第4张图片
为Health端点添加自定义指标

@Component
public class AppHealthContributor extends AbstractHealthIndicator {
	@Override
	protected void doHealthCheck(Health.Builder builder) throws Exception {
		boolean condition = true;
		if(condition){
			Map<String,Object> infoMap = new HashMap<>();
			infoMap.put("buildTime","2006");
			builder.withDetail("runTime",System.currentTimeMillis())
				.withDetail("company","路西法公司");
			builder.withDetails(infoMap);
			builder.status(Status.UP);
		}else{
			builder.status(Status.DOWN);
		}
	}
}

总结:

自定义Health端点信息


metrics端点指标控制

SprigBoot学习笔记(五)_第5张图片
为Metrics端点添加自定义指标

@Service
public class BookServiceImpl extends ServiceImpl<BookDao,Book> implements IBookService {
	private Counter counter;
	public BookServiceImpl(MeterRegistry meterRegistry){
		counter = meterRegistry.counter("用户付费操作次数:");
	}
	@Override
	public boolean delete(Integer id){
		counter.increment();
		return bookDao.deleteById(id) > 0;
	}
}

总结:
自定义Metrics端点信息


自定义监控指标

自定义端点

@Component
@Endpoint(id="pay")
public class PayEndPoint {
	@ReadOperation
	public Object getPay(){
	//调用业务操作.最终return出去
	Map payMap = new HashMap();
	payMap.put("level 1",102);
	payMap.put("level 2",352);
	payMap.put("level 3",622);
	return payMap;
	}
}

SprigBoot学习笔记(五)_第6张图片

总结:
自定义端点

大总结:
1.监控的意义
2.可视化监控平台-Spring Boot Admin
3.监控原理-Actuator
4.自定义监控指标

  • 系统端点添加监控指标
  • 自定义端点

你可能感兴趣的:(spring,boot)