データ収集ルールを使用して Container Insights でデータ収集とコスト最適化を構成する

この記事では、Kubernetes クラスターのデータ収集ルール (DCR) を使用して、Container Insights でデータ収集を構成する方法について説明します。 これには、コストを最適化するための事前設定構成が含まれます。 クラスターを Container Insights にオンボードすると、DCR が作成されます。 この DCR は、クラスターのデータ収集を定義するためにコンテナー化されたエージェントによって使用されます。

DCR は主に、パフォーマンスおよびインベントリ データのデータ収集の構成と、コスト最適化の構成を行うために使用されます。

DCR で実行できる具体的な構成は次のとおりです。

  • パフォーマンスおよびインベントリ データの収集と名前空間のフィルター処理を有効または無効にします。
  • パフォーマンスおよびインベントリ データの収集間隔を定義する
  • Syslog の収集を有効または無効にする
  • ログ スキーマを選択する

重要

Container Insights でのデータ収集を完全な構成では、各メソッドで異なる設定セットを構成できるため、クラスターの DCR と ConfigMap の両方を編集する必要がある場合があります。

設定の一覧と、ConfigMap を使用してデータ収集を構成するプロセスについては、「ConfigMap を使用して Container insights でデータ収集を構成する」を参照してください。

前提条件

  • AKS クラスターでは、システムまたはユーザー割り当てのマネージド ID を使用する必要があります。 クラスターでサービス プリンシパルを使用している場合は、マネージド ID にアップグレードする必要があります。

データ収集を構成する

Container Insights を有効にするときに作成される DCR には、MSCI-<cluster-region>-<cluster-name> という名前が付けられます。 これを Azure portal で表示するには、Azure portal の [監視] メニューで [データ収集ルール] オプションを選択します。 DCR を直接変更するのではなく、以下で説明するいずれかの方法を使用して、データ収集を構成する必要があります。 それぞれの方法で使用できるさまざまな設定の詳細については、「データ収集パラメータ」を参照してください。

警告

既定の Container Insights エクスペリエンスは、既存のすべてのデータ ストリームによって異なります。 1 つ以上の既定のストリームを削除すると、Container Insights エクスペリエンスが使用できなくなり、収集されたデータを分析するには、Grafana ダッシュボードやログ クエリなどの他のツールを使用する必要があります。

Azure portal を使用して、Container Insights を有効にした後に既存のクラスターでコスト最適化を有効にすることができます。また、クラスターでコスト最適化と共に Container Insights を有効にすることもできます。

  1. Azure portal でクラスターを選択します。

  2. メニューの [監視] セクションで、[分析情報] オプションを選択します。

  3. Container Insights がクラスターで既に有効になっている場合は、[監視の設定] ボタンを選択します。 それ以外の場合は、[Azure Monitor の構成] を選択します。監視を有効にする方法の詳細については、Azure Monitor を使用して Kubernetes クラスターで監視を有効にする方法に関するページを参照してください。

    AKS クラスターとモニター設定ボタンのスクリーンショット。

  4. AKS および Arc 対応 Kubernetes については、クラスターをまだマネージド ID 認証に移行していない場合、[マネージド ID を使用する] を選択します。

  5. コスト プリセット」で説明されているコスト プリセットの 1 つを選択します。

    オンボードのオプションを示すスクリーンショット。

  6. 設定をカスタマイズする場合は、[コレクション設定の編集] を選択します。 各設定の詳細については、「データ収集パラメータ」を参照してください。 [収集対象データ] については、以下の「収集対象データ」を参照してください。

    コレクション設定オプションを示すスクリーンショット。

  7. [構成] を選択して設定を保存します。

コスト プリセット

Azure portal を使用してコスト最適化を構成する場合、次のプリセット構成から選択できます。 これらのいずれかを選択するか、カスタマイズした独自の設定を指定できます。 既定では、Container Insights によって "標準" プリセットが使用されます。

コスト プリセット 収集の頻度 名前空間フィルター Syslog collection 収集されるデータ
Standard 1 m なし 無効 すべての標準コンテナー分析情報テーブル
Cost-optimized (コスト最適化) 5 m kube-system、gatekeeper-system、azure-arc を除外します 無効 すべての標準コンテナー分析情報テーブル
Syslog 1 m なし 既定で有効 すべての標準コンテナー分析情報テーブル
ログとイベント 1 m なし 無効 ContainerLog/ContainerLogV2
KubeEvents
KubePodInventory

収集されるデータ

[収集対象データ] オプションを使用すると、クラスターに対して設定されているテーブルを選択できます。 これは、CLI または ARM を使用して構成を実行する場合の streams パラメータと同等です。 [すべて (既定)] 以外のオプションを選択すると、Container Insights エクスペリエンスが使用できなくなり、収集されたデータを分析するには、Grafana や他の方法を使用する必要があります。

収集データのオプションを示すスクリーンショット。

グループ化 テーブル Notes
すべて (既定値) すべての標準コンテナー分析情報テーブル 既定の Container Insights の視覚化を有効にするために必要
パフォーマンス Perf、InsightsMetrics
ログとイベント ContainerLog または ContainerLogV2、KubeEvents、KubePodInventory マネージド Prometheus メトリックを有効にしている場合に推奨
ワークロード、デプロイ、および HPA InsightsMetrics、KubePodInventory、KubeEvents、ContainerInventory、ContainerNodeInventory、KubeNodeInventory、KubeServices
永続的ボリューム InsightsMetrics、KubePVInventory

データ収集パラメーター

次の表では、サポートされているデータ収集設定と、異なるオンボード オプションで各設定に使用される名前について説明します。

名前 説明
収集の頻度
CLI: interval
ARM: dataCollectionInterval
エージェントでデータを収集する頻度を決定します。 有効な値は 1m から 30m (1 分間隔) です。既定値は 1m です。 この値が許容範囲外の場合、既定値は 1m です。
名前空間のフィルター処理
CLI: namespaceFilteringMode
ARM: namespaceFilteringModeForDataCollection
Include: namespaces フィールドの値からのみデータが収集されます。
Exclude: namespaces フィールドの値を除くすべての名前空間からデータが収集されます。
Off: namespace の選択を無視して、すべての名前空間でデータが収集されます。
名前空間のフィルター処理
CLI: namespaces
ARM: namespacesForDataCollection
namespaceFilteringMode に基づいてインベントリとパフォーマンス データを収集する Kubernetes 名前空間のコンマ区切り配列。
たとえば、Include 設定を指定した namespaces = ["kube-system", "default"] では、これら 2 つの名前空間のみが収集されます。 Exclude 設定の場合、エージェントは、kube-systemdefault を除くその他すべての名前空間からデータを収集します。 Off 設定を使用すると、エージェントでは、kube-systemdefault を含むすべての名前空間からデータを収集します。 無効および認識されない名前空間は無視されます。
ContainerLogV2 を有効にする
CLI: enableContainerLogV2
ARM: enableContainerLogV2
ContainerLogV2 スキーマを有効にするブール型フラグ。 true に設定すると、stdout/stderr ログが ContainerLogV2 テーブルに取り込まれます。 それ以外の場合は、ConfigMap で特に指定されていない限り、コンテナー ログが ContainerLog テーブルに取り込まれます。 個々のストリームを指定する場合は、ContainerLog または ContainerLogV2 に対応するテーブルを含める必要があります。
収集対象データ
CLI: streams
ARM: streams
コンテナー分析情報テーブル ストリームの配列。 上記のサポートされているテーブル マッピングへのストリームを参照してください。

適用可能なテーブルとメトリック

収集頻度名前空間のフィルター処理の設定は、必ずしもすべての Container Insights データに適用されるとは限りません。 次の各表は、Container Insights で使用される Log Analytics ワークスペース内のテーブルおよび収集されるメトリックと、それぞれに適用される設定の一覧を示しています。

Note

この機能を使用して、ContainerLog と ContainerLogV2 を除くすべてのコンテナー分析テーブルの設定を構成します。 これらのテーブルの設定を構成するには、エージェント データ収集設定に関するページで説明されている ConfigMap を更新します。

テーブル名 間隔 名前空間 解説
ContainerInventory はい はい
ContainerNodeInventory はい いいえ Kubernetes ノードは名前空間スコープのリソースではないため、名前空間のデータ収集設定は適用されません
KubeNodeInventory はい いいえ Kubernetes ノードは名前空間スコープのリソースではないため、名前空間のデータ収集設定は適用されません
KubePodInventory はい はい
KubePVInventory はい はい
KubeServices はい はい
KubeEvents いいえ はい 間隔のデータ収集設定は、Kubernetes イベントには適用されません
Perf はい はい Kubernetes ノードは名前空間スコープを持つオブジェクトではないため、名前空間のデータ収集設定は Kubernetes ノード関連のメトリックには適用されません。
InsightsMetrics はい はい データ収集設定は、名前空間 container.azm.ms/kubestate、container.azm.ms/pv、container.azm.ms/gpu を収集するメトリックにのみ適用されます
メトリック名前空間 間隔 名前空間 解説
Insights.container/nodes はい いいえ ノードは名前空間スコープのリソースではありません
Insights.container/pods はい はい
Insights.container/containers はい はい
Insights.container/persistentvolumes はい はい

ストリーム値

CLI または ARM を使用して、収集するテーブルを指定する場合、Log Analytics ワークスペース内の特定のテーブルに対応するストリーム名を指定します。 次の表は、各テーブルのストリーム名の一覧を示しています。

Note

データ収集ルールの構造についてよく理解している場合は、この表のストリーム名は DCR の dataFlows セクションに指定されていることがお分かりになるでしょう。

ストリーム コンテナー分析情報テーブル
Microsoft-ContainerInventory ContainerInventory
Microsoft-ContainerLog ContainerLog
Microsoft-ContainerLogV2 ContainerLogV2
Microsoft-ContainerNodeInventory ContainerNodeInventory
Microsoft-InsightsMetrics InsightsMetrics
Microsoft-KubeEvents KubeEvents
Microsoft-KubeMonAgentEvents KubeMonAgentEvents
Microsoft-KubeNodeInventory KubeNodeInventory
Microsoft-KubePodInventory KubePodInventory
Microsoft-KubePVInventory KubePVInventory
Microsoft-KubeServices KubeServices
Microsoft-Perf Perf

視覚化とアラートに対する影響

現在、他のカスタム アラートまたはグラフに上記のテーブルを使用している場合、データ収集設定を変更すると、それらのエクスペリエンスが低下するおそれがあります。 名前空間を除外したり、データ収集の頻度を減らしたりする場合は、このデータを使用して既存のアラート、ダッシュボード、ブックを確認します。

これらのテーブルを参照するアラートをスキャンするには、次の Azure Resource Graph クエリを実行します。

resources
| where type in~ ('microsoft.insights/scheduledqueryrules') and ['kind'] !in~ ('LogToMetric')
| extend severity = strcat("Sev", properties["severity"])
| extend enabled = tobool(properties["enabled"])
| where enabled in~ ('true')
| where tolower(properties["targetResourceTypes"]) matches regex 'microsoft.operationalinsights/workspaces($|/.*)?' or tolower(properties["targetResourceType"]) matches regex 'microsoft.operationalinsights/workspaces($|/.*)?' or tolower(properties["scopes"]) matches regex 'providers/microsoft.operationalinsights/workspaces($|/.*)?'
| where properties contains "Perf" or properties  contains "InsightsMetrics" or properties  contains "ContainerInventory" or properties  contains "ContainerNodeInventory" or properties  contains "KubeNodeInventory" or properties  contains"KubePodInventory" or properties  contains "KubePVInventory" or properties  contains "KubeServices" or properties  contains "KubeEvents" 
| project id,name,type,properties,enabled,severity,subscriptionId
| order by tolower(name) asc

次のステップ