Cloud Logging

このトピックでは、GKE on AWS を Cloud Logging と統合する方法と、ログにアクセスする方法について説明します。

概要

GKE on AWS では、ワークロードと、コントロール プレーンおよびノードプール ノードで実行されているシステム コンポーネントに対して Cloud Logging がサポートされています。

GKE on AWS には、Fluentbit ベースのロギング エージェントが含まれています。コントロール プレーン ノードでは、ロギング エージェントはシステム コンポーネントとして実行されます。ノードプール ノードでは、Daemonset として実行されます。Cloud Logging のドキュメントで説明されているように、ロギング エージェントが収集したデータは、他の指標やログデータと同様に管理し、削除できます。

収集されるデータの種類

GKE on AWS では、次の情報がログに記録されます。

  • 各コントロール プレーン レプリカのシステム コンポーネントのログ。
  • 各ノードプール ノードのシステム サービスのログ。
  • ワークロードのログ(必要な場合)。

ワークロード ロギングを有効にする

ワークロード ロギングを有効にするには、バージョン 1.22 以降の新しい Kubernetes クラスタを作成する必要があります。

デフォルトでは、GKE on AWS でクラスタを作成すると、システム ロギングが有効になります。ワークロード ロギングを有効にするには、--logging フラグを使用してクラスタを作成する必要があります。システム コンポーネント、ワークロード、またはその両方のロギングを有効にできます。

たとえば、新しいクラスタでシステム ロギングとワークロード ロギングの両方を有効にするには、クラスタを作成する際に、--logging フラグを gcloud コマンドに指定します。

gcloud container aws clusters create CLUSTER_NAME
...
--logging=SYSTEM,WORKLOAD

既存のクラスタを更新する場合は、次のようにします。

gcloud container aws clusters update CLUSTER_NAME
...
--logging=SYSTEM,WORKLOAD

ログにアクセスする

Cloud Logging で GKE on AWS のログにアクセスする場合、いくつかの方法があります。

  • ログ エクスプローラ - ログ エクスプローラからログを直接表示できます。ロギング フィルタを使用して、クラスタ、ノード、Namespace、Pod、コンテナのログなどの Kubernetes リソースを選択します。

  • Google Cloud CLI - gcloud logging read コマンドを使用して、適切なクラスタ、ノード、Pod、コンテナのログを選択します。

ログについて

Cloud Logging のログはログエントリを集めたもので、各ログエントリは特定の種類のロギング リソースに適用されます。

リソースタイプ

GKE on AWS に固有のリソースタイプは次のとおりです。

リソースタイプ 表示名
k8s_control_plane_component コントロール プレーン コンポーネントのログ
k8s_node ノードプールのログ
k8s_container ワークロード コンテナのログ

GKE on AWS がクラスタのログを書き込むときに、ログエントリにリソースタイプが追加されます。ログが表示される場所を把握しておくと、必要なときにログを簡単に見つけることができます。

コントロール プレーン ログ

コントロール プレーン ログでは、k8s_control_plane_component リソースタイプが使用されます。これには、kube-apiserver などのコントロール プレーン レプリカで実行されているシステム コンポーネント ログが含まれます。

ノードログ

ノードログは、k8s_node リソースタイプに分類されます。これには、ワーカーノードで実行されている重要なシステム コンポーネント ログ(kubeletcontainerd など)が含まれます。

システムアプリ ログ

システムアプリ ログは、k8s_container リソースタイプに分類されます。これには、GKE on AWS によってワーカーノードにインストールされた Pod のログが含まれます。具体的には、次の Namespace で実行されるコンテナが含まれます。

  • kube-system
  • gke-connect
  • gke-system
  • gmp-system
  • asm-user-auth
  • cnrm-system
  • config-management-system
  • gatekeeper-system
  • gmp-public
  • istio-system
  • knative-serving

Cloud Logging ユーザー インターフェースでログを検索する

Cloud Logging ユーザー インターフェースでは、ログ エクスプローラを使用してログを表示できます。

ログ エクスプローラ

クエリビルダーを使用すると、クエリ パラメータを手動で追加することでクエリを作成できます。たとえば、システム ワークロードのログを調べる場合は、k8s_container リソースタイプを選択または検索してから、ロケーションとクラスタ名を選択します。次に、コンテナまたは Pod 名をフィルタして、検索を絞り込むことができます。

ログ エクスプローラでは、ログフィールド エクスプローラを使用して検索クエリを作成できます。ここには、指定したログフィールドでログエントリ数が大きなものから順に表示されます。ログ フィールド エクスプローラを使用すると、リソースの Kubernetes 値を簡単に選択できるため、GKE on AWS のログでは特に便利です。たとえば、特定のクラスタ、Namespace、Pod 名、コンテナ名のログを選択できます。

詳細については、ログ エクスプローラの使用をご覧ください。

サンプルクエリ

このセクションでは、ログ エクスプローラで作成できるサンプルクエリを示します。

例 1: AWS クラスタ CLUSTER_NAME のコントロール プレーン ノードの kube-apiserver のログを取得する。

resource.type="k8s_control_plane_component"
resource.labels.cluster_name="awsClusters/CLUSTER_NAME"
resource.labels.component_name="apiserver"

例 2: AWS クラスタ CLUSTER_NAME のワーカーノードの kubelet のログを取得する。

resource.type="k8s_node"
resource.labels.cluster_name="awsClusters/CLUSTER_NAME"
log_name="projects/PROJECT_ID/logs/kubelet"

例 3: AWS クラスタ CLUSTER_NAMEcilium-agent コンテナのログを取得する。

resource.type="k8s_container"
resource.labels.cluster_name="awsClusters/CLUSTER_NAME"
resource.labels.container_name="cilium-agent"

次のステップ