7.6. 监控解决方案
OptaPlanner 通过 Micrometer (Java 应用程序的指标检测库)公开指标。您可以使用带有流行监控系统的 Micrometer 来监控 OptaPlanner solver。
7.6.1. 为 Micrometer 配置 Quarkus OptaPlanner 应用程序 复制链接链接已复制到粘贴板!
要将 OptaPlanner Quarkus 应用程序配置为使用 Micrometer 和指定的监控系统,请将 Micrometer 依赖项添加到 pom.xml
文件中。
先决条件
- 您有一个 Quarkus OptaPlanner 应用程序。
流程
在应用程序的
pom.xml
文件中添加以下依赖项,其中 <MONITORING_SYSTEM&
gt; 是 Micrometer 和 Quarkus 支持的监控系统:注意Prometheus 目前是唯一由 Quarkus 支持的监控系统。
<dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-micrometer-registry-<MONITORING_SYSTEM></artifactId> </dependency>
<dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-micrometer-registry-<MONITORING_SYSTEM></artifactId> </dependency>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要在开发模式下运行应用程序,请输入以下命令:
mvn compile quarkus:dev
mvn compile quarkus:dev
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要查看应用程序的指标,请在浏览器中输入以下 URL:
http://localhost:8080/q/metrics
http://localhost:8080/q/metrics
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.6.2. 为 Micrometer 配置 Spring Boot OptaPlanner 应用程序 复制链接链接已复制到粘贴板!
要将 Spring Boot OptaPlanner 应用配置为使用 Micrometer 和指定的监控系统,请将 Micrometer 依赖项添加到 pom.xml
文件中。
先决条件
- 您有一个 Spring Boot OptaPlanner 应用程序。
流程
将以下依赖项添加到应用程序的
pom.xml
文件中,其中 <MONITORING_SYSTEM&
gt; 是 Micrometer 和 Spring Boot 支持的监控系统:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
在应用程序的
application.properties
文件中添加配置信息。如需更多信息,请参阅 Micrometer 网站。 要运行应用程序,请输入以下命令:
mvn spring-boot:run
mvn spring-boot:run
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要查看应用程序的指标,请在浏览器中输入以下 URL:
http://localhost:8080/actuator/metrics
注意使用以下 URL 作为 Prometheus scraper 路径:
http://localhost:8080/actuator/prometheus
7.6.3. 为 Micrometer 配置普通 Java OptaPlanner 应用程序 复制链接链接已复制到粘贴板!
要将普通 Java OptaPlanner 应用配置为使用 Micrometer 应用程序,您必须将您选择的监控系统的 Micrometer 依赖项和配置信息添加到项目的 POM.XML
文件中。
先决条件
- 您有一个普通 Java OptaPlanner 应用程序。
流程
将以下依赖项添加到应用程序的
pom.xml
文件中,其中 <MONITORING_SYSTEM&
gt; 是一个监控系统,它被配置为 Micrometer,<VERSION
> 是您要使用的 Micrometer 的版本:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将监控系统的 Micrometer 配置信息添加到项目的
pom.xml
文件的开头。如需更多信息,请参阅 Micrometer 网站。 在配置信息下添加以下行,其中 <
;MONITORING_SYSTEM
> 是您添加的监控系统:Metrics.addRegistry(<MONITORING_SYSTEM>);
Metrics.addRegistry(<MONITORING_SYSTEM>);
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下示例演示了如何添加 Prometheus 监控系统:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 打开您的监控系统,以查看您的 OptaPlanner 项目的指标。公开以下指标:
注意指标的名称和格式因 registry 而异。
-
OptaPlanner.solver.errors.total
:自测量开始以来发生的错误总数。 -
OptaPlanner.solver.solve-length.active-count
: 当前解决的 solvers 的数量。 -
OptaPlanner.solver.solve-length.seconds-max
: 最长运行的当前活跃 addressr 的运行时。 -
OptaPlanner.solver.solve-length.seconds-duration-sum
: 每个活跃的 solver 的 solve 持续时间总和。例如,如果有两个活跃的解决问题,则运行三分钟,另一个在一分钟内,总解决时间为四分钟。
-
7.6.4. 其他指标 复制链接链接已复制到粘贴板!
如需更详细的监控,您可以在 solver 配置中配置 OptaPlanner,以性能成本监控其他指标。以下示例使用 BEST_SCORE
和 SCORE_CALCULATION_COUNT
指标:
您可以在此配置中启用以下指标:
-
SOLVE_DURATION
(默认启用)(默认为 Micrometer 量表 ID:optaplanner.solver.solve.duration
):衡量在进行最长的活跃解决者、活跃解决的问题者数以及所有活跃解决问题者的累计持续时间。 -
ERROR_COUNT
(默认启用的 Micrometer 量表 ID:optaplanner.solver.errors
):衡量在解决时发生的错误数量。 -
SCORE_CALCULATION_COUNT
(默认启用),Micrometer 计量 ID:optaplanner.solver.score.calculation.count
:衡量所执行的分数计算的数量。 -
BEST_SCORE
(Micrometer meter ID:optaplanner.solver.best
.score mdadm):衡量目前 OptaPlanner 的最佳解决方案分数。每个分数级别都有单独的量表。例如,对于HardSoftScore
,有optaplanner.solver.best.score.hard.score
和optaplanner.solver.best.score.soft.score
量表。 -
STEP_SCORE
(Micrometer meter ID:optaplanner.solver.step.score
mdadm):衡量 OptaPlanner 执行的每个步骤分数。每个分数级别都有单独的量表。例如,对于HardSoftScore
,有optaplanner.solver.step.score.hard.score
和optaplanner.solver.step.score.soft.score
量表。 -
BEST_SOLUTION_MUTATION
(Micrometer 计量 ID:optaplanner.solver.best.solution.mutation
):连续最佳解决方案之间更改的规划变量数量。 -
MOVE_COUNT_PER_STEP
(Micrometer meter ID:optaplanner.solver.step.move.count
):衡量步骤中评估的移动数量。 -
MEMORY_USE
(Micrometer 量表 ID:jvm.memory.used
):衡量 JVM 中使用的内存量。此指标不测量 solver 使用的内存量;同一 JVM 上的两个 solvers 将报告此指标的值。 -
CONSTRAINT_MATCH_TOTAL_BEST_SCORE
(Micrometer meter ID:optaplanner.solver.constraint.match.best
.score):衡量 OptaPlanner 上每个约束的分数影响。每个分数级别都有单独的量表,每个约束的标签。例如,对于软件包 "com.example" 的限制 "Minimize Cost" 的HardSoftScore
,软件包 "com.example" 有optaplanner.solver.constraint.match.best.score.hard
量表,标签为 "constraint.package=com.example" 和 "constraint.name=Minimize"。.score
和 optaplanner.solver.constraint.match.best.score -
CONSTRAINT_MATCH_TOTAL_STEP_SCORE
(Micrometer 计量 ID:optaplanner.solver.constraint.step
.step.score ):衡量当前步骤中每个约束的分数影响。每个分数级别都有单独的量表,每个约束的标签。例如,对于软件包 "com.example" 的限制 "Minimize Cost" 的HardSoftScore
,带有标签 "constraint.package=com.constraint.step.step.score.hard.score
和optaplanner.solver.constraint.match.step.score.soft.score
量表,标签为 "constraint.package=com.example" 和 "constraint.name=Minize"。 -
PICKED_MOVE_TYPE_BEST_SCORE_DIFF
(Micrometer meter ID:optaplanner.solver.move.type.best.score.diff
mdadm : 测量特定类型可以改进最佳解决方案。每个分数级别都有单独的计量,移动类型的标签。例如,对于一个进程的计算机,对于HardSoftScore
和ChangeMove
,有一个带有标签 move.type.bester.move.type.best.score.diff.hard.score
和optaplanner.solver.move.type.best.score.diff.soft.score
量表,标签为move.type=ChangeMove (Process.computer)
。 -
PICKED_MOVE_TYPE_STEP_SCORE_DIFF
(Micrometer meter ID:optaplanner.solver.move.type.step.score.diff
ruby : 测量特定移动类型可以改进最佳解决方案。每个分数级别都有单独的计量,移动类型的标签。例如,对于一个进程的计算机,对于HardSoftScore
和ChangeMove
,有一个带有 tag move.type.solver.move.type.step.score.diff.hard.score
和optaplanner.solver.move.type.step.score.diff.soft.score
量(label)move.type=ChangeMove (Process.computer)
。