このトピックでは、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
リソースタイプに分類されます。これには、ワーカーノードで実行されている重要なシステム コンポーネント ログ(kubelet
や containerd
など)が含まれます。
システムアプリ ログ
システムアプリ ログは、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_NAME の cilium-agent
コンテナのログを取得する。
resource.type="k8s_container"
resource.labels.cluster_name="awsClusters/CLUSTER_NAME"
resource.labels.container_name="cilium-agent"