仮想マシン(VM)インスタンスには 4 つの仮想シリアルポートがあります。インスタンスのオペレーティング システム、BIOS、その他のシステムレベルのエンティティは多くの場合、シリアルポートに出力を書き込みます。これにより、クラッシュ、ブートの失敗、起動の問題、シャットダウンの問題などのトラブルシューティングにシリアルポートの出力を活用できます。
このページでは、インスタンスが停止または削除された後でも、Cloud Logging を使用してシリアルポートの出力を保持するなど、シリアルポートの出力を表示する方法について説明します。インスタンスの実行中にコマンドをシリアルポートに送信する必要がある場合は、シリアル コンソールとのやり取りをご覧ください。
シリアルポート出力には、Google Cloud コンソール、gcloud CLI、REST からアクセスできます。ただし、アクセスできるのは VM インスタンスが実行されている間のみです。ログは、ポートごとに最新の 1 MB の出力に制限されます。
シリアルポート出力のロギングを有効にすると、Cloud Logging は毎月 50 ギビバイト(GiB)のロギングを無償で提供し、ログを 30 日間保持します。
始める前に
- Cloud Logging でシリアルポート出力をロギングする場合は、Cloud Logging に習熟します。
-
まだ設定していない場合は、認証を設定します。認証とは、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
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
Google Cloud コンソールで [VM インスタンス] ページに移動します。
シリアルポート出力を表示する VM インスタンスを選択します。
[ログ] で、[シリアルポート 1]、[2]、[3]、[4] をクリックします。システムレベルのエンティティは通常、シリアル コンソールとも呼ばれる最初のシリアルポート(ポート 1)を使用します。
INSTANCE_NAME
: インスタンスの名前。PORT
: 出力を表示する対象のポート番号(1
、2
、3
、4
のいずれか)。システムレベルのエンティティは通常、シリアル コンソールとも呼ばれる最初のシリアルポート(ポート 1)を使用します。デフォルトでは、最初のシリアルポートの出力が返されます。START
: 取得する最初のバイトのバイト インデックス(0 ベース)。前のリクエストの出力が長いために 1 回の試行で返されなかった場合に、その出力の取得を続行するには、このフラグを使用します。ZONE
: インスタンスのゾーン。- Cloud Logging のシリアルポート ロギングを有効にします。
[VM インスタンス] ページに移動します。
起動エージェントのログを表示する VM インスタンスを選択します。
[ログ] で [Cloud Logging] をクリックして、Cloud Logging のログを表示します。
[すべてのログ] プルダウン メニューを展開し、表示するシリアルポート出力を選択します。システムレベルのエンティティは通常、シリアル コンソールとも呼ばれる最初のシリアルポート(ポート 1)を使用します。ポートがプルダウン メニューに表示されない場合、使用可能な出力はありません。
必要であれば、[すべて] プルダウン メニューを展開して、表示したい重大度以下のログを非表示にします。たとえば、情報レベルを選択すると、デバッグレベルのログは表示されません。デバッグレベルのエントリは通常、起動時の BIOS で使用されます。
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
詳細については、Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。
シリアルポート出力のロギングを有効または無効にする
インスタンスがシリアルポートの出力を Cloud Logging に送信するかどうかを制御するには、プロジェクトまたはインスタンス レベルでメタデータを設定します。また、組織ポリシーを設定すると、組織内のすべてのユーザーでこの機能を無効にできます。
プロジェクトとインスタンス メタデータの設定
デフォルトでは、Cloud Logging へのシリアルポート出力のロギングは無効になっています。Cloud Logging へのシリアルポート出力のロギングが組織で制約されていない場合は、
serial-port-logging-enable
メタデータ エントリをtrue
またはfalse
に設定して、プロジェクトと個別の VM インスタンスでこの機能を有効または無効にできます。プロジェクト全体のメタデータ エントリを設定している場合は、プロジェクト内のすべての VM インスタンスがその設定を暗黙的に継承します。インスタンス メタデータ エントリを設定すると、プロジェクトの設定に関係なく、対象の VM でのみメタデータ エントリが有効になります。
メタデータ エントリを設定するには、Google Cloud コンソール、gcloud CLI、Compute Engine API のいずれかを使用します。詳細については、カスタム メタデータの設定をご覧ください。
たとえば、次の gcloud CLI コマンドを使用すると、プロジェクトの Cloud Logging へのシリアルポート出力のロギングが有効になります。
gcloud compute project-info add-metadata \ --metadata serial-port-logging-enable=true
同様に、次の gcloud CLI コマンドを使用すると、特定のインスタンスで Cloud Logging へのシリアルポート出力のロギングが有効になります。
gcloud compute instances add-metadata INSTANCE_NAME \ --metadata serial-port-logging-enable=true
Cloud Logging へのシリアルポート出力のロギングを無効にするには、
serial-port-logging-enable
をfalse
に設定します。gcloud compute instances add-metadata INSTANCE_NAME \ --metadata serial-port-logging-enable=false
除外フィルタ
Cloud Logging で除外フィルタを作成して、ログ エクスプローラから特定のシリアルポートのエントリを削除できます。たとえば、プロジェクト全体のメタデータ エントリが
serial-port-logging-enable=true
に設定されている場合は、高度なフィルタを使用して、特定の VM インスタンスでシリアルポート出力のロギングを無効にできます。logName = "projects/PROJECT_ID/logs/serialconsole.googleapis.com%2Fserial_port_1_output" resource.type = "gce_instance" resource.labels.instance_id != "INSTANCE_1_ID" resource.labels.instance_id != "INSTANCE_2_ID"
組織ポリシーの設定
組織全体で Cloud Logging へのシリアルポート出力のロギングを無効にするには組織ポリシーを設定します。これにより、Google Cloud リソースの特定の構成が制限されます。具体的には、ブール型制約
constraints/compute.disableSerialPortLogging
を設定します。詳細については、組織のポリシーの作成と管理をご覧ください。constraints/compute.disableSerialPortLogging
をtrue
に設定してシリアルポート ロギングを無効にする処理が遡って適用されることはありません。メタデータ エントリで Cloud Logging へのシリアルポート ロギングが有効になっている既存の VM インスタンスでは、それらのインスタンスのメタデータをリセットしない限り、引き続き Cloud Logging にログが記録されます。この組織の制約を
true
に設定すると、組織内のどのインスタンスでも、Cloud Logging へのシリアルポート出力のロギングを有効にするようにインスタンスまたはプロジェクトのメタデータを設定できなくなります。シリアルポート出力の表示
コンソール
gcloud
gcloud compute instances get-serial-port-output
コマンドを使用します。gcloud compute instances get-serial-port-output INSTANCE_NAME \ --port PORT \ --start START \ --zone ZONE
以下を置き換えます。
REST
API で、
instances.getSerialPortOutput
メソッドに対するget
リクエストを作成します。GET https://compute.googleapis.com/compute/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/serialPort
Cloud Logging
詳細(フィルタリングに関する情報など)については、ログ エクスプローラの使用をご覧ください。
非 UTF8 文字の処理
シリアルポート出力は、オープンソースの Abseil C ++ ライブラリの
CHexEscape()
メソッドを使用してエスケープされます。このため非 UTF8 文字は 16 進文字列としてエンコードされます。対応するCUnescape()
メソッドを使用すると、シリアルポートに送信された出力をエンコードされていない状態で取得できます。一般的なシリアルポート エラー
シリアルポート出力で発生する可能性がある一般的なエラーの例を以下に示します。
IPv6 の構成でエラーが発生しました
IPv6 が構成されていない場合、OS ジャーナルログで次のエラーが発生することがあります。
ERROR addresses.go:301 Error configuring IPv6: Internet Systems Consortium DHCP Client 4.2.5
このエラーは無視してください。このエラーは VM に影響を与えません。
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2024-11-21 UTC。
-