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


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

システム ロギングを有効にすると、専用の 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 に設定します。

次のステップ