ログのスループットを調整する


このドキュメントでは、デフォルトのログ スループットとスループットを増やす方法について説明します。

システム ロギングを有効にすると、専用の Logging エージェントが自動的にデプロイされ、管理されます。これは、クラスタ内のすべての GKE ノード上で実行され、ログを収集します。コンテナ、Pod、クラスタに関する有用なメタデータを追加し、fluentbit ベースのエージェントを使用してログを Cloud Logging に送信します。

専用 Logging エージェントは、システムログとワークロード ログについてノードあたり毎秒 100 KiB 以上のログ スループットを提供します。ノードの使用率がこの数値を下回る場合は、ログの読み込みの種類(例: テキスト ログエントリまたは構造化ログエントリ、ノードのコンテナ数が非常に少ない、または多い)によっては、専用のロギング エージェントによって毎秒 500 KiB 以上のスループットを実現できる場合があります。さらに、GKE コントロール プレーンのバージョン 1.23.13-gke.1000 以降を使用しているクラスタでは、未使用の CPU コアが 2 つ以上あるノードに対して、Logging エージェントで 1 秒あたり 10 MiB のスループットが可能になります。ただし、スループットが向上すると、一部のログが失われる可能性がある点に留意してください。

ログ スループットが高いノードを特定する

デフォルトでは、GKE クラスタはシステム指標を収集します。システム指標 kubernetes.io/node/logs/input_bytes は、ノードで 1 秒あたりに生成されるログのバイト数を示します。この指標は、Logging エージェントのどのバリアントがクラスタまたはノードプールへのデプロイに適しているかを判断するのに役立ちます。

クラスタ内の各ノードのロギング スループットの履歴を確認するには、次の操作を行います。

  1. Google Cloud コンソールで、[Metrics Explorer] ページに移動します。

    Metrics Explorer に移動

    検索バーを使用してこのページを検索する場合は、小見出しが [Monitoring] である結果を選択します。

  2. [指標を選択] フィールドで、kubernetes.io/node/logs/input_bytes を選択します。

  3. [Group by] フィールドで、[project_id]、[location]、[cluster_name]、[node_name] を選択します。

  4. [OK] をクリックします。

  5. 指標のリストの上にある列ヘッダーの [] をクリックして、指標のリストを降順で並べ替えます。

システム コンポーネントまたはノード上で実行されているワークロードがどの程度のロギング量であるかを把握するために、[type] 指標ラベルでグループ化することもできます。

高スループットのロギングを有効にする

いずれかの GKE ノードで 1 秒あたり 100 KiB を超えるログ スループットが必要であり、GKE Standard クラスタでコントロール プレーン バージョン 1.23.13-gke.1000 以降を使用している場合は、ロギング スループットを最大化するように設計された Logging エージェントの代替構成をデプロイするように GKE を構成できます。この最大スループットの Logging バリアントにより、ノードごとに 1 秒あたり 10 MiB という高スループットを実現できます。この高スループットの Logging エージェントは、クラスタ内のすべてのノードまたはノードプール内のすべてのノードにデプロイできます。

この高スループット構成では、追加の CPU とメモリが消費されます。

gcloud CLI

新しいクラスタ内のすべてのノードで高スループットのロギングを有効にするには:

gcloud container clusters create CLUSTER_NAME \
    --location=COMPUTE_LOCATION \
    --logging-variant=MAX_THROUGHPUT \
    --machine-type=MACHINE_TYPE

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

  • CLUSTER_NAME: 新しいクラスタの名前。
  • COMPUTE_LOCATION: 新しいクラスタの Compute Engine のロケーション
  • MACHINE_TYPE: Logging エージェントに十分な CPU を備えたマシンタイプ(e2-standard-8 など)。

このクラスタ内に新しく作成されたすべてのノードプール(デフォルト ノードプールを含む)は、高スループットの Logging エージェントをデプロイします。

既存のクラスタに高スループット ロギングがすでに設定されているかどうかを確認するには、gcloud container cluster describe コマンドを使用します。

gcloud container clusters describe CLUSTER_NAME \
   --location=COMPUTE_LOCATION  \
   --format="value(nodePoolDefaults[].loggingConfig.variantConfig.variant)"

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

既存のクラスタに高スループット ロギングを構成するには、gcloud container clusters update コマンドを使用します。

gcloud container clusters update CLUSTER_NAME \
    --location=COMPUTE_LOCATION \
    --logging-variant=MAX_THROUGHPUT

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

高スループットの Logging エージェントを使用する新しいノードプールを作成するには、gcloud container node-pools create コマンドを使用します。

gcloud container node-pools create NODEPOOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=COMPUTE_LOCATION \
    --logging-variant=MAX_THROUGHPUT

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

既存のノードプールに高スループット ロギングがすでに設定されているかどうかを確認するには、gcloud container node-pools describe コマンドを使用します。

gcloud container node-pools describe NODEPOOL_NAME \
   --cluster=CLUSTER_NAME \
   --location=COMPUTE_LOCATION  \
   --format="value(config.loggingConfig.variantConfig.variant)"

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

既存のノードプールを更新するには、gcloud container node-pools update コマンドを使用します。

gcloud container node-pools update NODEPOOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=COMPUTE_LOCATION \
    --logging-variant=MAX_THROUGHPUT

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

Terraform

次のコードブロックは、高スループット ロギングの有無にかかわらずノードプールを宣言する方法を指定します。

ノードプールを明示的に管理するには、デフォルトのノードプールがないクラスタを指定する必要があります。

resource "google_container_cluster" "with_example_logging_variants" {
  provider           = google
  name               = "CLUSTER_NAME"
  location           = "COMPUTE_LOCATION"
  initial_node_count = 1
  remove_default_node_pool = true # We want to manage our node pools separately.
}

高スループット エージェントを使用するノードプールを指定するには、node_config フィールドを使用して Logging エージェント バリアントを MAX_THROUGHPUT として指定するほかに、該当するマシンタイプを指定します。

resource "google_container_node_pool" "with_example_logging_variant" {
  provider = google
  name     = "example-node-pool-with-htl"
  cluster  = google_container_cluster.with_example_logging_variants.name
  location = "COMPUTE_LOCATION"
  node_config {
    logging_variant = "MAX_THROUGHPUT"
    # Use a machine type with enough CPU to accommodate the high-throughput agent, such as e2-standard-8.
    machine_type = "e2-standard-8"
  }
  node_count = 1
}

デフォルト エージェントを使用するノードプールを指定するには、node_config フィールドを使用して Logging エージェント バリアントを DEFAULT として指定します。

resource "google_container_node_pool" "with_default_logging_variant" {
  provider = google
  name     = "example-node-pool-with-default-logging"
  cluster  = google_container_cluster.with_example_logging_variants.name
  location = "COMPUTE_LOCATION"
  node_config {
    logging_variant = "DEFAULT"
  }
  node_count = 1
}

高スループットのロギングを無効にする

高スループットの Logging エージェントを使用しなくなった場合は、デフォルトの Logging エージェントをクラスタまたはノードプールにデプロイします。

gcloud CLI

クラスタまたはノードプールを作成または更新するときに、フラグ --logging-variant=DEFAULT を渡します。

新しいクラスタ内のすべてのノードでデフォルトの Logging エージェントを使用するには:

  gcloud container clusters create CLUSTER_NAME \
      --location=COMPUTE_LOCATION \
      --logging-variant=DEFAULT \
      --machine-type=MACHINE_TYPE

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

  • CLUSTER_NAME: 新しいクラスタの名前。
  • COMPUTE_LOCATION: 新しいクラスタの Compute Engine のロケーション
  • MACHINE_TYPE: Logging エージェントに十分な CPU を備えたマシンタイプ(e2-standard-8 など)。

既存のクラスタでデフォルトの Logging エージェントを使用するには、gcloud container clusters update コマンドを使用します。

gcloud container clusters update CLUSTER_NAME \
    --location=COMPUTE_LOCATION \
    --logging-variant=DEFAULT

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

新しいノードプールでデフォルトのロギング エージェントを使用するには、gcloud container node-pools create コマンドを使用します。

gcloud container node-pools create NODEPOOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=COMPUTE_LOCATION \
    --logging-variant=DEFAULT

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

既存のノードプールを更新するには、gcloud container node-pools update コマンドを使用します。

gcloud container node-pools update NODEPOOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=COMPUTE_LOCATION \
    --logging-variant=DEFAULT

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

Terraform

高スループットの Logging エージェントを使用するノードプールを Terraform で作成しなくなった場合は、logging_variant フィールドを DEFAULT に設定します。

次のステップ