次の方法で共有


Prometheus と Grafana を使用してアプリケーション ルーティング アドオンの ingress-nginx コントローラー メトリックを監視する

アプリケーション ルーティング アドオンのイングレス nginx コントローラーは、要求、nginx プロセス、およびアプリケーションのパフォーマンスと使用状況の分析に役立つ可能性があるコントローラーの多くのメトリックを公開します。

アプリケーション ルーティング アドオンは、ポート 10254 とプライベート サービス /metricsnginx-metricsで Prometheus メトリック エンドポイントを公開します。

前提条件

メトリック エンドポイントの検証

メトリックが収集されていることを検証するには、 nginx-metrics サービスでローカル ポートからポート 10254 に転送するポートを設定します。

kubectl port-forward -n app-routing-system service/nginx-metrics :10254
Forwarding from 127.0.0.1:43307 -> 10254
Forwarding from [::1]:43307 -> 10254

ローカル ポート (この場合は43307 ) を書き留め、ブラウザーで http://localhost:43307/metrics を開きます。 ingress-nginx コントローラーメトリックの読み込みが表示されます。

ブラウザーの Prometheus メトリックのスクリーンショット。

port-forward プロセスを終了して転送を終了できるようになりました。

Prometheus 用の Azure Monitor マネージド サービスの構成

Prometheus 用の Azure Monitor マネージド サービスは、PromQL、Grafana ダッシュボード、Prometheus アラートなどの業界標準の機能をサポートする、フル マネージドの Prometheus 互換サービスです。 このサービスでは、Prometheus にデータを送信する Azure Monitor エージェントのメトリック アドオンを構成する必要があります。 クラスターがアドオンで構成されていない場合は、この記事に従って、Prometheus の Azure Monitor マネージド サービスにデータを送信するように Azure Kubernetes Service (AKS) クラスターを構成できます。

Service Monitor ベースのスクレイピングを有効にする

クラスターが Azure Monitor エージェントで更新されたら、メトリック エンドポイントのスクレイピングを有効にするようにエージェントを構成する必要があります。 ポッド またはサービス モニターを作成 してこれを実現できます。

次の例では、アプリケーション ルーティング アドオンによってデプロイされた ingress-nginx コントローラーから Service Monitor のスクレーピング メトリックを作成します。

kubectl apply -f - <<EOF
apiVersion: azmonitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: nginx-monitor
  namespace: app-routing-system
spec:
  labelLimit: 63
  labelNameLengthLimit: 511
  labelValueLengthLimit: 1023
  selector:
    matchLabels:
      app.kubernetes.io/component: ingress-controller
      app.kubernetes.io/managed-by: aks-app-routing-operator
      app.kubernetes.io/name: nginx
  endpoints:
  - port: prometheus
EOF

数分後に、ama-metrics名前空間のkube-system ポッドが再起動し、新しい構成を取得する必要があります。

Azure Managed Grafana でのメトリックの視覚化を確認する

Prometheus と Azure Managed Grafana 用の Azure Monitor マネージド サービスが構成されたので、 Managed Grafana インスタンスにアクセスする必要があります。

Grafana インスタンスにダウンロードしてインポートできる 2 つの 公式の ingress-nginx ダッシュボード があります。

  • Ingress-nginx コントローラー ダッシュボード
  • 要求処理のパフォーマンス ダッシュボード

Ingress-nginx コントローラー ダッシュボード

このダッシュボードでは、リクエストのボリューム、接続、成功率、構成の再読み込み、構成の同期が取れていない状況を可視化できます。また、イングレスコントローラのネットワーク IO プレッシャー、メモリ、CPU 使用率を表示することも可能です。 最後に、イングレスの P50、P95、P99 パーセンタイル応答時間とそのスループットも示します。

このダッシュボードは GitHub からダウンロードできます。

Grafana の ingress-nginx ダッシュボードを示すブラウザーのスクリーンショット。

要求処理のパフォーマンス ダッシュボード

このダッシュボードでは、さまざまなイングレス アップストリーム宛先 (イングレス コントローラーがトラフィックを転送しているアプリケーションのエンドポイント) の要求処理のパフォーマンスを把握できます。 要求の合計およびアップストリーム応答時間の P50、P95、P99 パーセンタイルを示します。 要求エラーと待機時間の集計を表示することもできます。 このダッシュボードを使用して、アプリケーションのパフォーマンスとスケーラビリティを確認し、向上させます。

このダッシュボードは GitHub からダウンロードできます。

Grafana の ingress-nginx 要求処理パフォーマンス ダッシュボードを示すブラウザーのスクリーンショット。

ダッシュボードのインポート

Grafana ダッシュボードをインポートするには、左側のメニューを展開し、[ダッシュボード] の [ インポート ] をクリックします。

インポート ダッシュボードが強調表示されている Grafana インスタンスを示すブラウザーのスクリーンショット。

次に、目的のダッシュボード ファイルをアップロードし、[ 読み込み] をクリックします。

Grafana インスタンスのインポート ダッシュボード ダイアログを示すブラウザーのスクリーンショット。

次のステップ

  • Kubernetes Event Driven Autoscaler (KEDA) を使用して Prometheus でスクレーピングされたイングレス メトリックを使用して、ワークロードのスケーリングを構成できます。 KEDA と AKS の統合について詳しくは、こちらをご覧ください。
  • Azure Load Testing を使用してロード テストを作成して実行し、ワークロードのパフォーマンスをテストし、アプリケーションのスケーラビリティを最適化します。