このページでは、Google Kubernetes Engine(GKE)で実行されている Ray クラスタのログと指標を収集するように Google Kubernetes Engine(GKE)を構成する方法と、Cloud Logging と Cloud Monitoring で Ray のログと指標を表示する方法について説明します。
Ray と KubeRay の詳細については、Ray on Google Kubernetes Engine(GKE)の概要をご覧ください。
始める前に
作業を始める前に、次のタスクが完了していることを確認してください。
- Google Kubernetes Engine API を有効にする。 Google Kubernetes Engine API を有効化
- このタスクに Google Cloud CLI を使用する場合は、gcloud CLI をインストールして初期化する。gcloud CLI をインストール済みの場合は、
gcloud components updateコマンドを実行して最新のバージョンを取得します。以前のバージョンの gcloud CLI では、このドキュメントのコマンドを実行できない場合があります。
要件と制限事項
- Ray クラスタのロギングを有効にする前に、既存の GKE クラスタでシステムとワークロードのロギングを有効にする必要があります。
- 既存の GKE クラスタで Ray クラスタのログ収集を有効にすると、GKE は既存の Ray Pod ではなく、新しく作成された Ray Pod からのみログを収集します。
- GKE Standard クラスタの場合、Ray クラスタの指標の収集を有効にするには、Google Cloud Managed Service for Prometheus を有効にする必要があります。Autopilot クラスタの場合、Google Cloud Managed Service for Prometheus はデフォルトで有効になっています。
- Ray クラスタ内の Ray コンテナで
ray-logsという名前のボリュームを指定しないでください。指定すると、GKE はログを収集しません。 - JSON ロギングは、GKE バージョン v1.35.1-gke.1616000 以降で使用できます。構造化 JSON ロギングを有効にするには、Ray コンテナ仕様内で特定の環境変数を構成します。
Ray クラスタのログ収集を有効にする
Ray クラスタのログ収集は、新規または既存の GKE Autopilot または Standard クラスタで有効にできます。GKE が Ray クラスタから収集する Ray ログは、コンテナログとして分類されます。これには、Ray クラスタ ヘッダーノードとワーカーノードで生成されたすべてのログが含まれます。
Ray クラスタに対するログ収集を有効にするには、 Google Cloud コンソールまたは gcloud CLI を使用します。
コンソール
Google Cloud コンソールで Google Kubernetes Engine ページに移動します。
[作成] をクリックし、[Standard] セクションまたは [Autopilot] セクションで [構成] をクリックします。
ナビゲーション パネルの [クラスタ] の下の [機能] をクリックします。
[オペレーション] セクションで、[System and Workloads] チェックボックスがオンになっていることを確認します。
[AI と ML] セクションで、[Ray Operator ���有効化] を選択してから、[Ray クラスタのログ収集を有効にする] を選択します。
[作成] をクリックします。
Standard クラスタの場合は、Google Cloud Managed Service for Prometheus も有効にする必要があります。
gcloud
--addons=RayOperator オプションと --enable-ray-cluster-logging オプションを使用してクラスタを作成します。
gcloud container clusters create CLUSTER_NAME \
--location=LOCATION \
--addons=RayOperator \
--enable-ray-cluster-logging
次のように置き換えます。
CLUSTER_NAME: 新しいクラスタの名前。LOCATION: 新しいクラスタのロケーション(us-central1 など)。
既存のクラスタで Ray クラスタのログ収集を有効にするには、--addons=RayOperator オプションと --enable-ray-cluster-logging オプションを指定して gcloud container clusters update コマンドを使用します。
Ray ログを確認する
Logging を使用して、GKE で実行されている Ray クラスタから収集されたログを確認できます。
Google Cloud コンソールの [Cloud Logging] ページに移動します。
クエリエディタを開き、クエリエディタに式を貼り付けます。
[クエリを実行] をクリックします。
ログ エクスプローラでは、次のサンプルクエリを使用できます。
| クエリ / フィルタの名前 | 式 |
|---|---|
| すべての Ray ログ | resource.type="k8s_container" labels."k8s-pod/ray_io/is-ray-node"="yes" |
| すべての Ray ヘッドログ | resource.type="k8s_container" labels."k8s-pod/ray_io/node-type"="head" |
| Ray クラスタ内のすべてのログ | resource.type="k8s_container" labels."k8s-pod/ray_io/cluster"="RAY_CLUSTER_NAME" |
| Ray ジョブのすべてのドライバログ | resource.type="k8s_container" jsonPayload.ray_submission_id="RAY_JOB_SUBMISSION_ID" |
| Ray ジョブのすべてのワーカーログ | resource.type="k8s_container" labels."k8s-pod/ray_io/cluster"="RAY_CLUSTER_NAME" labels."k8s-pod/ray_io/node-type"="worker" jsonPayload.filename=~"/tmp/ray/session_latest/logs/worker-(.*).out" |
拡張構造化ロギングを有効にする(推奨)
拡張構造化ロギングは、GKE バージョン v1.35.1-gke.1616000 以降で使用できます。
デフォルトでは、Ray ログは Cloud Logging の jsonPayload.log フィールド内の非構造化テキスト文字列としてキャプチャされます。クエリ、分析、オブザーバビリティを改善するために、構造化 JSON 形式でログを生成するように Ray クラスタを構成できます。この拡張形式では、ログが詳細な Key-Value ペアに解析されるため、task_id や job_id などの属性に対して、フィールドベースのクエリをより高速に実行できます。構造化ロギングの強化により、正しい重大度ラベルが提供され、複数行のログの分割が防止され、Cloud Logging 機能とシームレスに統合されて、分析とデバッグが改善されます。
構造化 JSON 出力を有効にするには、次の操作を行います。
- Ray クラスタでログ収集を有効にする
RayClusterYAML マニフェストの Ray コンテナ仕様で、次の環境変数を設定します。RAY_LOGGING_CONFIG_ENCODING="JSON": 構造化 JSON エンコードを使用するように Ray アプリケーション ログ(Ray Core、アクター、タスク)を構成します。RAY_BACKEND_LOG_JSON="1": 構造化された JSON 形式で生成されるように Ray システムログ(GCS サーバーや Raylet のログなど)を構成します。
たとえば、次の RayCluster マニフェストには、headGroupSpec と workerGroupSpecs の両方の仕様で、すべての Ray コンテナの env セクションが含まれています。
# Example snippet for a RayCluster manifest apiVersion: ray.io/v1 kind: RayCluster metadata: name: raycluster-structured spec: headGroupSpec: template: spec: containers: - name: ray-head image: rayproject/ray:2.54.0 # Replace with your desired Ray image # ... other container settings env: - name: RAY_LOGGING_CONFIG_ENCODING value: "JSON" - name: RAY_BACKEND_LOG_JSON value: "1" workerGroupSpecs: - groupName: small-group replicas: 1 minReplicas: 1 maxReplicas: 5 template: spec: containers: - name: ray-worker image: rayproject/ray:2.54.0 # Replace with your desired Ray image # ... other container settings env: - name: RAY_LOGGING_CONFIG_ENCODING value: "JSON" - name: RAY_BACKEND_LOG_JSON value: "1"更新された RayCluster マニフェストを適用します。
kubectl apply -f your-raycluster.yaml
構造化ログのクエリ
| クエリ / フィルタの名前 | 式 |
|---|---|
| 特定の Ray ジョブ ID のすべてのエラーログ | resource.type="k8s_container" labels."k8s-pod/ray_io/is-ray-node"="yes" severity=ERROR jsonPayload.job_id="YOUR_JOB_ID" |
| 特定の Ray ワーカー プロセス ID のログ | resource.type="k8s_container" labels."k8s-pod/ray_io/is-ray-node"="yes" jsonPayload.worker_id="YOUR_WORKER_ID" |
| 特定のワーカー Pod の特定のタスク ID のエラーログ | resource.type="k8s_container" resource.labels.pod_name="YOUR_WORKER_POD_NAME" labels."k8s-pod/ray_io/is-ray-node"="yes" severity=ERROR jsonPayload.task_id="YOUR_TASK_ID" |
Ray クラスタの指標の収集を有効にする
新規または既存の GKE Autopilot または Standard クラスタで Ray クラスタの指標の収集を有効にできます。
Ray クラスタの指標の収集を有効にすると、GKE は既存の Ray クラスタと新しい Ray クラスタから指標を収集します。GKE は、Ray によってエクスポートされたすべてのシステム指標を Prometheus 形式で収集します。
Ray クラスタの指標の収集は、Google Cloud コンソールまたは gcloud CLI を使用して有効にすることができます。
コンソール
Google Cloud コンソールで Google Kubernetes Engine ページに移動します。
[作成] をクリックし、[Standard] セクションまたは [Autopilot] セクションで [構成] をクリックします。
ナビゲーション パネルの [クラスタ] の下の [機能] をクリックします。
[オペレーション] セクションで、[System and Workloads] チェックボックスがオンになっていることを確認します。
[AI と ML] セクションで、[Ray Operator の有効化] を選択してから、[Ray クラスタの指標の収集を有効にする] を選択します。
[作成] をクリックします。
Standard クラスタの場合は、Google Cloud Managed Service for Prometheus も有効にする必要があります。
gcloud
--addons=RayOperator オプションと --enable-ray-cluster-monitoring オプションを使用してクラスタを作成します。
gcloud container clusters create CLUSTER_NAME \
--location=LOCATION \
--addons=RayOperator \
--enable-ray-cluster-monitoring
次のように置き換えます。
CLUSTER_NAME: 新しいクラスタの名前。LOCATION: 新しいクラスタのロケーション(us-central1 など)。
既存のクラスタで Ray クラスタのログ収集を有効にするには、--addons=RayOperator オプションと --enable-ray-cluster-monitoring オプションを指定して gcloud container clusters update コマンドを使用します。
Ray の指標を確認する
Google Cloud Managed Service for Prometheus には、事前構成された Ray on GKE の概要のダッシュボードが用意されています。このダッシュボードには、主要な Ray 指標が一元的に表示されます。これは、GKE で Ray クラスタのモニタリングを迅速に開始するうえでおすすめの方法です。
Ray クラスタに対して指標の収集を有効にすると、このダッシュボードにデータが自動的に入力されます。
GKE 上で動作している Ray クラスタから収集された個々の指標を確認する場合は、次の手順で操作します。
Google Cloud コンソールの [Metrics Explorer] ページに移動します。
[指標を選択] フィールドで、Ray 固有の指標を検索できます。��常、これらの指標には
prometheus/ray_という接頭辞が付いています。たとえば、prometheus/ray_worker_cpu_seconds_totalやprometheus/ray_memory_bytes_maxなどがあります。適切なリソースタイプ(
k8s_pod、k8s_containerなど)を選択し、Ray クラスタに関連するラベル(ray.io/clusterなど)でフィルタ処理することで、検索結果を絞り込むことができます。
次のステップ
- Ray on Kubernetes について学習する。
- KubeRay のドキュメントを確認する。