第13章 Red Hat Decision Manager の Prometheus メトリクスのモニターリング
Prometheus は、オープンソースのシステムモニターリングツールキットで、Red Hat Decision Manager と連携して、ビジネスルール、プロセス、Decision Model and Notation (DMN) モデル、その他の Red Hat Decision Manager アセットの実行に関するメトリクスを収集して保存できます。Decision Server への REST API 呼び出しや、Prometheus 表現ブラウザー、Grafana などのデータグラフツールを使用して 、保存したメトリクスにアクセスできます。
オンプレミスの Decision Server、Spring Boot の Decision Server、Red Hat OpenShift Container Platform の Decision Server デプロイメントに、Prometheus メトリクス監視を設定できます。
Decision Server が Prometheus を使用して公開するメトリクスで、利用可能なものの一覧については、Red Hat カスタマーポータル から Red Hat Decision Manager 7.6.0 Source Distribution をダウンロードし、~/rhdm-7.6.0-sources/src/droolsjbpm-integration-$VERSION/kie-server-parent/kie-server-services/kie-server-services-prometheus/src/main/java/org/kie/server/services/prometheus
に移動してください。
Prometheus に対する Red Hat の サポートは、Red Hat 製品ドキュメントに記載の設定および設定の推奨事項に限定されます。
13.1. Decision Server のモニターリングを行う Prometheus メトリクスの設定
Decision Server インスタンスが Prometheus を使用し、Red Hat Decision Manager でのビジネスアセットアクティビティーに関連するメトリクスを収集して保存するように設定できます。Decision Server が Prometheus を使用して公開するメトリクスで、利用可能なものの一覧については、Red Hat カスタマーポータル から Red Hat Decision Manager 7.6.0 Source Distribution をダウンロードし、~/rhdm-7.6.0-sources/src/droolsjbpm-integration-$VERSION/kie-server-parent/kie-server-services/kie-server-services-prometheus/src/main/java/org/kie/server/services/prometheus
に移動してください。
前提条件
- Decision Server がインストールされている。
-
kie-server
ユーザーロールで Decision Server にアクセスできる。 - Prometheus がインストールされている。Prometheus のダウンロードおよび使用に関する情報は、Prometheus ドキュメントページ を参照してください。
手順
-
Decision Server インスタンスで、
org.kie.prometheus.server.ext.disabled
システムプロパティーをfalse
に設定して、Prometheus 拡張機能を有効にします。このプロパティーは、Decision Server の起動時、または Red Hat Decision Manager ディストリビューションのstandalone.xml
またはstandalone-full.xml
ファイルで定義できます。 Spring Boot で Red Hat Decision Manager を実行する場合は、
application.properties
システムプロパティーで必要なキーを設定します。Red Hat Decision Manager および Prometheus の Spring Boot application.properties キー
kieserver.drools.enabled=true kieserver.dmn.enabled=true kieserver.prometheus.enabled=true
Prometheus ディストリビューションの
prometheus.yaml
ファイルで、scrape_configs
セクションに以下の設定を追加して、Prometheus が Decision Server からメトリクスを収集 (scrape) するように設定します。prometheus.yaml ファイルの Scrape 設定
scrape_configs: - job_name: 'kie-server' metrics_path: /SERVER_PATH/services/rest/metrics basicAuth: username: USER_NAME password: PASSWORD static_configs: - targets: ["HOST:PORT"]
Spring Boot の prometheus.yaml ファイルでの Scrape 設定 (該当する場合)
scrape_configs: - job_name: 'kie' metrics_path: /rest/metrics static_configs: - targets: ["HOST:PORT"]
Decision Server の場所と設定に合わせて、値を置き換えます。
Decision Server インスタンスを起動します。
Red Hat JBoss EAP での Red Hat Decision Manager の起動コマンド例
$ cd ~/EAP_HOME/bin $ ./standalone.sh --c standalone-full.xml
設定済みの Decision Server インスタンスを起動すると、Prometheus はメトリクスの収集を開始し、Decision Server はメトリクスを REST API エンドポイント
http://HOST:PORT/SERVER/services/rest/metrics
(または Spring Boot ではhttp://HOST:PORT/rest/metrics
) に公開します。REST クライアントまたは curl ユーティリティーで、以下のコンポーネントを含む REST API 要求を送信し、Decision Server がメトリクスを公開していることを確認します。
REST クライアントの場合:
-
Authentication:
kie-server
ロールを持つ Decision Server ユーザーのユーザー名とパスワードを入力します。 HTTP Headers: 以下のヘッダーを設定します。
-
Accept
:application/json
-
-
HTTP method:
GET
に設定します。 -
URL: Decision Server REST API ベース URL とメトリクスエンドポイントを入力します。たとえば、
http://localhost:8080/kie-server/services/rest/metrics
(または Spring Boot ではhttp://localhost:8080/rest/metrics
) となります。
curl ユーティリティーの場合:
-
-u
:kie-server
ロールを持つ Decision Server ユーザーのユーザー名とパスワードを入力します。 -H
: 以下のヘッダーを設定します。-
accept
:application/json
-
-
-X
:GET
に設定します。 -
URL: Decision Server REST API ベース URL とメトリクスエンドポイントを入力します。たとえば、
http://localhost:8080/kie-server/services/rest/metrics
(または Spring Boot ではhttp://localhost:8080/rest/metrics
) となります。
Red Hat JBoss EAP での Red Hat Decision Manager の curl コマンド例
curl -u 'baAdmin:password@1' -X GET "http://localhost:8080/kie-server/services/rest/metrics"
Spring Boot での Red Hat Decision Manager の curl コマンド例
curl -u 'baAdmin:password@1' -X GET "http://localhost:8080/rest/metrics"
サーバーの応答例
# HELP kie_server_container_started_total Kie Server Started Containers # TYPE kie_server_container_started_total counter kie_server_container_started_total{container_id="task-assignment-kjar-1.0",} 1.0 # HELP solvers_running Number of solvers currently running # TYPE solvers_running gauge solvers_running 0.0 # HELP dmn_evaluate_decision_nanosecond DMN Evaluation Time # TYPE dmn_evaluate_decision_nanosecond histogram # HELP solver_duration_seconds Time in seconds it took solver to solve the constraint problem # TYPE solver_duration_seconds summary solver_duration_seconds_count{solver_id="100tasks-5employees.xml",} 1.0 solver_duration_seconds_sum{solver_id="100tasks-5employees.xml",} 179.828255925 solver_duration_seconds_count{solver_id="24tasks-8employees.xml",} 1.0 solver_duration_seconds_sum{solver_id="24tasks-8employees.xml",} 179.995759653 # HELP drl_match_fired_nanosecond Drools Firing Time # TYPE drl_match_fired_nanosecond histogram # HELP dmn_evaluate_failed_count DMN Evaluation Failed # TYPE dmn_evaluate_failed_count counter # HELP kie_server_start_time Kie Server Start Time # TYPE kie_server_start_time gauge kie_server_start_time{name="myapp-kieserver",server_id="myapp-kieserver",location="http://myapp-kieserver-demo-monitoring.127.0.0.1.nip.io:80/services/rest/server",version="7.4.0.redhat-20190428",} 1.557221271502E12 # HELP kie_server_container_running_total Kie Server Running Containers # TYPE kie_server_container_running_total gauge kie_server_container_running_total{container_id="task-assignment-kjar-1.0",} 1.0 # HELP solver_score_calculation_speed Number of moves per second for a particular solver solving the constraint problem # TYPE solver_score_calculation_speed summary solver_score_calculation_speed_count{solver_id="100tasks-5employees.xml",} 1.0 solver_score_calculation_speed_sum{solver_id="100tasks-5employees.xml",} 6997.0 solver_score_calculation_speed_count{solver_id="24tasks-8employees.xml",} 1.0 solver_score_calculation_speed_sum{solver_id="24tasks-8employees.xml",} 19772.0
Decision Server でメトリクスが利用できない場合には、このセクションで説明されている Decision Server および Prometheus の設定を確認します。
また、
http://HOST:PORT/graph
の Prometheus の expression browser で収集したメトリクスと対話したり、Prometheus データソースを Grafana などのデータグラフ作成ツールと統合したりすることもできます。図13.1 Prometheus expression browser と Decision Server メトリクス
図13.2 Prometheus expression browser と Decision Server ターゲット
図13.3 Grafana ダッシュボードと DMN モデルの Decision Server メトリクス
図13.4 Grafana ダッシュボードとソルバーの Decision Server メトリクス
-
Authentication: