Container-Optimized OS での Cloud Logging の使用

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

Container-Optimized OS には、一部のシステムログとコンテナログを Cloud Logging にエクスポートするロギング エージェントが含まれています。x86 ベースの Container-Optimized OS イメージの場合、そのエージェントは Google Cloud のオペレーション スイートのコンテナ化された以前の Logging エージェントです。ARM ベースの Container-Optimized OS イメージの場合、そのエージェントは fluent-bit というネイティブ OS パッケージです。このドキュメントでは、Container-Optimized OS で Logging エージェントを使用する方法と、ログにアクセスする方法について説明します。

Logging エージェントを有効にする

Logging エージェントはデフォルトで無効になっています。この機能を有効にするには、新しいインスタンスを作成するか、既存のインスタンスを更新します。

Logging エージェントを有効にしたインスタンスを作成する

コンソール

ロギング エージェントを有効にした状態でContainer-Optimized OS 上で Compute Engine インスタンスを実行するには、以下を実行します。

  1. Google Cloud Console で Compute Engine インスタンス作成ページを開きます。

    新しい Compute Engine インスタンスの作成

  2. [名前] でインスタンスの名前を指定します。

  3. [ブートディスク] セクションで、Container-Optimized OS イメージを選択します。

  4. [管理、セキュリティ、ディスク、ネットワーク、単一テナンシー] をクリックして、追加のオプションを展開します。

  5. [管理] タブで、[メタデータ] セクションまでスクロールします。新しいメタデータ エントリを追加して、[キー] を google-logging-enabled、[] を true に指定します。

  6. 必要に応じて、ユースケースに応じたその他のオプションを指定します。詳細については、インスタンスの作成と構成をご覧ください。

  7. [作成] をクリックし、インスタンスを作成して起動します。

gcloud

ロギング エージェントを有効にして Container-Optimized OS で Compute Engine インスタンスを実行するには、gcloud compute instances create コマンドを使用して、メタデータに google-logging-enabled=true を含めます。次に例を示します。

gcloud compute instances create instance-name \
    --image-family cos-stable \
    --image-project cos-cloud \
    --zone compute-zone \
    --metadata google-logging-enabled=true

以下を置き換えます。

gcloud コマンドの詳細については、gcloud compute instances create のリファレンス ドキュメントをご覧ください。 Container-Optimized OS インスタンスの作成の詳細については、インスタンスの作成と構成をご覧ください。

既存のインスタンスを更新して、Logging エージェントを有効または無効にする

コンソール

  1. [VM インスタンス] ページに移動します。

    [VM インスタンス] ページに移動

  2. 更新する Container-Optimized OS インスタンスの名前をクリックします。

  3. [VM インスタンスの詳細] の上部のバーから [編集] をクリックします。

  4. [カスタム メタデータ] セクションで新しいメタデータ エントリを追加し、キーgoogle-logging-enabled に設定します。有効にするにはtrue に、無効にするには false に設定します。

  5. [保存] をクリックします。

gcloud

既存のインスタンスで Logging エージェントを有効または無効にするには、gcloud compute instances add-metadata コマンドを使用します。

gcloud compute instances add-metadata instance-name \
    --zone compute-zone \
    --metadata google-logging-enabled=enabled-value

以下を置き換えます。

  • enabled-value: 有効にするには true に、無効にするには false に設定します。
  • instance-name: VM インスタンスの名前。
  • compute-zone:インスタンスのコンピューティング ゾーン

プロジェクト メタデータで Logging エージェントを有効にする

マイルストーン 97 以降、Logging はプロジェクト メタデータで有効にできます。

  gcloud compute project-info add-metadata \
    --metadata google-logging-enabled=true

アクセスログ

コンソール

  1. [VM インスタンス] ページに移動します。

    [VM インスタンス] ページに移動

  2. ログのアクセス元である Container-Optimized OS インスタンスの名前をクリックします。

  3. [ログ] セクションで、Cloud Logging をクリックします。

  4. これによって、指定したインスタンスのログ エクスプローラが開きます。詳細については、ログ エクスプローラの使用をご覧ください。

gcloud

ログにアクセスするには、gcloud logging read コマンドを使用します。例:

gcloud logging read \
"resource.type=gce_instance AND resource.labels.instance_id=instance-id" \
    --limit 10 \
    --format json \
    --freshness 30d

以下を置き換えます。

  • instance-id: VM インスタンスの ID。

このコマンドは、instance-id を使用して VM インスタンスからログを読み取ろうとします。この際、過去 30 日間の JSON 形式の 10 件のログに限定されます。

gcloud コマンドの詳細については、gcloud logging read のリファレンス ドキュメントをご覧ください。

仕組み

このロギング エージェントは、デフォルトで特定のシステム クリティカル サービスやユーザー アプリケーション コンテナから Cloud Logging バックエンドにログを送信するよう構成されています。たとえば、Docker コンテナのログ、選択した systemd サービス、監査ログ、ジャーナル ログエラーなどです。デフォルトの完全なロギング構成については、Container-Optimized OS 固有の構成ソース(x86 イメージArm イメージ)をご覧ください。

x86 イメージの場合、ロギング エージェントは、Google Cloud のオペレーション スイートのコンテナ化された以前の Logging エージェントです。ロギング エージェントを起動する Docker コマンドは、Container-Optimized OS ソースの stackdriver-logging.service で定義されています。実行されるコンテナ化されたエージェントのバージョンは、Container-Optimized OS ソースの app-admin/stackdriver ディレクトリに定義されています。

Arm イメージの場合、ロギング エージェントは fluent-bit というネイティブ OS パッケージです。エージェントは OS に組み込まれ、OS イメージとともに更新されます。

既知の制限事項

gcplogs ドライバとの互換性

milestone 89 以降、Container-Optimized OS に含まれている Logging エージェントが有効で、1 つ以上のコンテナに対して Docker gcplogs ロギング ドライバが有効になっている場合は、含まれている Logging エージェントによって過度の警告ログが出力される場合があります。これにより、ログノイズが発生したり、Cloud Logging 関連の料金が増加する場合があります。

回避手段は、gcplogs を Docker ロギング ドライバとして使用せず、Container-Optimized OS で構成されたデフォルトのドライバを使用することです。Container-Optimized OS に含まれている Logging エージェントはコンテナログを Cloud Logging にエクスポートするため、両方のソリューションを同時に使用する必要はないことに留意してください。

Logging エージェント構成の互換性

この Logging エージェントは、x86 ベースの Container-Optimized OS イメージ上の fluentd ベースのコンテナと、Arm ベースの Container-Optimized OS イメージ上の fluent-bit バイナリです。2 つのエージェントの構成に互換性はありません。OS イメージに組み込まれているデフォルトのロギング構成のみを使用している場合、これは問題になりません。ただし、カスタム ロギング構成を使用している場合は、異なるアーキテクチャ ベースのイメージにワークロードを移行する際に、中断が発生する可能性があります。

リファレンス

  • Google Cloud のオペレーション スイートの以前の Logging エージェントドキュメント。Container-Optimized OS に含まれるコンテナ化された Logging エージェントは従来の Logging エージェントのサブセットであるため、このドキュメントでは Container-Optimized OS の範囲外にエージェントに関する一般的なコンテキストを説明しています。
  • Google Cloud のオペレーション スイートのドキュメントGoogle Cloud のオペレーション スイートのドキュメントのホームページ。コンテキストとして便利です。