アプリケーション ルーティング アドオンのイングレス nginx コントローラーは、要求、nginx プロセス、およびアプリケーションのパフォーマンスと使用状況の分析に役立つ可能性があるコントローラーの多くのメトリックを公開します。
アプリケーション ルーティング アドオンは、ポート 10254 とプライベート サービス /metrics
のnginx-metrics
で Prometheus メトリック エンドポイントを公開します。
前提条件
- アプリケーション ルーティング アドオンが有効になっている Azure Kubernetes Service (AKS) クラスター。
- Prometheus インスタンス (例: Prometheus の Azure Monitor マネージド サービス)。
メトリック エンドポイントの検証
メトリックが収集されていることを検証するには、 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 コントローラーメトリックの読み込みが表示されます。
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 からダウンロードできます。
要求処理のパフォーマンス ダッシュボード
このダッシュボードでは、さまざまなイングレス アップストリーム宛先 (イングレス コントローラーがトラフィックを転送しているアプリケーションのエンドポイント) の要求処理のパフォーマンスを把握できます。 要求の合計およびアップストリーム応答時間の P50、P95、P99 パーセンタイルを示します。 要求エラーと待機時間の集計を表示することもできます。 このダッシュボードを使用して、アプリケーションのパフォーマンスとスケーラビリティを確認し、向上させます。
このダッシュボードは GitHub からダウンロードできます。
ダッシュボードのインポート
Grafana ダッシュボードをインポートするには、左側のメニューを展開し、[ダッシュボード] の [ インポート ] をクリックします。
次に、目的のダッシュボード ファイルをアップロードし、[ 読み込み] をクリックします。
次のステップ
- Kubernetes Event Driven Autoscaler (KEDA) を使用して Prometheus でスクレーピングされたイングレス メトリックを使用して、ワークロードのスケーリングを構成できます。 KEDA と AKS の統合について詳しくは、こちらをご覧ください。
- Azure Load Testing を使用してロード テストを作成して実行し、ワークロードのパフォーマンスをテストし、アプリケーションのスケーラビリティを最適化します。
Azure Kubernetes Service