Cloud のロギング
このトピックでは、Azure 版 Anthos クラスタを Cloud Logging と統合する方法と、ログにアクセスする方法について説明します。
始める前に
Google Cloud CLI を構成し、Google Cloud プロジェクトで必要な API を有効にします。
Cloud Logging / Cloud Monitoring を承認し、Google Cloud のオペレーション スイートの権限を設定します。
概要
Azure 版 Anthos クラスタには、コントロール プレーンとノードプール ノードの両方で実行されているシステム コンポーネント用の Cloud Logging のサポートが組み込まれています。
収集されるデータの種類
Azure 版 Anthos クラスタは、次の情報をログに記録します。
- 各コントロール プレーン レプリカのシステム コンポーネントのログ。
- 各ノードプール ノードのシステム サービスのログ。
- ワークロードのログ(必要な場合)。
Cloud Logging のドキュメントで説明されているように、エージェントが収集したデータは、他の指標やログデータと同様に管理、削除できます。
ロギング コンポーネント
Azure 版 Anthos クラスタには、Fluentbit ベースのロギング エージェントが含まれています。コントロール プレーン ノードでは、ロギング エージェントはシステム コンポーネントとして実行されます。ノードプール ノードでは、Daemonset として実行されます。
ワークロード ロギングを有効にする
ワークロード ロギングを有効にするには、「gcloud alpha azure clusters create
」で新しい Kubernetes 1.22 以降のクラスタを作成する必要があります。
デフォルトでは、Anthos clusters on Azure にクラスタを作成すると、システム ロギングが有効になります。ワークロード ロギングを有効にするには、--logging
フラグを使用して gcloud alpha
でクラスタを作成する必要があります。システム コンポーネント、ワークロード、またはその両方のロギングを有効にできます。
たとえば、新しいクラスタでシステムとワークロードのロギングの両方を有効にするには、次のフラグをクラスタの作成コマンドに追加します。
gcloud alpha container azure clusters create CLUSTER_NAME ... --logging=SYSTEM,WORKLOAD
クラスタを作成する方法の詳細については、クラスタの作成をご覧ください。
ログにアクセスする
Cloud Logging の Azure 版 Anthos クラスタのログにアクセスする方法はいくつかあります。
ログ エクスプローラ – ログ エクスプローラからログを直接表示できます。ロギング フィルタを使用して、クラスタ、ノード、名前空間、Pod、コンテナのログなどの Kubernetes リソースを選択します。
Google Cloud CLI:
gcloud logging read
コマンドを使用して、適切なクラスタ、ノード、Pod、コンテナのログを選択します。
ログについて
Cloud Logging のログはログエントリを集めたもので、各ログエントリは特定の種類のロギング リソースに適用されます。
リソースタイプ
Azure 版 Anthos クラスタに固有のリソースタイプは次のとおりです。
リソースの種類 | 表示名 |
---|---|
k8s_control_plane_component |
コントロール プレーン コンポーネントのログ |
k8s_node |
ノードプール ログ |
k8s_container |
ワークロード コンテナ ログ |
Azure 版 Anthos クラスタがクラスタのログを書き込むと、各ログエントリにリソースタイプが追加されます。ログが表示される場所を把握することによって、必要なときにログを簡単に見つけることができます。
コントロール プレーン ログ
コントロール プレーン ログでは、k8s_control_plane_component
リソースタイプが使用されます。これには、kube-apiserver
などのコントロール プレーン レプリカで実行されているシステム コンポーネント ログが含まれます。
ノードログ
ノードログは、k8s_node
リソースタイプに分類されます。これには、ワーカーノードで実行されている重要なシステム コンポーネント ログ(kubelet
や containerd
など)が含まれます。
システムアプリ ログ
システムアプリ ログは、k8s_container
リソースタイプに分類されます。これには、Anthos clusters on Azure がワーカーノードにインストールした Pod のログが含まれます。具体的には、次の名前空間で実行されるコンテナが含まれます。
kube-system
gke-connect
gke-system
Cloud Logging ユーザー インターフェースでログを検索する
Cloud Logging ユーザー インターフェースでは、ログ エクスプローラを使用してログを表示できます。
ログ エクスプローラ
クエリビルダーを使用すると、クエリ パラメータを手動で追加してクエリを作成できます。たとえば、システム ワークロードのログを調べる場合は、k8s_container
リソースタイプを選択または検索してから、ロケーションとクラスタ名を選択できます。次に、コンテナまたは Pod 名をフィルタして、検索を絞り込むことができます。
ログ エクスプローラでは、ログフィールド エクスプローラを使用して検索クエリを作成できます。ここには、指定したログフィールドでログエントリ数が大きなものから順に表示されます。ログ フィールド エクスプローラを使用すると、リソースの Kubernetes 値を簡単に選択できるため、Azure ログの Anthos クラスタでは特に便利です。たとえば、特定のクラスタ、名前空間、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"