Vantage でのメトリクスの公開方法
Vantage アプリケーションの pod には OpenTelemetry SDK が組み込まれており、コンテナーの 8080 番ポートで/metrics-text に Prometheus 形式のメトリクスを公開します。このエンドポイントを公開するサービスには、次のラベルが付いています。
httpでポート80が8080にマッピングされます。Prometheus は、そのラベルで選択するServiceMonitorを通じてこれらのサービスを検出し、スクレイプします。
サービスメッシュの考慮事項
Istio
ポート8080のアプリケーショントラフィックは Envoy サイドカーによってインターセプトされ、STRICT mTLS の対象になります。これらのメトリクスを読み取るスクレイパーは、対象の pod に対して有効な mTLS クライアント証明書を提示する必要があります。スクレイパーに Istio サイドカーを注入するだけでは不十分です。Prometheus の scrape target は pod IP とコンテナーのポートに解決されますが、Envoy サイドカーではそこにルーティングできないため、すべてのスクレイプは HTTP 503 で失敗します。ドキュメント化されている動作確認済みの構成では、Prometheus はメッシュ内で Istio サイドカーとともに稼働し、そのサイドカーがメッシュ証明書を共有ボリューム (OUTPUT_CERTS) にエクスポートします。さらに Prometheus 自体が、ServiceMonitor の tlsConfig で証明書パスを設定し、scheme: https を使用してスクレイプすることで、それらの証明書を提示します。
そのため、Azure のマネージド Prometheus オファリングに付属する ama-metrics エージェントを含め、メッシュ外で動作するスクレイパーは利用できません。AKS で Vantage のアプリケーションメトリクスを収集するには、メッシュ内に Prometheus インスタンスをデプロイし、mTLS 経由で Vantage をスクレイプして Azure Monitor に remote-write します。
Linkerd
Linkerd のデフォルトの permissive ポリシーでは通常、メッシュ化されていない Prometheus でも、プロキシされた Vantage メトリクス エンドポイントを平文でスクレイプできます。KEDA を有効にする前に、すべての Vantage ターゲットがUP になっていることを確認してください。
Linkerd の認可ポリシーで認証済みのメッシュ トラフィックが必須の場合は、observability 名前空間をメッシュに参加させるか、ポリシーで必要なクライアント証明書を使用するよう Prometheus と ServiceMonitor を設定してください。要件は、Prometheus が /metrics-text を正常にスクレイプできることです。Vantage では、Prometheus の特定のデプロイ方法は必要ありません。
推奨アプローチ
Prometheus による監視
あらゆる環境で利用できるセルフマネージド Prometheus (kube-prometheus-stack) 。Istio と Linkerd 向けの構成パスを用意しています。
Azure マネージド監視
Azure Monitor Workspace + Azure Managed Grafana。メッシュ内の Prometheus が mTLS 経由で Vantage をスクレイプし、Azure Monitor に remote-write します。
ama-metrics エージェントは引き続き Kubernetes インフラストラクチャのメトリクスを処理します。利用可能なメトリクス
Vantage アプリケーションは、OpenTelemetry SDK を通じて 3 種類のメトリクスを公開します。- プロセスメトリクス:
process_cpu_count,process_memory_usage_bytes,process_cpu_time_seconds_total,process_thread_count。pod ごとのランタイムリソース使用量。 - HTTP クライアント/サーバーメトリクス:
http_client_active_requests,http_client_connection_duration_secondsなど。リクエストのレイテンシと接続状況の追跡。 - ABBYY プラットフォームメトリクス:
abbyy_platform_listener_*,abbyy_platform_redisstreamscontroller_*。アプリケーションレベルの処理およびキューに関するメトリクス。
service、pod、namespace、otel_scope_name のラベルが含まれます。