データ収集ルールを使用して 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 を有効にすることもできます。
Azure portal でクラスターを選択します。
メニューの [監視] セクションで、[分析情報] オプションを選択します。
Container Insights がクラスターで既に有効になっている場合は、[監視の設定] ボタンを選択します。 それ以外の場合は、[Azure Monitor の構成] を選択します。監視を有効にする方法の詳細については、Azure Monitor を使用して Kubernetes クラスターで監視を有効にする方法に関するページを参照してください。
AKS および Arc 対応 Kubernetes については、クラスターをまだマネージド ID 認証に移行していない場合、[マネージド ID を使用する] を選択します。
「コスト プリセット」で説明されているコスト プリセットの 1 つを選択します。
設定をカスタマイズする場合は、[コレクション設定の編集] を選択します。 各設定の詳細については、「データ収集パラメータ」を参照してください。 [収集対象データ] については、以下の「収集対象データ」を参照してください。
[構成] を選択して設定を保存します。
コスト プリセット
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-system と default を除くその他すべての名前空間からデータを収集します。 Off 設定を使用すると、エージェントでは、kube-system と default を含むすべての名前空間からデータを収集します。 無効および認識されない名前空間は無視されます。 |
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
次のステップ
- DCR ではなく ConfigMap を使用してデータ収集を構成するには、「ConfigMap を使用して Container Insights でデータ収集を構成する」を参照してください。