例では kube-prometheus-stack を使用していますが、アプローチ自体は汎用的で、どの Prometheus デプロイにも適用できます。メッシュ固有の制約については、監視の概要 を参照してください。
Vantage でのメトリクス公開方法
/metrics-text で Prometheus 形式のメトリクスを公開します。このエンドポイントを公開するサービスには abbyy.platform.metrics.text.endpoint: "1" というラベルが付いており、サービスポート (通常は 80) が、ポート名 http のコンテナーポートにマップされます。Prometheus は ServiceMonitor を介してこれらのサービスを検出し、スクレイプします。そのため、メトリクス収集用に別途 OpenTelemetry Collector を用意する必要はありません。
全体像とサービスメッシュの制約については、監視の概要を参照してください。
前提条件
- Vantage がインストールされ、稼働中であること (operator とワークロードがデプロイ済み) 。
- Helm 3。
- クラスターに対する
kubectlアクセス。 - KEDA が有効な場合は、
prometheus-operated.observability.svc.cluster.local:9090でアクセス可能な Prometheus インスタンス。
Prometheus を設定する
otlp-write-receiver 機能を有効にし、Prometheus インスタンスに --web.enable-otlp-receiver 引数を渡します (OTLP取り込みを参照) 。
Helm リポジトリを追加します:
values ファイル (observability-values.yaml) を作成します:
Prometheus が Vantage をスクレイプするように設定する
vantage-selfhosted チャートでは、Vantage を監視するために必要な ServiceMonitor オブジェクトを作成できます。
observability キーはトップレベルに配置する必要があり、vantage の下にネストしてはいけません。
Linkerd mTLS
observability 名前空間にインストールし、Vantage の ServiceMonitor を有効にして、すべての Vantage ターゲットが UP であることを確認してください。
厳格な Linkerd 認可ポリシーによってスクレイプがブロックされる場合は、次のいずれかの方法を使用してください。
observability名前空間で Linkerd インジェクションを有効にし、Prometheus がメッシュに参加するようにします。observability.prometheus.serviceMonitor.scheme: httpsと、Linkerd の構成によって Prometheus で利用可能になるクライアント証明書を参照するtlsConfigを設定します。
ScaledObject リソースで使用される Vantage メトリクスについて、Prometheus が最新の値を返すようになるまで、KEDA を有効にしないでください。確認用クエリと準備完了チェックについては、KEDA による自動スケーリングを参照してください。
Istio mTLS
ingress.enabled が true で ingress.type が istio の場合のデフォルト設定) 、Prometheus は service 名ではなく pod IP を直接使用するため、Prometheus と `ServiceMonitor“ は mTLS 経由でエンドポイントをスクレイプするように設定する必要があります。
Prometheus pod に次のアノテーションを設定します。
volume と volumeMount (名前とパスはカスタマイズ可能です。以下の例ではこれらを使用しています) :
ServiceMonitor(s) がこれらの証明書を使用するよう設定されるように、vantage-selfhosted チャートをインストールします。
メトリクスが送信されていることを確認する
http://localhost:9090/targets にアクセスすると、各ターゲットのスクレイプ ステータスも確認できます。
Grafana にアクセスする
http://localhost:3000 を開きます。デフォルトの認証情報は、admin と values ファイルで設定したパスワードです。Prometheus はデータソースとして事前に設定されています。
利用可能なメトリクス
service、pod、namespace、otel_scope_name のラベルが付与されています。全メトリクスの一覧については、利用可能なメトリクス を参照してください。
OTLP取り込み
OTLP取り込みはプッシュベースで、上記のスクレイプベースの
ServiceMonitor フローとは独立しています。スクレイプエンドポイントを公開するサービスではなく、OpenTelemetry メトリクスをプッシュするサービスにのみ使用してください。--web.enable-otlp-receiver) 、HTTP 経由で OTLP メトリクスをプッシュするサービスであれば、どれでもそれらを次の宛先に送信できます。
