7.6. 监控解决方案


OptaPlanner 通过 Micrometer (Java 应用程序的指标检测库)公开指标。您可以使用带有流行监控系统的 Micrometer 来监控 OptaPlanner solver。

要将 OptaPlanner Quarkus 应用程序配置为使用 Micrometer 和指定的监控系统,请将 Micrometer 依赖项添加到 pom.xml 文件中。

先决条件

  • 您有一个 Quarkus OptaPlanner 应用程序。

流程

  1. 在应用程序的 pom.xml 文件中添加以下依赖项,其中 < MONITORING_SYSTEM& gt; 是 Micrometer 和 Quarkus 支持的监控系统:

    注意

    Prometheus 目前是唯一由 Quarkus 支持的监控系统。

    <dependency>
     <groupId>io.quarkus</groupId>
     <artifactId>quarkus-micrometer-registry-<MONITORING_SYSTEM></artifactId>
    </dependency>
    Copy to Clipboard Toggle word wrap
  2. 要在开发模式下运行应用程序,请输入以下命令:

    mvn compile quarkus:dev
    Copy to Clipboard Toggle word wrap
  3. 要查看应用程序的指标,请在浏览器中输入以下 URL:

    http://localhost:8080/q/metrics
    Copy to Clipboard Toggle word wrap

要将 Spring Boot OptaPlanner 应用配置为使用 Micrometer 和指定的监控系统,请将 Micrometer 依赖项添加到 pom.xml 文件中。

先决条件

  • 您有一个 Spring Boot OptaPlanner 应用程序。

流程

  1. 将以下依赖项添加到应用程序的 pom.xml 文件中,其中 < MONITORING_SYSTEM& gt; 是 Micrometer 和 Spring Boot 支持的监控系统:

    <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
     <groupId>io.micrometer</groupId>
     <artifactId>micrometer-registry-<MONITORING_SYSTEM></artifactId>
    </dependency>
    Copy to Clipboard Toggle word wrap
  2. 在应用程序的 application.properties 文件中添加配置信息。如需更多信息,请参阅 Micrometer 网站。
  3. 要运行应用程序,请输入以下命令:

    mvn spring-boot:run
    Copy to Clipboard Toggle word wrap
  4. 要查看应用程序的指标,请在浏览器中输入以下 URL:

    http://localhost:8080/actuator/metrics

    注意

    使用以下 URL 作为 Prometheus scraper 路径: http://localhost:8080/actuator/prometheus

要将普通 Java OptaPlanner 应用配置为使用 Micrometer 应用程序,您必须将您选择的监控系统的 Micrometer 依赖项和配置信息添加到项目的 POM.XML 文件中。

先决条件

  • 您有一个普通 Java OptaPlanner 应用程序。

流程

  1. 将以下依赖项添加到应用程序的 pom.xml 文件中,其中 < MONITORING_SYSTEM& gt; 是一个监控系统,它被配置为 Micrometer,<VERSION > 是您要使用的 Micrometer 的版本:

    <dependency>
     <groupId>io.micrometer</groupId>
     <artifactId>micrometer-registry-<MONITORING_SYSTEM></artifactId>
     <version><VERSION></version>
    </dependency>
    <dependency>
     <groupId>io.micrometer</groupId>
     <artifactId>micrometer-core</artifactId>
     <version><VERSION></version>
    </dependency>
    Copy to Clipboard Toggle word wrap
  2. 将监控系统的 Micrometer 配置信息添加到项目的 pom.xml 文件的开头。如需更多信息,请参阅 Micrometer 网站。
  3. 在配置信息下添加以下行,其中 &lt ;MONITORING_SYSTEM > 是您添加的监控系统:

    Metrics.addRegistry(<MONITORING_SYSTEM>);
    Copy to Clipboard Toggle word wrap

    以下示例演示了如何添加 Prometheus 监控系统:

    PrometheusMeterRegistry prometheusRegistry = new PrometheusMeterRegistry(PrometheusConfig.DEFAULT);
    try {
        HttpServer server = HttpServer.create(new InetSocketAddress(8080), 0);
        server.createContext("/prometheus", httpExchange -> {
            String response = prometheusRegistry.scrape();
            httpExchange.sendResponseHeaders(200, response.getBytes().length);
            try (OutputStream os = httpExchange.getResponseBody()) {
                os.write(response.getBytes());
            }
        });
        new Thread(server::start).start();
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
    Metrics.addRegistry(prometheusRegistry);
    Copy to Clipboard Toggle word wrap
  4. 打开您的监控系统,以查看您的 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_SCORESCORE_CALCULATION_COUNT 指标:

<solver xmlns="https://www.optaplanner.org/xsd/solver" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="https://www.optaplanner.org/xsd/solver https://www.optaplanner.org/xsd/solver/solver.xsd">
  <monitoring>
    <metric>BEST_SCORE</metric>
    <metric>SCORE_CALCULATION_COUNT</metric>
    ...
  </monitoring>
  ...
</solver>
Copy to Clipboard Toggle word wrap

您可以在此配置中启用以下指标:

  • 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.scoreoptaplanner.solver.best.score.soft.score 量表。
  • STEP_SCORE (Micrometer meter ID: optaplanner.solver.step.scoremdadm):衡量 OptaPlanner 执行的每个步骤分数。每个分数级别都有单独的量表。例如,对于 HardSoftScore,有 optaplanner.solver.step.score.hard.scoreoptaplanner.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 .score 和 optaplanner.solver.constraint.match.best.score 量表,标签为 "constraint.package=com.example" 和 "constraint.name=Minimize"。
  • 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.scoreoptaplanner.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.diffmdadm : 测量特定类型可以改进最佳解决方案。每个分数级别都有单独的计量,移动类型的标签。例如,对于一个进程的计算机,对于 HardSoftScoreChangeMove,有一个带有标签 move.type. bester.move.type.best.score.diff.hard.scoreoptaplanner.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.diffruby : 测量特定移动类型可以改进最佳解决方案。每个分数级别都有单独的计量,移动类型的标签。例如,对于一个进程的计算机,对于 HardSoftScoreChangeMove,有一个带有 tag move.type. solver.move.type.step.score.diff.hard.scoreoptaplanner.solver.move.type.step.score.diff.soft.score 量(label) move.type=ChangeMove (Process.computer)
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat