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 のログにアクセスする方法がいくつかあります。

  • ログ エクスプローラログ エクスプローラからログを直接表示できます。ロギング フィルタを使用して、クラスタ、ノード、名前空間、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 のログが含まれます。具体的には、次の名前空間で実行されるコンテナが含まれます。

  • 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 のログでは特に便利です。たとえば、特定のクラスタ、名前空間、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"

次のステップ