Aracılığıyla paylaş


Kapsayıcı içgörülerinde veri dönüştürmeleri

Bu makalede, Kapsayıcı içgörülerinde veri dönüşümlerinin nasıl uygulandığı açıklanmaktadır. Azure İzleyici'deki dönüştürmeler , Log Analytics çalışma alanınıza veri almadan önce verileri değiştirmenize veya filtrelemenize olanak sağlar. Bunlar, maliyet tasarrufu sağlamak için kümenizden toplanan verileri filtreleme veya veri sorgularınızda yardımcı olmak için gelen verileri işleme gibi eylemleri gerçekleştirmenize olanak tanır.

Önemli

Kapsayıcı içgörülerinde günlük koleksiyonunu yapılandırma ve Kapsayıcı içgörülerinde günlük koleksiyonunu filtreleme makalelerinde, Kapsayıcı içgörüleri için veri toplamayı yapılandırma ve filtrelemeye yönelik standart yapılandırma ayarları açıklanmaktadır. Dönüştürmeleri kullanmadan önce bu özellikleri kullanarak gerekli yapılandırmaları gerçekleştirmeniz gerekir. Standart yapılandırma ayarlarıyla gerçekleştiremezseniz filtreleme veya diğer veri yapılandırmasını gerçekleştirmek için dönüştürme kullanın.

Veri toplama kuralı

Dönüştürmeler, Azure İzleyici'de veri toplamayı yapılandırmak için kullanılan veri toplama kurallarında (DCR) uygulanır. DCR kullanarak veri toplamayı yapılandırma, bir kümede Kapsayıcı içgörülerini etkinleştirdiğinizde otomatik olarak oluşturulan DCR'yi açıklar. Dönüştürme oluşturmak için aşağıdaki eylemlerden birini gerçekleştirmeniz gerekir:

  • Yeni küme. Aks kümesini Kapsayıcı içgörülerine eklemek için mevcut ARM şablonunu kullanın. Aşağıdaki örneklerden birine benzer bir dönüştürme de dahil olmak üzere gerekli yapılandırmanızla bu şablondaki DCR'yi değiştirin.
  • Mevcut DCR. Bir küme Kapsayıcı içgörülerine eklendikten ve veri toplama yapılandırıldıktan sonra, Veri Toplama Kurallarını Düzenleme'deki yöntemlerden herhangi birini kullanarak DCR'sini bir dönüştürme içerecek şekilde düzenleyin.

Not

Şu anda DCR'leri düzenlemek için çok az kullanıcı arabirimi vardır ve bu da dönüşüm eklemek için gereklidir. Çoğu durumda DCR'yi el ile düzenlemeniz gerekir. Bu makalede uygulanacak DCR yapısı açıklanmaktadır. Bu yapıyı uygulama yönergeleri için bkz . Azure İzleyici'de veri toplama kuralları (DCR) oluşturma ve düzenleme.

Veri kaynakları

DCR'nin Veri kaynakları bölümü, DCR'nin işleyecekleri farklı gelen veri türlerini tanımlar. Kapsayıcı içgörüleri için bu, Microsoft- ön ekiyle başlayan bir veya daha fazla önceden tanımlanmış streams uzantıyı içeren Kapsayıcı içgörüleri uzantısıdır.

DCR'deki Kapsayıcı içgörüleri akışları listesi, küme için seçtiğiniz Maliyet ön ayarına bağlıdır. Tüm tabloları toplarsanız DCR, Akış değerlerinde listelenen tüm akışları içeren bir grup akışı olan akışı kullanırMicrosoft-ContainerInsights-Group-Default. Dönüştürme kullanacaksanız bunu tek tek akışlarla değiştirmeniz gerekir. Önceden ayarlanmış diğer tüm maliyet ayarları zaten tek tek akışları kullanır.

Aşağıdaki örnekte akış gösterilmektedir Microsoft-ContainerInsights-Group-Default . Tek tek akışları kullanan örnekler için Örnek DCR'lere bakın.

"dataSources": {
    "extensions": [
        {
            "streams": [
                "Microsoft-ContainerInsights-Group-Default"
            ],
            "name": "ContainerInsightsExtension",
            "extensionName": "ContainerInsights",
            "extensionSettings": { 
                "dataCollectionSettings": {
                    "interval": "1m",
                    "namespaceFilteringMode": "Off",
                    "namespaces": null,
                    "enableContainerLogV2": true
                }
            }
        }
    ]
}

Veri akışları

DCR'nin Veri akışları bölümü, akışları DCR'nin destinations bölümünde tanımlanan hedeflerle eşleştirir. Veriler varsayılan tabloya gönderiliyorsa, bilinen akışlar için tablo adlarının belirtilmesi gerekmez. Dönüştürme gerektirmeyen akışlar, yalnızca çalışma alanı hedefini içeren tek bir girişte birlikte gruplandırılabilir. Her bir tablo varsayılan tablosuna gönderilir.

Dönüştürme gerektiren akışlar için ayrı bir giriş oluşturun. Bu, çalışma alanı hedefini transformKql ve özelliğini içermelidir. Verileri alternatif bir tabloya gönderiyorsanız, hedef tablonun adını belirten özelliğini eklemeniz outputStream gerekir.

Aşağıdaki örnekte dönüşüm içeren tek bir akışın dataFlows bölümü gösterilmektedir. Tek bir DCR'de birden çok veri akışı için Örnek DCR'lere bakın.

"dataFlows": [
    {
        "streams": [
            "Microsoft-ContainerLogV2"
        ],
        "destinations": [
            "ciworkspace"
        ],
        "transformKql": "source | where PodNamespace == 'kube-system'"
    }
]

Örnek DCR'ler

Veri filtreleme

İlk örnek, sütunundaki ContainerLogV2 LogLevel verileri filtreler. Kümedeki sorunları uyarmak ve tanımlamak için kullanabileceğiniz girdiler olduğundan yalnızca veya içeren kayıtlar LogLevel error critical toplanır. Gibi info diğer düzeyleri toplamak ve depolamak ve debug önemli bir değer olmadan maliyet oluşturmak.

Aşağıdaki günlük sorgusunu kullanarak bu kayıtları alabilirsiniz.

ContainerLogV2 | where LogLevel in ('error', 'critical')

Bu mantık aşağıdaki diyagramda gösterilmiştir.

Dönüştürme kullanarak kapsayıcı günlüklerini filtrelemeyi gösteren diyagram.

Dönüştürmede, gelen verileri temsil etmek için tablo adı source kullanılır. Dönüştürmede kullanılacak değiştirilmiş sorgu aşağıdadır.

source | where LogLevel in ('error', 'critical')

Aşağıdaki örnekte Container insights DCR'ye eklenen bu dönüşüm gösterilmektedir. Dönüşümün uygulanması gereken tek gelen akış olduğundan için Microsoft-ContainerLogV2 ayrı bir veri akışı kullanıldığını unutmayın. Diğer akışlar için ayrı bir veri akışı kullanılır.

{
    "properties": {
        "location": "eastus2",
        "kind": "Linux",
        "dataSources": {
            "syslog": [],
            "extensions": [
                {
                    "streams": [
                        "Microsoft-ContainerLogV2",
                        "Microsoft-KubeEvents",
                        "Microsoft-KubePodInventory"
                    ],
                    "extensionName": "ContainerInsights",
                    "extensionSettings": {
                        "dataCollectionSettings": {
                            "interval": "1m",
                            "namespaceFilteringMode": "Off",
                            "enableContainerLogV2": true
                        }
                    },
                    "name": "ContainerInsightsExtension"
                }
            ]
        },
        "destinations": {
            "logAnalytics": [
                {
                    "workspaceResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/my-resource-group/providers/microsoft.operationalinsights/workspaces/my-workspace",
                    "workspaceId": "00000000-0000-0000-0000-000000000000",
                    "name": "ciworkspace"
                }
            ]
        },
        "dataFlows": [
            {
                "streams": [
                    "Microsoft-KubeEvents",
                    "Microsoft-KubePodInventory"
                ],
                "destinations": [
                    "ciworkspace"
                ],
            },
            {
                "streams": [
                    "Microsoft-ContainerLogV2"
                ],
                "destinations": [
                    "ciworkspace"
                ],
                "transformKql": "source | where LogLevel in ('error', 'critical')"
            }
        ],
    },
}

Farklı tablolara veri gönderme

Yukarıdaki örnekte yalnızca veya içeren error critical kayıtlar LogLevel toplanır. Bu kayıtları hiç toplamamak yerine alternatif bir strateji, bunları temel günlükler için yapılandırılmış alternatif bir tabloya kaydetmektir.

Bu strateji için iki dönüştürme gerekir. İlk dönüştürme, veya critical içeren LogLevel error kayıtları varsayılan tabloya gönderir. İkinci dönüştürme, diğer kayıtları adlı ContainerLogV2_CLözel bir tabloya gönderir. Her birinin sorguları, önceki örnekte açıklandığı gibi gelen veriler için kullanılarak source aşağıda gösterilmiştir.

# Return error and critical logs
source | where LogLevel in ('error', 'critical')

# Return logs that aren't error or critical
source | where LogLevel !in ('error', 'critical')

Bu mantık aşağıdaki diyagramda gösterilmiştir.

Analiz tablosuna ve diğer verileri temel günlüklere gönderen bir dönüştürme kullanarak kapsayıcı günlüklerini filtrelemeyi gösteren diyagram.

Önemli

Bu örnekte DCR'yi yüklemeden önce ile aynı şemaya ContainerLogV2sahip yeni bir tablo oluşturmanız gerekir. Bunu adlandırıp ContainerLogV2_CL temel günlükler için yapılandırın.

Aşağıdaki örnekte Container insights DCR'ye eklenen bu dönüşüm gösterilmektedir. Bu DCR'de için her dönüştürme için bir tane olan iki veri akışı Microsoft-ContainerLogV2 vardır. İlki varsayılan tabloya gönderir, bir tablo adı belirtmeniz gerekmez. İkincisi, özelliğin outputStream hedef tabloyu belirtmesini gerektirir.

{
    "properties": {
        "location": "eastus2",
        "kind": "Linux",
        "dataSources": {
            "syslog": [],
            "extensions": [
                {
                    "streams": [
                        "Microsoft-ContainerLogV2",
                        "Microsoft-KubeEvents",
                        "Microsoft-KubePodInventory"
                    ],
                    "extensionName": "ContainerInsights",
                    "extensionSettings": {
                        "dataCollectionSettings": {
                            "interval": "1m",
                            "namespaceFilteringMode": "Off",
                            "enableContainerLogV2": true
                        }
                    },
                    "name": "ContainerInsightsExtension"
                }
            ]
        },
        "destinations": {
            "logAnalytics": [
                {
                    "workspaceResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/my-resource-group/providers/microsoft.operationalinsights/workspaces/my-workspace",
                    "workspaceId": "00000000-0000-0000-0000-000000000000",
                    "name": "ciworkspace"
                }
            ]
        },
        "dataFlows": [
            {
                "streams": [
                    "Microsoft-KubeEvents",
                    "Microsoft-KubePodInventory"
                ],
                "destinations": [
                    "ciworkspace"
                ],
            },
            {
                "streams": [
                    "Microsoft-ContainerLogV2"
                ],
                "destinations": [
                    "ciworkspace"
                ],
                "transformKql": "source | where LogLevel in ('error', 'critical')"
            },
            {
                "streams": [
                    "Microsoft-ContainerLogV2"
                ],
                "destinations": [
                    "ciworkspace"
                ],
                "transformKql": "source | where LogLevel !in ('error','critical')",
                "outputStream": "Custom-ContainerLogV2_CL"
            }
        ],
    },
}

Sonraki adımlar