このドキュメントでは、Google Cloud Managed Service for Prometheus を使用して TensorFlow Serving から指標を収集できるように、Google Kubernetes Engine の Deployment を構成する方法について説明します。このドキュメントでは、次の方法について説明します。
- 指標を報告するように TF Serving を設定します。
- エクスポートされた指標を収集するために、Managed Service for Prometheus の PodMonitoring リソースを構成する。
- Cloud Monitoring のダッシュボードにアクセスして指標を表示する。
以下の手順は、Managed Service for Prometheus でマネージド コレクションを使用している場合にのみ適用されます。セルフデプロイ コレクションを使用している場合は、TF Serving のドキュメントでインストール情報をご覧ください。
以下の手順は一例であり、ほとんどの Kubernetes 環境で機能します。セキュリティ ポリシーや組織のポリシーの制限により、アプリケーションやエクスポータのインストールに問題がある場合は、オープンソース ドキュメントでサポート情報を確認することをおすすめします。
TensorFlow Serving の詳細については、TF Serving をご覧ください。Google Kubernetes Engine で TF Serving を設定する方法については、GKE の TF Serving ガイドをご覧ください。
前提条件
Managed Service for Prometheus とマネージド コレクションを使用して TF Serving から指標を収集するには、デプロイが次の要件を満たしている必要があります。
- クラスタで Google Kubernetes Engine バージョン 1.21.4-gke.300 以降を実行している必要があります。
- マネージド コレクションを有効にして、Managed Service for Prometheus を実行する必要があります。詳細については、マネージド コレクションを使ってみるをご覧ください。
TF Serving は、--monitoring_config_file
フラグを使用して MonitoringConfig プロトコル バッファを含むファイルを指定すると、Prometheus 形式の指標を公開します。
MonitoringConfig プロトコル バッファの例を次に示します。
Google Kubernetes Engine の設定ガイド GKE で単一の GPU を使用してモデルを提供するに沿って設定している場合、MonitoringConfig プロトコル バッファはデフォルト設定の一部として定義されます。
TF Serving を手動で設定する場合は、次の手順で MonitoringConfig プロトコル バッファを指定します。
ディレクトリを Cloud Storage バケットにアップロードする前に、モデル ディレクトリに MonitoringConfig プロトコル バッファを含む
monitoring_config.txt
という名前のファイルを作成します。モデル ディレクトリを Cloud Storage バケットにアップロードします。
gcloud storage cp MODEL_DIRECTORY gs://CLOUD_STORAGE_BUCKET_NAME --recursive
環境変数
PATH_TO_MONITORING_CONFIG
を、アップロードしたmonitoring_config.txt
ファイルのパスに設定します。次に例を示します。export PATH_TO_MONITORING_CONFIG=/data/tfserve-model-repository/monitoring_config.txt
コンテナのデプロイ YAML ファイルで、コンテナのコマンドに次のフラグと値を追加します。
"--monitoring_config=$PATH_TO_MONITORING_CONFIG"
たとえば、コマンドは次のようになります。
command: [ "tensorflow_model_server", "--model_name=$MODEL_NAME", "--model_base_path=/data/tfserve-model-repository/$MODEL_NAME", "--rest_api_port=8000", "--monitoring_config_file=$PATH_TO_MONITORING_CONFIG" ]
TF Serving 構成を変更する
次の例に示すように、TF Serving 構成を変更します。
+
記号で始まるすべての行を構成に追加する必要があります。
構成の変更をローカル ファイルから適用するには、次のコマンドを実行します。
kubectl apply -n NAMESPACE_NAME -f FILE_NAME
Terraform を使用して構成を管理することもできます。
TF Serving が想定されるエンドポイントで指標を出力していることを確認するには、次の操作を行います。- 次のコマンドを使用してポート転送を設定します。
kubectl -n NAMESPACE_NAME port-forward POD_NAME 8000
- 別のターミナル セッションでブラウザまたは
curl
ユーティリティを使用して、localhost:8000/monitoring/prometheus/metrics
エンドポイントにアクセスします。
PodMonitoring リソースを定義する
ターゲット ディスカバリの場合、Managed Service for Prometheus Operator には、同じ Namespace 内の TF Serving に対応する PodMonitoring リソースが必要です。
次の PodMonitoring 構成を使用できます。
構成の変更をローカル ファイルから適用するには、次のコマンドを実行します。
kubectl apply -n NAMESPACE_NAME -f FILE_NAME
Terraform を使用して構成を管理することもできます。
構成を確認する
Metrics Explorer を使用すると、TF Serving が正しく構成されていることを確認できます。Cloud Monitoring が指標を取り込むまでに 1~2 分かかる場合があります。
指標が取り込まれていることを確認します。
-
Google Cloud コンソールで、[leaderboardMetrics Explorer] ページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが [Monitoring] の結果を選択します。
- クエリビルダー ペインのツールバーで、[codeMQL] または [codePROMQL] という名前のボタンを選択します。
- [言語] で [PromQL] が選択されていることを確認します。言語切り替えボタンは、クエリの書式設定と同じツールバーにあります。
- 次のクエリを入力して実行します。
up{job="tfserve", cluster="CLUSTER_NAME", namespace="NAMESPACE_NAME"}
ダッシュボードを表示する
Cloud Monitoring インテグレーションには、[TensorFlow Serving Prometheus の概要] ダッシュボードが含まれています。ダッシュボードは、インテグレーションを構成すると自動的にインストールされます。インテグレーションをインストールすることなく、ダッシュボードの静的プレビューを表示することもできます。
インストールされているダッシュボードを表示する手順は次のとおりです。
-
Google Cloud コンソールで [
ダッシュボード] ページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが [Monitoring] の結果を選択します。
- [ダッシュボード リスト] タブを選択します。
- [統合] カテゴリを選択します。
- ダッシュボードの名前(TensorFlow Serving Prometheus の概要 など)をクリックします。
ダッシュボードの静的プレビューを表示する手順は次のとおりです。
-
Google Cloud コンソールで [
インテグレーション] ページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが [Monitoring] の結果を選択します。
- [デプロイメント プラットフォーム] フィルタの [Kubernetes Engine] をクリックします。
- TensorFlow Serving インテグレーションを見つけ、[詳細を表示] をクリックします。
- [ダッシュボード] タブを選択します。
トラブルシューティング
指標の取り込みに関する問題のトラブルシューティングについては、取り込み側の問題のトラブルシューティングのエクスポータからの収集に関する問題をご覧ください。