Cloud Logging
このトピックでは、GKE on Azure を Cloud Logging と統合する方法と、ログにアクセスする方法について説明します。
概要
GKE on Azure では、ワークロードと、コントロール プレーンおよびノードプール ノードで実行されているシステム コンポーネントに対して Cloud Logging がサポートされています。
GKE on Azure には、Fluentbit ベースのロギング エージェントが含まれています。コントロール プレーン ノードでは、ロギング エージェントはシステム コンポーネントとして実行されます。ノードプール ノードでは、Daemonset として実行されます。Cloud Logging のドキュメントで説明されているように、ロギング エージェントが収集したデータは、他の指標やログデータと同様に管理し、削除できます。
収集されるデータの種類
GKE on Azure では、次の情報がログに記録されます。
- 各コントロール プレーン レプリカのシステム コンポーネントのログ。
- 各ノードプール ノードのシステム サービスのログ。
- ワークロードのログ(必要な場合)。
ワークロード ロギングを有効にする
ワークロード ロギングを有効にするには、バージョン 1.22 以降の新しい Kubernetes クラスタを作成する必要があります。
デフォルトでは、GKE on Azure でクラスタを作成すると、システム ロギングが有効になります。ワークロード ロギングを有効にするには、--logging
フラグを使用してクラスタを作成する必要があります。システム コンポーネント、ワークロード、またはその両方のロギングを有効にできます。
たとえば、新しいクラスタでシステム ロギングとワークロード ロギングの両方を有効にするには、クラスタを作成する際に、--logging
フラグを gcloud
コマンドに指定します。
gcloud container azure clusters create CLUSTER_NAME ... --logging=SYSTEM,WORKLOAD
既存のクラスタを更新する場合は、次のようにします。
gcloud container azure clusters update CLUSTER_NAME ... --logging=SYSTEM,WORKLOAD
ログにアクセスする
Cloud Logging の GKE on Azure のログにアクセスする方法は複数あります。
ログ エクスプローラ - ログ エクスプローラからログを直接表示できます。ロギング フィルタを使用して、クラスタ、ノード、Namespace、Pod、コンテナのログなどの Kubernetes リソースを選択します。
Google Cloud CLI -
gcloud logging read
コマンドを使用して、適切なクラスタ、ノード、Pod、コンテナのログを選択します。
ログについて
Cloud Logging のログはログエントリを集めたもので、各ログエントリは特定の種類のロギング リソースに適用されます。
リソースタイプ
GKE on Azure に固有のリソースタイプは次のとおりです。
リソースタイプ | 表示名 |
---|---|
k8s_control_plane_component |
コントロール プレーン コンポーネントのログ |
k8s_node |
ノードプールのログ |
k8s_container |
ワークロード コンテナのログ |
GKE on Azure がクラスタのログを書き込むときに、ログエントリにリソースタイプが追加されます。ログが表示される場所を把握しておくと、必要なときにログを簡単に見つけることができます。
コントロール プレーン ログ
コントロール プレーン ログでは、k8s_control_plane_component
リソースタイプが使用されます。これには、kube-apiserver
などのコントロール プレーン レプリカで実行されているシステム コンポーネント ログが含まれます。
ノードログ
ノードログは、k8s_node
リソースタイプに分類されます。これには、ワーカーノードで実行されている重要なシステム コンポーネント ログ(kubelet
や containerd
など)が含まれます。
システムアプリ ログ
システムアプリ ログは、k8s_container
リソースタイプに分類されます。これには、GKE on Azure によってワーカーノードにインストールされた 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 Azure のログでは特に便利です。たとえば、特定のクラスタ、Namespace、Pod 名、コンテナ名のログを選択できます。
詳細については、ログ エクスプローラの使用をご覧ください。
サンプルクエリ
このセクションでは、ログ エクスプローラで作成できるサンプルクエリを示します。
例 1: Azure クラスタ CLUSTER_NAME のコントロール プレーン ノードの kube-apiserver
のログを取得する。
resource.type="k8s_control_plane_component"
resource.labels.cluster_name="azureClusters/CLUSTER_NAME"
resource.labels.component_name="apiserver"
例 2: Azure クラスタ CLUSTER_NAME のワーカーノードの kubelet
のログを取得する。
resource.type="k8s_node"
resource.labels.cluster_name="azureClusters/CLUSTER_NAME"
log_name="projects/PROJECT_ID/logs/kubelet"
例 3: Azure クラスタ CLUSTER_NAME の cilium-agent
コンテナのログを取得する。
resource.type="k8s_container"
resource.labels.cluster_name="azureClusters/CLUSTER_NAME"
resource.labels.container_name="cilium-agent"