16.2.1 获取重要的应用程序信息
在一次典型的看医生开始时,我们通常会被问到两个非常基本的问题:你是谁,你感觉如何? 尽管医生或护士选择的词可能不同,但他们最终目标是想了解一些基本情况:关于他们正在治疗的人,以及您为什么要见他们。
这些相同的基本问题是 Actuator 的 /info/health 端点为 Spring Boot 应用程序回答的。 /info 端点告诉您有关应用程序的一些信息,/health 端点告诉您应用程序的健康状况。
询问有关应用程序的信息
要了解有关正在运行的 Spring Boot 应用程序的一些信息,您可以询问 /info 端点。 但是,默认情况下, /info 端点的信息量并不大。
当您使用 curl 发出请求时,您可能会看到以下内容:
$ curl localhost:8081/actuator/info
{}
虽然 /info 端点似乎不是很有用,但最好将其视为一个干净的画布,您可以在其上绘制您想要呈现的任何信息。
有多种方法可以提供 /info 端点返回所需的信息,最直接的方法是创建一个或多个配置属性,其中属性名称以 info. 为前缀。例如,假设您希望来自 /info 端点以包含支持联系信息,包括电子邮件地址和电话号码。 为此,您可以在 application.yml 文件中配置以下属性:
info:
contact:
phone: 822-625-6831
info.contact.emailinfo.contact.phone 属性可能对于 Spring Boot,或应用程序上下文中的任何 bean 都没有任何特殊意义。 然而,由于它以 info. 为前缀,/info 端点现在将在其响应中回显属性的值:
{
"contact": {
"email": "[email protected]",
"phone": "822-625-6831"
}
}
在第 16.3.1 节中,我们将了解一些其他方法来使 /info 端点返回有关应用程序的更多有用信息。
检查应用程序健康状态
/health 端点发送 HTTP GET 请求会产生一个简单的 JSON 响应,其中包含应用程序的健康状态。 例如,以下是您在使用 curl 获取 /health 端点时可能会看到的内容:
$ curl localhost:8080/actuator/health
{"status":"UP"}
您可能想知道,一个只能报告应用程序已启动的端点有多大用处? 如果应用程序关闭,它会报告什么?
实际情况是,此处显示的状态是一个或多个健康指标的聚合状态。健康指标报告应用程序与之交互的外部系统的健康状况,例如数据库、消息代理,甚至 Eureka 和 Config Server 等 Spring Cloud 组件。每个指标的健康状态可以是以下之一:
  • UP - 外部系统已启动并可访问。
  • DOWN - 外部系统已关闭或无法访问。
  • UNKNOWN - 外部系统的状态尚不清楚。
  • OUT_OF_SERVICE - 外部系统可访问,但当前不可用。
然后将所有健康指标的健康状态,聚合到应用程序的整体健康状态中,应用以下规则:
  • 如果所有健康指标都为 UP,则应用程序健康状态为 UP。
  • 如果一个或多个健康指标为 DOWN,则应用程序健康状态为 DOWN。
  • 如果一个或多个健康指标为 OUT_OF_SERVICE,则应用健康状态为 OUT_OF_SERVICE。
  • UNKNOWN 健康状况将被忽略,并且不会被纳入应用程序的总体健康状况。
默认情况下,仅返回聚合状态以响应对 /health 的请求。但是,您可以配置 management.endpoint.health.show-details 属性以显示所有健康指标的完整详细信息:
management:
endpoint:
health:
show-details: always
management.endpoint.health.show-details 属性默认为 never,但也可以设置为 always 始终显示所有健康指标的完整详细信息,或 when-authorized 仅在请求客户端时显示完整详细信息完全授权。
现在,当您向 /health 端点发出 GET 请求时,您将获得完整的健康指标详细信息。 以下是与 Mongo 文档数据库集成的服务的示例:
{
"status": "UP",
"details": {
"mongo": {
"status": "UP",
"details": {
"version": "3.2.2"
}
},
"diskSpace": {
"status": "UP",
"details": {
"total": 499963170816,
"free": 177284784128,
"threshold": 10485760
}
}
}
}
无论任何其他外部依赖项如何,所有应用程序都将具有名为 diskSpace 的文件系统的运行状况指示器。 diskSpace 运行状况指示器指示文件系统的运行状况(希望是 UP),这取决于剩余的可用空间量。 如果可用磁盘空间低于阈值,它将报告 DOWN 状态。
在前面的示例中,还有一个 mongo 健康指示器,用于报告 Mongo 数据库的状态。 显示的详细信息包括 Mongo 数据库版本。
自动配置确保只有与应用程序相关的健康指标,才会出现在来自 /health 端点的响应中。 除了 mongo 和 diskSpace 健康指标,Spring Boot 还为其他几个外部数据库和系统提供健康指标,包括:
  • Cassandra
  • Config Server
  • Couchbase
  • Eureka
  • Hystrix
  • JDBC data sources
  • Elasticsearch
  • InfluxDB
  • JMS message brokers
  • LDAP
  • Email servers
  • Neo4j
  • Rabbit message brokers
  • Redis
  • Solr
此外,第三方库可能会贡献自己的健康指标。 我们将在 16.3.2 节中了解如何编写自定义健康指标。
如您所见,/health/info 端点提供有关正在运行的应用程序的一般信息。 同时,还有其他 Actuator 端点可以深入了解应用程序配置。 让我们看看 Actuator 如何显示应用程序的配置信息。
复制链接