4.2. Prometheus での Fuse Online インテグレーションおよびインフラストラクチャーコンポーネントの監視
Prometheus を使用して Fuse Online インフラストラクチャーコンポーネントおよび Fuse Online インテグレーションを監視できます。Grafana ダッシュボードを使用して、Prometheus によって収集されるメトリクスを可視化することもできます。
Prometheus に対する Red Hat のサポートは、Red Hat 製品ドキュメントに記載されているセットアップと推奨設定に限定されます。
Grafana はコミュニティーがサポートする機能です。Grafana をデプロイして Red Hat Fuse 製品を監視する設定は、Red Hat の実稼働環境におけるサービスレベルアグリーメント (SLA) の対象外です。
Fuse Online インテグレーションを監視する他に、Prometheus を使用して以下の Fuse Online インフラストラクチャーコンポーネントによって公開されるメトリクスを監視できます。
- Syndesis Server
-
syndesis-server
コンポーネントは Micrometer でインストルメント化され、デフォルトですべての JVM Micrometer メトリクスを自動的に公開します。さらに、syndesis-server
は要求レート、エラーレート、レイテンシーなどの REST API エンドポイントに関するメトリクスを公開します。 - Syndesis Meta
-
syndesis-meta
コンポーネントは Micrometer でインストルメント化され、デフォルトですべての JVM Micrometer メトリクスを自動的に公開します。また、REST API エンドポイントについてのメトリクスも公開します。 - Syndesis DB
- Fuse Online Postgres データベースのメトリクスは、サードパーティーの Prometheus エクスポーター を使用してエクスポートされます。
- 統合
-
integration
メトリクスは、インテグレーションが作成され、デフォルトで複数の JVM メトリクスを公開する公式の JMX エクスポーターを使用してエクスポートされた後に表示されます。さらに、integration メトリクスは、メッセージレートやエラーレートなどの Apache Camel 固有のメトリクスを公開します。
前提条件
- Fuse Online は、オンサイトで OCP 4.9 (またはそれ以降) にインストールされ、実行されている。
-
oc
クライアントツールがインストール済みであり、Fuse Online がインストールされている OCP クラスターに接続されている。 -
OCP クラスターへの
admin
アクセスがある。 Fuse Online インストールが
ops addon
が有効になっている状態で設定されている。必要に応じて、以下のコマンドで有効にすることができます。oc patch syndesis/app --type=merge -p '{"spec": {"addons": {"ops": {"enabled": true}}}}'
手順
既存の
openshift-monitoring
設定がある場合は、手順 2 に進みます。それ以外の場合には、ユーザーワークロードモニターリングオプションを
true
に設定するopenshift-monitoring
設定を作成し、手順 3 に進みます。oc apply -f - <<EOF apiVersion: v1 kind: ConfigMap metadata: name: cluster-monitoring-config namespace: openshift-monitoring data: config.yaml: | enableUserWorkload: true EOF
既存の
openshift-monitoring
設定がある場合:既存の
openshift-monitoring
設定をチェックして、ユーザーワークロードモニターリング オプションが true に設定されるかどうかを判別します。oc get -n openshift-monitoring cm/cluster-monitoring-config -ojsonpath='{.data.config\.yaml}'
結果が
enableUserWorkload: true
の場合、ユーザーワークロードモニターリング オプションは true に設定されます。ステップ 3 に進みます。結果に他の設定が表示される場合には、次の手順に進み、ConfigMap を編集してユーザーワークロードの監視を有効にします。
以下のようにエディターで ConfigMap ファイルを開きます。
oc -n openshift-monitoring edit cm/cluster-monitoring-config
enableUserWorkload を true に設定します。以下に例を示します。
apiVersion: v1 kind: ConfigMap metadata: name: cluster-monitoring-config namespace: openshift-monitoring data: config.yaml: | enableUserWorkload: true
- ConfigMap ファイルを保存します。
以下のコマンドを使用して、
openshift-user-workload-monitoring
namespace の Pod のステータスを確認します。oc -n openshift-user-workload-monitoring get pods -w
Pod のステータスが Running になるまで待機します。以下に例を示します。
prometheus-operator-5d989f48fd-2qbzd 2/2 Running prometheus-user-workload-0 5/5 Running prometheus-user-workload-1 5/5 Running thanos-ruler-user-workload-0 3/3 Running thanos-ruler-user-workload-1 3/3 Running
Prometheus で Fuse Online のアラートルールが有効になっていることを確認します。
内部 prometheus インスタンスにアクセスします。
oc port-forward -n openshift-user-workload-monitoring pod/prometheus-user-workload-0 9090
-
ブラウザーを開いて
localhost:9090
にアクセスします。 -
Status> Targets の順に選択します。3 つの
syndesis
エンドポイントが表示されるはずです。 -
CTRL-C を押して、
port-forward
プロセスを終了します。
-
OperatorHub から、Grafana Operator を選択した namespace (例:
grafana-middleware
namespace) にインストールします。 クラスターロールとクラスターロールのバインディングを追加して、
grafana-operator
がノードおよび namespace を一覧表示できるようにします。grafana-operator
Web サイトからクラスターロール YAML ファイルをダウンロードします。curl https://raw.githubusercontent.com/grafana-operator/grafana-operator/master/deploy/cluster_roles/cluster_role_grafana_operator.yaml > tmp_role.yaml
grafana-operator
のクラスターパーミッションを追加して、他の namespace およびノードを読み取ります。cat <<EOF >> tmp_role.yaml - apiGroups: - "" resources: - namespaces - nodes verbs: - get - list - watch EOF
oc apply -f tmp_role.yaml
oc apply -f - <<EOF apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: grafana-operator roleRef: name: grafana-operator kind: ClusterRole apiGroup: "" subjects: - kind: ServiceAccount name: grafana-operator-controller-manager namespace: grafana-middleware EOF
DASHBOARD_NAMESPACES_ALL
環境変数を使用して namespace を制限することで、grafana-operator
が他の namespace から Grafana ダッシュボードを読み取れるようにします。oc -n grafana-middleware patch subs/grafana-operator --type=merge -p '{"spec":{"config":{"env":[{"name":"DASHBOARD_NAMESPACES_ALL","value":"true"}]}}}'
grafana
Pod が再作成されていることを確認します。oc -n grafana-middleware get pods -w
必要に応じて、
grafana-operator
ログを表示します。oc -n grafana-middleware logs -f `oc -n grafana-middleware get pods -oname|grep grafana-operator-controller-manager` -c manager
Grafana カスタムリソース を追加して、以下のように Grafana サーバー Pod を起動します。
oc apply -f - <<EOF apiVersion: integreatly.org/v1alpha1 kind: Grafana metadata: name: grafana-middleware namespace: grafana-middleware spec: config: auth: disable_signout_menu: true auth.anonymous: enabled: true log: level: warn mode: console security: admin_password: secret admin_user: root dashboardLabelSelector: - matchExpressions: - key: app operator: In values: - grafana - syndesis ingress: enabled: true EOF
grafana-operator
がモニターリング情報を読み取ることを許可します。oc -n grafana-middleware adm policy add-cluster-role-to-user cluster-monitoring-view -z grafana-serviceaccount
GrafanaDatasource
を追加して、thanos-querier
をクエリーします。oc apply -f - <<EOF apiVersion: integreatly.org/v1alpha1 kind: GrafanaDataSource metadata: name: prometheus-grafanadatasource namespace: grafana-middleware spec: datasources: - access: proxy editable: true isDefault: true jsonData: httpHeaderName1: 'Authorization' timeInterval: 5s tlsSkipVerify: true name: Prometheus secureJsonData: httpHeaderValue1: "Bearer $(oc -n grafana-middleware serviceaccounts get-token grafana-serviceaccount)" type: prometheus url: "https://$(oc get route thanos-querier -n openshift-monitoring -ojsonpath='{.spec.host}')" name: prometheus-grafanadatasource.yaml EOF
grafana サーバーログを表示します。
oc logs -f `oc get pods -l app=grafana -oname`
grafana URL にアクセスし、Fuse Online ダッシュボードを表示するには、以下を実行します。
echo "https://"$(oc -n grafana-middleware get route/grafana-route -ojsonpath='{.spec.host}')
Grafana コンソールの左側のパネルで、検索ボタンをクリックします。各 Syndesis インスタンスのダッシュボードを含むフォルダー (OCP namespace 名) が表示されます。
- Fuse Online インテグレーションでは、Integration - Camel を選択します。このダッシュボードには、Apache Camel インテグレーションアプリケーションによって公開される標準メトリクスが表示されます。
Fuse Online インフラストラクチャーコンポーネントでは、以下のインフラストラクチャーダッシュボードのいずれかを選択します。
- Infrastructure - DB
- Fuse Online の Postgres インスタンスに関連するメトリクスを表示します。
- Infrastructure - JVM
-
syndesis-meta
またはsyndesis-server
アプリケーションの実行中の JVM に関するメトリクスを表示します。ダッシュボードの上部にある Application ドロップダウンリストから、監視するアプリケーションを選択します。 - Infrastructure - REST APIs
-
request throughput
およびlatency
などの Fuse Online インフラストラクチャー API エンドポイントに関連するメトリクスを表示します。ダッシュボードの上部にある Application ドロップダウンリストから、監視するアプリケーションを選択します。
関連情報
Prometheus を初めて使用する場合は、https://prometheus.io/docs/prometheus/latest/getting_started/ を参照してください。