Verrazzanoのモニタリング・コンポーネントの理解

Verrazzanoメトリック・スタックは、メトリック集計を自動化し、Prometheus、ThanosおよびGrafanaコンポーネントで構成されます。メトリック・ソースは、システム・メトリックおよびアプリケーション・メトリックを公開します。PrometheusおよびThanosコンポーネントはメトリックを取得および格納し、Grafanaはそれをビジュアル化するためのダッシュボードを提供します。

次は、単一クラスタ環境でのメトリック収集を表したものです。

メトリック

メトリック・ソース

次の項では、VerrazzanoがOAMおよび標準のKubernetesアプリケーションに提供しているメトリック・ソースについて説明します。

OAM

メトリック・ソースは、メトリックを生成し、ポッド内の注釈を使用してKubernetes Prometheusシステムに公開します。メトリックの注釈は、リソース・タイプによって若干異なる場合があります。次に、todo-listアプリケーション・ポッドで指定されたWebLogic Prometheus関連の構成の例を示します:

$ kubectl describe pod tododomain-adminserver -n todo-list

Annotations:  prometheus.io/path: /wls-exporter/metrics
              prometheus.io/port: 7001
              prometheus.io/scrape: true

CoherenceやHelidonなどの他のリソース・タイプの場合、注釈は次のようになります:

Annotations:  verrazzano.io/metricsEnabled: true
              verrazzano.io/metricsPath: /metrics
              verrazzano.io/metricsPort: 8080

メトリック・ソースによって使用可能になっているメトリックを直接表示するには、ポートをマップしてからパスにアクセスします。

たとえば、前述のメトリック・ソースの場合:

  • メトリックの公開に使用されるポートをマップします。

    $ kubectl port-forward tododomain-adminserver 7001:7001 -n todo-list
    

  • 対応するシークレットからメトリック・ソースへのアクセスに使用するユーザー名とパスワードを取得します。

    $ kubectl get secret \
        --namespace todo-list tododomain-weblogic-credentials \
        -o jsonpath={.data.username} | base64 \
        --decode; echo
    $ kubectl get secret \
        --namespace todo-list tododomain-weblogic-credentials \
        -o jsonpath={.data.password} | base64 \
        --decode; echo
    

  • 前のステップで取得したユーザー名とパスワードを使用して、エクスポートしたパスのメトリックにアクセスします。

    $ curl -u USERNAME:PASSWORD localhost:7001/wls-exporter/metrics
    

標準のKubernetesワークロード

Verrazzanoでは、OAMコンポーネントなしでデプロイされたKubernetesワークロードのメトリック・ソースの有効化がサポートされます。Kubernetesワークロードのメトリックを有効化するには、必要に応じてサービス・モニターまたはポッド・モニターを作成する必要があります。

メトリック・トレイトで使用するサービス・モニターにはメトリック収集のためのサービスが必要です。
サービス・モニターおよびポッド・モニターの詳細は、Prometheusオペレータのドキュメントを参照してください。

ワークロードのためにサービス・モニターまたはポッド・モニターを作成する場合は、モニター・リソース上に値がprometheus-operatorのラベルreleaseを含めます。

メトリック収集の検証

ワークロードのメトリックが収集されていることを確認するには、次のステップを実行します。

  1. Prometheusコンソールにアクセスします。
  2. コンソールから、ナビゲーション・バーを使用して「Status/Targets」にアクセスします。
  3. このページには、<monitor-type>/<workload-namespace>_<workload-name>_<workload-type>という形式のターゲット名が表示されます。monitor-typeはserviceMonitorまたはpodMonitorです。
  4. 将来の問合せで使用できるように、ターゲット・ラベルからこのジョブ名をコピーします。
  5. このターゲットの「State」が「UP」になっていることを確認します。
  6. 次に、ナビゲーション・バーを使用して「Graph」にアクセスします。
  7. ここでは、コピーしたジョブ名を使用して次の式を作成します: {job="<job_name>"}
  8. グラフを使用してこの式を実行し、アプリケーション・メトリックが表示されることを確認します。

メトリック収集を確認できない場合は、ワークロードのサービスを手動で作成する必要がある場合があります。

Prometheusの解決方法の詳細は、「Prometheusのトラブルシューティング」を参照してください。

レガシー・ワークロード

以前のバージョンのVerrazzano (1.3.x以前)のメトリック・ソースであった標準のKubernetesワークロードは、新しいバージョンのVerrazzanoにアップグレードしたときも、引き続きサポートされます。

レガシー・デフォルト・メトリック・テンプレートを使用したワークロードの場合、Verrazzanoはワークロードのネームスペースにサービス・モニターを作成し、メトリックが引き続きスクレイピングされるようにします。サービス・モニターを編集することで、メトリック・ソース構成を継続的に変更できます。

レガシー・カスタム・メトリック・テンプレートを使用したワークロードの場合、VerrazzanoはPrometheusオペレータを構成し、メトリックが引き続きスクレイピングされるようにします。

メトリック・サーバー

  • Verrazzanoは、Prometheusオペレータをverrazzano-monitoringネームスペースにインストールします。
  • 1つのPrometheusポッドが、Prometheusオペレータによって同じネームスペースに作成されます。
  • 公開されているメトリック・ソース・エンドポイントを検出します。
  • メトリック・ソースからメトリックをスクレイピングします。
  • すべてのメトリックを公開する責任があります。