2.5. OpenShift で Fuse アプリケーションを監視するための Prometheus の設定
2.5.1. Prometheus の概要
Prometheus は、Red Hat OpenShift 環境にデプロイされたサービスの監視に使用できる、システムおよびサービスのオープンソースの監視およびアラートツールキットです。Prometheus は、指定の間隔で設定されたサービスからメトリックを収集および保存します。さらに、ルール式の評価や結果の表示を行い、指定の条件が true になるとアラートをトリガーできます。
Prometheus に対する Red Hat のサポートは、Red Hat 製品ドキュメントに記載されているセットアップと推奨設定に限定されます。
OpenShift サービスを監視するには、エンドポイントを Prometheus 形式に公開するように各サービスを設定する必要があります。このエンドポイントは、メトリックのリストとメトリックの現在の値を提供する HTTP インターフェイスです。Prometheus は定期的にターゲット定義の各エンドポイントをスクレイピングし、収集したデータをそのデータベースに書き込みます。Prometheus は、現在実行中のセッションだけでなく、長期間にわたってデータを収集します。Prometheus は、データ上でクエリーをグラフィカルに可視化し、実行できるように、データを格納します。
2.5.1.1. Prometheus クエリー
Prometheus Web インターフェイスでは、Prometheus Query Language (PromQL) でクエリーを作成して、収集したデータを選択し、集約することができます。
たとえば、以下のクエリーを使用すると、Prometheus が直近の 5 分間に記録したすべての時系列データから、メトリック名が http_requests_total
である値をすべて選択することができます。
http_requests_total[5m]
クエリーの結果をさらに定義または絞り込むには、メトリックのラベル (key:value
ペア) を指定します。たとえば、以下のクエリーを使用すると、Prometheus が直近の 5 分間に記録したすべて時系列データから、メトリック名が http_requests_total
でかつジョブラベルが integration
に設定されている値をすべて選択することができます。
http_requests_total{job="integration"}[5m]
2.5.1.2. Prometheus データの表示オプション
Prometheus がクエリーの結果を処理する方法を指定できます。
- Prometheus データを表データとして Prometheus の式ブラウザーで表示します。
- Prometheus HTTP API 経由で外部システムで Prometheus データを消費します。
Prometheus データをグラフで表示します。
Prometheus は、収集するデータのデフォルトグラフィカルビューを提供します。Prometheus メトリックを表示するより堅牢なグラフィカルダッシュボードが必要な場合は、Grafana を選択するのが一般的です。
注記Grafana はコミュニティーがサポートする機能です。Grafana をデプロイして Red Hat の製品を監視する設定は、Red Hat の実稼働環境におけるサービスレベルアグリーメント (SLA) の対象外です。
PromQL 言語を使用して、Prometheus の Alertmanager ツール で通知を設定することもできます。
2.5.2. 4.14 用の Prometheus の設定
Prometheus を設定するには、クラスターに Prometheus Operator のカスタムリソース定義をインストールし、Prometheus を Fuse アプリケーションが含まれる OpenShift プロジェクトに追加します。
前提条件
-
OpenShift クラスターにアクセス可能な
cluster admin
権限がある。 - Fuse on OpenShift ガイド の説明にしたがって、Fuse on OpenShift イメージおよびテンプレートをインストールして、OpenShift クラスターを準備している。
- クラスターで OpenShift プロジェクトを作成し、Fuse アプリケーションをそのプロジェクトに追加されている必要があります。
手順
管理者権限で OpenShift にログインします。
oc login --user system:admin --token=my-token --server=https://my-cluster.example.com:6443
cluster-monitoring-config.yml
という名前のファイルを作成します。apiVersion: v1 kind: ConfigMap metadata: name: cluster-monitoring-config namespace: openshift-monitoring data: config.yaml: | enableUserWorkload: true
クラスターモニタリング設定を "openshift-monitoring" namespace に適用します。
oc create -f cluster-monitoring-config.yml -n openshift-monitoring
サービスモニター には、Prometheus が OpenShift Container Platform 上の特定のサービスおよびプロジェクト (namespace) のメトリックを収集するための指示が含まれています。
サービスモニターをインストールするには、以下を実行します。
oc process -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.0.fuse-7_13_0-00014-redhat-00001/monitoring/fuse-servicemonitor.yml -p NAMESPACE=<YOUR NAMESPACE> -p FUSE_SERVICE_NAME=<YOUR FUSE SERVICE> | oc apply -f -
たとえば、myfuseapp という名前の Fuse アプリケーションが含まれる myproject という名前の OpenShift プロジェクト (namespace) を使用する場合は、以下を実行します。
例
oc process -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.0.fuse-7_13_0-00014-redhat-00001/monitoring/fuse-servicemonitor.yml -p NAMESPACE=myproject -p FUSE_SERVICE_NAME=myfuseapp | oc apply -f -
Prometheus ダッシュボードを開くには、以下を実行します。
- OpenShift コンソールにログインします。
- Prometheus を追加したプロジェクトを開きます。
- 左側のペインで Administrator ビューを選択し、Observe -> Metricsを開きます。
- Prometheus Hostname URL をクリックし、Prometheus ダッシュボードを開きます。
Prometheus の詳細は、Prometheus のドキュメント を参照してください。
2.5.3. OpenShift 環境変数
アプリケーションの Prometheus インスタンスを設定するには、表2.2「Prometheus 環境変数」にリストされている OpenShift 環境変数を設定します。
環境変数 | 説明 | デフォルト |
---|---|---|
| バインドするホストアドレス。 |
|
| 設定されている場合、Prometheus のアクティベートを無効にします (空の値をエコーします)。 | Prometheus が有効。 |
| 使用するポート。 |
|
| ファイル (パスを含む) を Prometheus 設定ファイルとして使用します。 | Camel メトリックが含まれる /opt/prometheus/prometheus-config.yml ファイル。 |
| JMX エクスポーター設定に追加する追加オプション。 | 該当なし |
関連情報
Pod の環境変数の設定に関する詳細は、OpenShift 開発者ガイド (https://access.redhat.com/documentation/ja-jp/openshift_container_platform/3.11/html/developer_guide/) を参照してください。
2.5.4. Prometheus が監視および収集するメトリックの制御
デフォルトでは、Prometheus は Camel によって公開される可能性のあるすべてのメトリックが含まれる設定ファイル (https://raw.githubusercontent.com/jboss-fuse/application-templates/master/prometheus/prometheus-config.yml
) を使用します。
Prometheus が監視および収集するアプリケーション内にカスタムメトリックがある場合 (アプリケーションプロセスを実行するオーダーの数など)、独自の設定ファイルを使用できます。識別できるメトリックは、JMX で提供されるメトリックに限定されるため注意してください。
手順
カスタム設定ファイルを使用して、デフォルトの Prometheus 設定では対応されない JMX Bean を公開するには、以下の手順に従います。
カスタム Prometheus 設定ファイルを作成します。デフォルトファイルのコンテンツ (
prometheus-config.yml
https://raw.githubusercontent.com/jboss-fuse/application-templates/master/prometheus/prometheus-config.yml) を形式の目安として使用できます。カスタム設定ファイルには任意の名前を使用できます (例:
my-prometheus-config.yml
など)。-
prometheus 設定ファイル (例:
my-prometheus-config.yml
) をアプリケーションのsrc/main/jkube-includes
ディレクトリーに追加します。 アプリケーション内に
src/main/jkube/deployment.xml
ファイルを作成し、設定ファイルに設定された値で AB_JMX_EXPORTER_CONFIG 環境変数のエントリーを追加します。以下に例を示します。spec: template: spec: containers: - resources: requests: cpu: "0.2" limits: cpu: "1.0" env: - name: SPRING_APPLICATION_JSON value: '{"server":{"tomcat":{"max-threads":1}}}' - name: AB_JMX_EXPORTER_CONFIG value: "my-prometheus-config.yml"
この環境変数は、Pod レベルでアプリケーションに適用されます。
- アプリケーションの再構築およびデプロイ