VM Manager のトラブルシューティング

このドキュメントでは、VM Manager のトラブルシューティングについて説明します。

VM Manager の詳細については、VM Manager をご覧ください。

始める前に

  • まだ設定していない場合は、認証を設定します。認証とは、Google Cloud のサービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      詳細については、Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。

概要

問題をトラブルシューティングするには、まず VM Manager が適切に設定されていることを確認します。設定が正しいにもかかわらず問題が継続している場合は、ログをご確認ください。ログを確認すると、VM や VM Manager ワークフローの問題(コマンドやスクリプトのエラーなど)を特定し、隔離して解決できます。

ログからは次の情報を収集できます。

  • VM によってログに記録されたエラー メッセージまたは警告。これは、VM レベルのエラーや、VM で実行されている他のサービスのエラーを特定する際に最適です。これらのログの確認方法については、Cloud Logging の検査をご覧ください。
  • OS Config エージェントがログに記録した詳細なデバッグ情報。これは、VM Manager によって実行される処理の問題を特定する際に役立ちます。OS Config エージェントのデバッグログを確認する方法については、デバッグログの検査をご覧ください。

問題またはエラーを特定した後、一般的なエラーのセクションで、可能性のある修正方法を確認することもできます。

Cloud Logging の検査

Google Cloud コンソールで機能ごとのクイックリンクを使用すると、特定の VM のログを確認できます。

OS パッチ

  1. Google Cloud コンソールで、[OS Patch Management] ページの [パッチジョブ] タブに移動します。

    [パッチジョブ] に移動

  2. デバッグするパッチジョブの名前をクリックします。
  3. [更新された VM インスタンス] まで下にスクロールします。
  4. 特定の VM について、[ログ] の下の [表示] をクリックします。

OS ポリシー

この手順は OS ポリシーでサポートされています。ゲストポリシー(ベータ版)の場合は、次のセクションで説明するデバッグログ オプションを使用してください。

  1. Google Cloud コンソールで、[OS Configuration Management] ページの [VM インスタンス] タブに移動します。

    [VM インスタンス] に移動

  2. デバッグする VM の名前をクリックします。
  3. [ポリシー] まで下にスクロールします。
  4. [ログ] の下の [表示] をクリックします。

デバッグログの検査

OS Config エージェントのデバッグを有効にしてデバッグログを表示すると、VM Manager 機能の問題を特定できます。

OS Config エージェントのデバッグ ロギングを有効にする

デバッグ ロギングを有効にするには、VM インスタンスまたはプロジェクトでメタデータ osconfig-log-level=debug を設定します。

VM でデバッグ ロギングを有効にするには、次の手順を行います。

コンソール

  1. Google Cloud コンソールで [VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. メタデータ値を設定する VM の名前をクリックします。

  3. [インスタンスの詳細] ページで、[編集] をクリックして設定を編集します。

  4. [カスタム メタデータ] の下に、次のメタデータ エントリを追加します。

    キー: osconfig-log-level
    値: debug

  5. [保存] をクリックして、VM に変更を適用します。

gcloud

--metadata=osconfig-log-level=debug フラグを指定して instances add-metadata コマンドを使用します。

gcloud compute instances add-metadata VM_NAME \
    --metadata=osconfig-log-level=debug

VM_NAME は実際の VM 名に置き換えます。

REST

インスタンスのメタデータを設定する手順については、インスタンス メタデータの設定で API の手順をご覧ください。

メタデータ プロパティの一部として、次の Key-Value ペアが必要です。

キー: osconfig-log-level
値: debug

デバッグログを表示する

デバッグ ロギングが有効になっている場合、OS Config エージェントは Cloud Logging とシリアルポート コンソールにログエントリを書き込みます。

VM でデバッグ ロギングを有効にしてから、OS Config エージェントが Cloud Logging にデバッグ メッセージを書き込むまでに 10 分ほどかかります。この待機時間を短縮するには、エージェントまたは VM を再起動します。Cloud Logging の詳細については、Cloud Logging のログの表示をご覧ください。

デバッグログを表示するには、次のオプションを使用できます。

  • Cloud Logging: Google Cloud コンソールまたは Google Cloud CLI を使用する
  • シリアルポート コンソール

コンソール

  1. Google Cloud コンソールの [ロギング] > [ログ エクスプローラ](ログ エクスプローラ)ページに移動します。

    [ログ エクスプローラ] に移動

  2. 必要に応じて、ページの上部で既存の Google Cloud プロジェクトを選択するか、新しいプロジェクトを作成します。

  3. [リソース] プルダウン リストで、[VM インスタンス] を選択します。使用可能な VM(instance_id)のリストが表示されます。

  4. 表示する VM をクリックします。

  5. [追加] をクリックします。

  6. [ログ名] プルダウン リストで [OSConfigAgent] を選択します。

  7. [追加] をクリックします。

  8. クエリは次のようになります。

    resource.type="gce_instance" resource.labels.instance_id="INSTANCE_ID"
    logName="projects/PROJECT_ID/logs/OSConfigAgent"
    
  9. [クエリを実行] をクリックします。

gcloud

gcloud logging read コマンドを実行します。

 gcloud logging read "resource.type=gce_instance AND logName=projects/PROJECT_ID/logs/OSConfigAgent"
 

PROJECT_ID は、実際のプロジェクト ID に置き換えます。

シリアルポート

シリアルポート コンソールからのデバッグログ情報を表示するには、シリアルポート出力の表示をご覧ください。

一般的なエラー

認証の問題

VM Manager を使用するには、次のものが必要です。

  • 接続されたサービス アカウント。VM Manager は、このサービス アカウントを使用して API サービスに対するリクエストに署名します。
  • 接続されたサービス アカウントに対する、Logging API にログを書き込むための roles/logging.logWriter ロール。
  • Google Cloud OS Config サービス エージェント。VM Manager は、パッチジョブの開始時にこのサービス エージェントを作成し、Cloud OS Config サービス エージェントのロールを付与します。OS ポリシーを作成する際に、このサービス エージェントを構成する必要はありません。

VM Manager を使用していて、サービス アカウントが接続されていない場合、または Google Cloud OS Config サービス エージェントがない場合は、パッチジョブの操作中に次のエラーが表示されることがあります。

Service account permissions are missing. Verify that the service account has the correct permissions and try again.
OSConfigAgent Error main.go:88: error getting token from metadata: metadata: GCE metadata "instance/service-accounts/default/identity?audience=osconfig.googleapis.com&format=full" not defined
message: "Error running OPERATION_NAME: error calling OPERATION_NAME: code: "PermissionDenied", message: "The caller does not have permission", details: []"

認証に関する問題により、VM インスタンスがパッチ ダッシュボードに表示されないこともあります。

これらの問題を解決するには、次のいずれか、またはすべてをお試しください。

  • すべてのアカウントに、接続されたサービス アカウントが存在することを確認します。
  • Google Cloud OS Config サービス エージェントに Cloud OS Config サービス エージェントのロール(roles/osconfig.serviceAgent)が設定されていることを確認します。

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member='serviceAccount:service-PROJECT_NUMBER@gcp-sa-osconfig.iam.gserviceaccount.com' \
      --role='roles/osconfig.serviceAgent'
    

    次のように置き換えます。

パッチ更新用のパッケージの除外時のエラーについて

パッチジョブでパッケージを除外するときにパッケージの名前にワイルドカードまたは特殊文字を指定した場合、OS Patch Management はリストを無視してすべてのパッケージを更新することがあります。

この問題を解決するには、OS Config エージェントを更新してバージョン 20220829.00 にしてから、スラッシュ(/)でパッケージ名をラップします。

次の例では、OS Patch Management は、パッケージ名に接頭辞 google- が付いた yum パッケージを除外しています。

      gcloud compute os-config patch-jobs execute --instance-filter-all
--yum-excludes=/google-.*/

次のステップ