Container Insights でのデータ変換
この記事では、Container Insights でデータ変換を実装する方法について説明します。 Azure Monitor の変換を使用すると、Log Analytics ワークスペースに取り込まれる前にデータを変更またはフィルター処理できます。 クラスターから収集されたデータをフィルター処理してコストを抑えたり、受信データを処理してデータ クエリを支援したりするなどのアクションを実行できます。
データ収集ルール (DCR)
データ収集ルール (DCR) に変換を実装し、Azure Monitor でのデータ収集を構成するために使用します。 クラスターの Container Insights をオンボードすると、そのための DCR が、"MSCI-<クラスター リージョン>-<\クラスター名>" という名前で作成されます。 この DCR は、Azure portal で [監視] メニューの [データ収集ルール] から表示できます。 変換を作成するには、この DCR を変更するか、変換を含むカスタム DCR を使用してクラスターをオンボードする必要があります。
次の表では、DCR を編集するさまざまな方法について説明しますが、この記事の残りの部分では、Container Insights データを変換するために実行する必要がある編集の詳細を示します。
メソッド | 説明 |
---|---|
新しいクラスター | 既存の ARM テンプレートを使用して、AKS クラスターを Container Insights にオンボードします。 そのテンプレートの DCR の dataFlows セクションを変更して、次のいずれかのサンプルのように変換を含めます。 |
既存の DCR | クラスターが Container Insights にオンボードされたら、その DCR を編集し、「データ収集ルールの編集」のプロセスを使用して変換を含めます。 |
データ ソース
DCR の dataSources セクションには、DCR が処理するさまざまな種類の受信データを定義します。 Container Insights の場合、これには ContainerInsights
拡張機能が含まれます。これに、プレフィックス Microsoft- で始まる 1 つ以上の定義済み streams
が含まれます。
DCR の Container Insights ストリームの一覧は、クラスターに対して選択したコスト プリセットによって異なります。 すべてのテーブルを収集する場合、DCR は Microsoft-ContainerInsights-Group-Default
ストリームを使用します。これは、Stream 値に一覧表示されているすべてのストリームを含むグループ ストリームです。 変換を使用する場合は、これを個々のストリームに変更する必要があります。 その他のコスト プリセット設定では、既に個々のストリームが使用されるようになっています。
次のスニペットは Microsoft-ContainerInsights-Group-Default
ストリームを示しています。 個々のストリームのサンプルについては、「サンプル DCR」を参照してください。
"dataSources": {
"extensions": [
{
"name": "ContainerInsightsExtension",
"extensionName": "ContainerInsights",
"extensionSettings": { },
"streams": [
"Microsoft-ContainerInsights-Group-Default"
]
}
]
}
データ フロー
DCR の dataFlows セクションは、ストリームと宛先を照合します。 変換を必要としないストリームは、ワークスペースの宛先のみを含む 1 つのエントリにまとめることができます。 変換を必要とするストリーム用に個別のエントリを作成します。これには、ワークスペースの定義と transformKql
プロパティを含めます。
次のスニペットは、変換を含む 1 つのストリームの dataFlows
セクションを示しています。 1 つの DCR 内の複数のデータ フローについては、「サンプル DCR」を参照してください。
"dataFlows": [
{
"streams": [
"Microsoft-ContainerLogV2"
],
"destinations": [
"ciworkspace"
],
"transformKql": "source | where PodNamespace == 'kube-system'"
}
]
サンプル DCR
次のサンプルは、変換を使用する Container Insights の DCR を示しています。 これらのサンプルを出発点として使用し、必要に応じて特定の要件を満たすようにカスタマイズします。
特定の名前空間のフィルター処理
このサンプルでは、ログ クエリ source | where PodNamespace == 'kube-system'
を使用して、1 つの名前空間のデータを ContainerLogsV2
で収集します。 このクエリの kube-system
を別の名前空間に置き換えるか、where
句を別のフィルターに置き換えて、収集する特定のデータと一致させることができます。 他のストリームは別のデータ フローにグループ化され、変換は適用されません。
{
"properties": {
"dataSources": {
"syslog": [],
"extensions": [
{
"name": "ContainerInsightsExtension",
"extensionName": "ContainerInsights",
"extensionSettings": { },
"streams": [
"Microsoft-ContainerLog",
"Microsoft-ContainerLogV2",
"Microsoft-KubeEvents",
"Microsoft-KubePodInventory",
"Microsoft-KubeNodeInventory",
"Microsoft-KubePVInventory",
"Microsoft-KubeServices",
"Microsoft-KubeMonAgentEvents",
"Microsoft-InsightsMetrics",
"Microsoft-ContainerInventory",
"Microsoft-ContainerNodeInventory",
"Microsoft-Perf"
]
}
]
},
"destinations": {
"logAnalytics": [
{
"workspaceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/my-resource-group/providers/microsoft.operationalinsights/workspaces/my-workspace",
"name": "ciworkspace"
}
]
},
"dataFlows": [
{
"streams": [
"Microsoft-ContainerLog",
"Microsoft-KubeEvents",
"Microsoft-KubePodInventory",
"Microsoft-KubeNodeInventory",
"Microsoft-KubePVInventory",
"Microsoft-KubeServices",
"Microsoft-KubeMonAgentEvents",
"Microsoft-InsightsMetrics",
"Microsoft-ContainerNodeInventory",
"Microsoft-Perf"
],
"destinations": [
"ciworkspace"
]
},
{
"streams": [
"Microsoft-ContainerLogV2"
],
"destinations": [
"ciworkspace"
],
"transformKql": "source | where PodNamespace == 'kube-system'"
}
]
}
}
テーブルに列を追加する
このサンプルでは、ログ クエリ source | extend new_CF = ContainerName
を使用して、ContainerLogV2
テーブルに追加されたカスタム列にデータを送信します。 この変換では、「カスタム列を追加または削除する」で説明されているプロセスを使用して、カスタム列をテーブルに追加する必要があります。 他のストリームは別のデータ フローにグループ化され、変換は適用されません。
{
"properties": {
"dataSources": {
"syslog": [],
"extensions": [
{
"extensionName": "ContainerInsights",
"extensionSettings": { },
"name": "ContainerInsightsExtension",
"streams": [
"Microsoft-ContainerLog",
"Microsoft-ContainerLogV2",
"Microsoft-KubeEvents",
"Microsoft-KubePodInventory",
"Microsoft-KubeNodeInventory",
"Microsoft-KubePVInventory",
"Microsoft-KubeServices",
"Microsoft-KubeMonAgentEvents",
"Microsoft-InsightsMetrics",
"Microsoft-ContainerInventory",
"Microsoft-ContainerNodeInventory",
"Microsoft-Perf"
]
}
]
},
"destinations": {
"logAnalytics": [
{
"workspaceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/my-resource-group/providers/microsoft.operationalinsights/workspaces/my-workspace",
"name": "ciworkspace"
}
]
},
"dataFlows": [
{
"streams": [
"Microsoft-ContainerLog",
"Microsoft-KubeEvents",
"Microsoft-KubePodInventory",
"Microsoft-KubeNodeInventory",
"Microsoft-KubePVInventory",
"Microsoft-KubeServices",
"Microsoft-KubeMonAgentEvents",
"Microsoft-InsightsMetrics",
"Microsoft-ContainerNodeInventory",
"Microsoft-Perf"
],
"destinations": [
"ciworkspace"
]
},
{
"streams": [
"Microsoft-ContainerLogV2"
],
"destinations": [
"ciworkspace"
],
"transformKql": "source\n | extend new_CF = ContainerName"
}
]
}
}