17.2 探索Admin服务器

17.2 探索Admin服务器

在将所有的Spring Boot应用注册为Admin服务器的客户端之后,我们就可以使用Admin服务器得到运行中应用的大量信息,包括:

  • 通用的健康信息;
  • 通过Micrometer和“/metrics”端点发布的所有指标;
  • 环境属性;
  • 包和类的日志级别;
  • 线程跟踪细节;
  • HTTP请求的跟踪情况;
  • 审计日志。

实际上,几乎Actuator暴露的所有内容我们都可以通过Admin服务器来查看,只不过它的展现形式更加人性化。它包括了图表和钻取信息的过滤器。Admin服务所展现的信息要比本章中看到的多得多,限于篇幅,我们使用本节剩余的内容着重介绍一些Admin服务器的亮点功能。

17.2.1 查看应用基本的健康状况和信息

正如我们在16.2.1小节所提到的那样,Actuator会通过“/health”和“/info”端点提供应用的健康状况和基本信息。Admin服务器在Details选项卡下展现了这些信息,如图17.6所示。

image-20211023203206091

图17.6 Spring Boot Admin UI的Details选项卡展现了应用的健康状况和基本信息

滑过Details选项卡的Health和Info部分,我们会在下方看到一些来自应用JVM的统计信息,包括展现处理器、线程和内存使用的图表,如图17.7所示。

image-20211023203218420

图17.7 在Details选项卡中下方将会看到额外的JVM内部信息(包括处理器、线程和内存统计数据)

图表中所展现的信息再加上Processes、Garbage Collection Pauses下面的指标,可以提供关于应用如何使用JVM资源的有用信息。

17.2.2 观察核心指标

在Actuator的所有端点中,“/metrics”端点所提供的信息可能最不易于人类阅读了。借助Admin服务器Metrics选项卡下的UI界面,我们可以很容易地消费应用所生成的指标数据。

在开始的时候,Metrics选项卡并不会展示任何指标。借助页面顶部的表单,我们能够设置想要查看的一个或多个指标。

在图17.8中,我们监视了http.server.requests分类的两个指标:第一个报告展现了发往“/ingredients”端点的HTTP GET请求,并且要求返回状态为200 (OK);第二个报告展现了所有产生HTTP 404 (NOT FOUND)响应的请求。

image-20211023203230801

图17.8 在Metrics选项卡下,我们可以监视应用的“/metrics”端点发布的所有指标

关于这些指标,非常棒的一点在于(其实几乎适用于Admin服务器展现的所有内容),这里所展示的是实时数据,会自动更新,无须刷新页面。

17.2.3 探查环境属性

Actuator的“/env”端点能够返回Spring Boot应用所有可用的环境变量,这些环境变量来源于各种属性源。尽管API端点的JSON格式响应并不难读,但是Admin服务器在Environment选项卡下以更美观的形式进行了展现(见图17.9)。

image-20211023203245751

图17.9 Environment选项卡展现了环境属性,并且包含了重写和过滤值的选项

因为这里可能会有数百个属性,所以可以使用属性名或值对可用属性进行过滤。图17.9展现了根据属性名和/或值包含“spring.”进行过滤后的属性列表。通过页面顶部的Environment Manager表单,Admin服务器还允许我们设置或重写环境属性。

17.2.4 查看和设置日志级别

Actuator的“/loggers”端点对于理解或重写运行中应用的日志级别非常有用。Admin服务器的Loggers选项卡基于“/loggers”端点提供了一个非常易于使用的UI页面,进一步简化了应用中的日志管理。图17.10展现了根据org.springframework.boot名称过滤后的loggers。

image-20211023203259747

图17.10 Loggers选项卡会展示应用中包和类的日志级别,并且允许我们重写它们的级别

默认情况下,Admin服务器会展现所有包和类的日志级别。它们可以通过名称(仅限于类)和/或显式配置的日志级别来进行过滤,这里不支持对由根logger继承来的级别进行过滤。

17.2.5 监控线程

在应用中,多个线程可以并行运行。尽管“/threaddump”端点(在16.2.3小节进行过描述)提供了应用运行中线程状态的快照,但是Spring Boot Admin UI中的Threads选项卡能够实时查看应用中所有的线程(见图17.11)。

image-20211023203346646

图17.11 我们可以使用Admin UI的Threads选项卡实时监控应用的线程

“/threaddump”端点只是捕获某个时刻的快照,Threads选项卡中的条形图与之不同,它是持续更新的,展示每个线程的状态:线程可运行的话,是绿色的;等待的话,是黄色的;阻塞的话,是红色的。

要查看某个线程的细节信息,可以点击列表中的线程行。这样会显示该线程的历史数据,包括线程当前的堆栈。

17.2.6 跟踪HTTP请求

Spring Boot Admin UI的Http Traces选项卡(见图17.12)展现了Actuator“/httptrace”端点的数据。与“/httptrace”端点返回请求时最近的100个请求不同,Http Traces选项卡列出了完整的HTTP请求历史。而且,在我们打开这个选项卡的时候,数据会一直刷新。如果你离开这个选项卡再回来,那么它初始会显示100条最近的请求,但是会从当前时刻开始进行跟踪。

我们可以看到,Http Traces选项卡包含了一个随时间变化的HTTP流量的堆积图(stacked graph)。这个图使用不同的颜色来表示成功和失败的请求:绿色代表成功,黄色代表客户端错误(例如404级别的HTTP响应),红色代表服务器错误(如500级别的HTTP响应)。如果将鼠标指针移动到图上,就会弹出一个悬停框(如图17.12最右侧所示),显示给定时间分解的请求计数。

image-20211023203400650

图17.12 Http Traces选项卡会跟踪该应用最近的HTTP流量,包括产生错误的请求信息

在堆积图的下方展现了跟踪历史,应用接收到的每个请求都会对应一行。点击其中一行,就会展开显示该请求的额外数据,包括请求和响应的头信息(见图17.13)。

image-20211023203412801

图17.13 点击Http Traces选项卡中的请求条目,将会展现该请求额外的详情