13.9. Micrometer と Prometheus を使用して学校の時間割を監視する OptaPlanner Java アプリケーション


OptaPlanner は、Java アプリケーション用のメトリック計測ライブラリーである Micrometer を介してメトリックを公開します。Prometheus で Micrometer を使用して、学校の時間割アプリケーションで OptaPlanner ソルバーを監視できます。

前提条件

  • OptaPlanner 学校の時間割アプリケーションを Java で作成しました。
  • Prometheus がインストールされている。Prometheus のインストールについては、Prometheus の Web サイトを参照してください。

手順

  1. Micrometer Prometheus 依存関係を学校の時間割 pom.xml ファイルに追加します。<MICROMETER_VERSION> は、インストールした Micrometer のバージョンです。

    <dependency>
     <groupId>io.micrometer</groupId>
     <artifactId>micrometer-registry-prometheus</artifactId>
     <version><MICROMETER_VERSION></version>
    </dependency>
    注記

    micrometer-core 依存関係も必要です。ただし、この依存関係は optaplanner-core 依存関係に含まれているため、pom.xml ファイルに追加する必要はありません。

  2. 次の import ステートメントを TimeTableApp.java クラスに追加します。

    import io.micrometer.core.instrument.Metrics;
    import io.micrometer.prometheus.PrometheusConfig;
    import io.micrometer.prometheus.PrometheusMeterRegistry;
  3. TimeTableApp.java クラスのメインメソッドの先頭に次の行を追加して、ソリューションが開始する前に Prometheus が com.sun.net.httpserver.HttpServer からデータを破棄できるようにします。

    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);
    
            solve();
        }
  4. 次の行を追加して、解決時間を制御します。解決時間を調整することで、解決に費やされた時間に基づいて指標がどのように変化するかを確認できます。

    withTerminationSpentLimit(Duration.ofMinutes(5)));
  5. 学校の時間割アプリケーションを開始します。
  6. Web ブラウザーで http://localhost:8080/prometheus を開き、Prometheus で timetable アプリケーションを表示します。
  7. 監視システムを開いて、OptaPlanner プロジェクトのメトリックを表示します。

    次のメトリックが公開されます。

    • optaplanner_solver_errors_total: 測定開始以降に解決中に発生したエラーの総数。
    • optaplanner_solver_solve_duration_seconds_active_count: 現在解決しているソルバーの数。
    • optaplanner_solver_solve_duration_seconds_max: 現在アクティブなソルバーの実行時間が最も長い実行時間。
    • optaplanner_solver_solve_duration_seconds_duration_sum: アクティブな各ソルバーの解決時間の合計。たとえば、アクティブなソルバーが 2 つあり、一方が 3 分間実行され、もう一方が 1 分間実行されている場合、合計計算時間は 4 分です。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.