Aracılığıyla paylaş


Azure İzleyici'de veri toplama dönüşümleri

Azure İzleyici'deki dönüştürmelerle, gelen verileri Log Analytics çalışma alanına gönderilmeden önce filtreleyebilir veya değiştirebilirsiniz. Bu makalede dönüşümlerin ve bunların nasıl uygulandığının temel bir açıklaması sağlanır. Dönüştürme oluşturmak için diğer içeriğe bağlantılar sağlar.

Dönüştürmeler, veri kaynağı verileri teslim ettikten sonra ve hedefe gönderilmeden önce veri alımı işlem hattında Azure İzleyici'de gerçekleştirilir. Veri kaynağı, verileri göndermeden önce kendi filtrelemesini gerçekleştirebilir, ancak ardından hedefe gönderilmeden önce daha fazla işleme için dönüştürmeye güvenir.

Dönüştürmeler bir veri toplama kuralında (DCR) tanımlanır ve gelen verilerdeki her girişe ayrı ayrı uygulanan bir Kusto Sorgu Dili (KQL) deyimi kullanır. Gelen verilerin biçimini anlamalı ve hedef tarafından beklenen yapıda çıkış oluşturmalıdır.

Aşağıdaki diyagramda, gelen veriler için dönüştürme işlemi gösterilmektedir ve kullanılabilecek örnek bir sorgu gösterilmektedir. Dönüştürme sorguları oluşturma hakkında ayrıntılı bilgi için bkz . Azure İzleyici'de dönüştürmenin yapısı.

Gelen veriler için alma zamanı dönüşümlerini gösteren diyagram.

Dönüştürmeler neden kullanılır?

Aşağıdaki tabloda, dönüşümleri kullanarak ulaşabileceğiniz farklı hedefler açıklanmaktadır.

Kategori Ayrıntılar
Hassas verileri kaldırma Gizlilik veya gizlilik nedeniyle depolanmasını istemediğiniz bilgileri gönderen bir veri kaynağınız olabilir.

Hassas bilgileri filtreleyin. Hassas bilgiler içeren satırların veya belirli sütunların tamamını filtreleyin.

Hassas bilgileri karartma. IP adresi veya telefon numarasındaki basamaklar gibi bilgileri ortak bir karakterle değiştirin.

Alternatif bir tabloya gönder. Hassas kayıtları farklı rol tabanlı erişim denetimi yapılandırmasına sahip alternatif bir tabloya gönderin.
Daha fazla veya hesaplanan bilgiyle verileri zenginleştirme İş bağlamı sağlayan veya daha sonra verileri sorgulamayı basitleştiren verilere bilgi eklemek için dönüştürme kullanın.

Daha fazla bilgi içeren bir sütun ekleyin. Örneğin, başka bir sütundaki IP adresinin iç mi yoksa dış mı olduğunu tanımlayan bir sütun ekleyebilirsiniz.

İşletmeye özgü bilgiler ekleyin. Örneğin, diğer sütunlardaki konum bilgilerine göre şirket bölümünü gösteren bir sütun ekleyebilirsiniz.
Veri maliyetlerini azaltma Log Analytics çalışma alanına gönderilen tüm veriler için ücretlendirildiğiniz için maliyetlerinizi azaltmak için gerekmeyen verileri filtrelemek istersiniz.

Satırların tamamını kaldırın. Örneğin, belirli bir kaynaktan kaynak günlüklerini toplamak için bir tanılama ayarınız olabilir, ancak oluşturduğu tüm günlük girdilerini gerektirmez. Belirli bir ölçütle eşleşen kayıtları filtreleyen bir dönüştürme oluşturun.

Her satırdan bir sütun kaldırın. Örneğin, verilerinizde yedekli veya en düşük değere sahip verileri içeren sütunlar olabilir. Gerekli olmayan sütunları filtreleyen bir dönüştürme oluşturun.

Önemli verileri bir sütundan ayrıştırma. Belirli bir sütuna gömülü değerli verileri içeren bir tablonuz olabilir. Değerli verileri yeni bir sütuna ayrıştırmak ve özgün verileri kaldırmak için bir dönüştürme kullanın.

Belirli satırları temel günlüklere gönderin. Verilerinizde temel sorgu özellikleri gerektiren satırları daha düşük bir alım maliyeti için temel günlük tablolarına gönderin.
Hedef için verileri biçimlendirme Hedef tablonun yapısıyla eşleşmeyen bir biçimde veri gönderen bir veri kaynağınız olabilir. Verileri gerekli şemaya yeniden biçimlendirmek için dönüştürme kullanın.

Desteklenen tablolar

Dönüştürmelerle kullanılabilecek tabloların listesi için bkz . Azure İzleyici Günlüklerinde dönüştürmeleri destekleyen tablolar. Ayrıca, dönüştürmeleri destekleyip desteklemediği de dahil olmak üzere her tablonun özniteliklerini listeleyen Azure İzleyici veri başvurularını da kullanabilirsiniz. Bu tablolara ek olarak, tüm özel tablolar (_CL soneki) de desteklenir.

Dönüştürme oluşturma

Veri toplama yöntemine bağlı olarak dönüşüm oluşturmak için birden çok yöntem vardır. Aşağıdaki tabloda dönüşüm oluşturmaya yönelik farklı yöntemlere yönelik yönergeler listelemektedir.

Veri toplama Başvuru
Günlük alımı API'si REST API kullanarak Azure İzleyici Günlüklerine veri gönderme (Azure portalı)
REST API kullanarak Azure İzleyici Günlüklerine veri gönderme (Azure Resource Manager şablonları)
Azure İzleyici aracısı ile sanal makine Azure İzleyici Günlüğüne dönüştürme ekleme
Kapsayıcı içgörüleri ile Kubernetes kümesi Kapsayıcı içgörülerinde veri dönüştürmeleri
Azure Event Hubs Öğretici: Olayları Azure Event Hubs'dan Azure İzleyici Günlüklerine alma (Genel Önizleme)

Birden çok hedef

Dönüştürmelerle, tek bir DCR kullanarak Log Analytics çalışma alanında birden çok hedefe veri gönderebilirsiniz. Her hedef için bir KQL sorgusu sağlarsınız ve her sorgunun sonuçları ilgili konumlarına gönderilir. Farklı tablolara farklı veri kümeleri gönderebilir veya aynı tabloya farklı veri kümeleri göndermek için birden çok sorgu kullanabilirsiniz.

Örneğin, Günlük Alımı API'sini kullanarak olay verilerini Azure İzleyici'ye gönderebilirsiniz. Olayların çoğu düzenli olarak sorgulanabilecek bir analiz tablosu, denetim olayları ise maliyetinizi azaltmak için temel günlükler için yapılandırılmış özel bir tabloya gönderilmelidir.

Birden çok hedef kullanmak için şu anda el ile yeni bir DCR oluşturmanız veya mevcut bir DCR'yi düzenlemeniz gerekir. Birden çok hedef kullanan DCR örnekleri için Örnekler bölümüne bakın.

Önemli

Şu anda DCR'deki tabloların aynı Log Analytics çalışma alanında olması gerekir. Tek bir veri kaynağından birden çok çalışma alanına göndermek için birden çok DCR kullanın ve uygulamanızı her birine veri gönderecek şekilde yapılandırın.

Verileri birden çok tabloya gönderen dönüştürmeyi gösteren diyagram.

Dönüştürmeleri izleme

Dönüştürmelerin sistem durumunu ve performansını izleyen günlükler ve ölçümler hakkında ayrıntılı bilgi için bkz . Azure İzleyici'de DCR veri toplamayı izleme ve sorunlarını giderme. Bu, KQL'de oluşan hataları ve bunların çalışma süresini izlemeye yönelik ölçümleri tanımlamayı içerir.

Dönüşümler için maliyet

Dönüştürmelerin kendileri doğrudan maliyetler doğurmasa da, aşağıdaki senaryolar ek ücrete neden olabilir:

  • Dönüşüm, hesaplanmış sütun ekleme gibi gelen verilerin boyutunu artırırsa, ek veriler için standart veri alma oranı üzerinden ücretlendirilirsiniz.
  • Bir dönüştürme, alınan verileri %50'den fazla azaltırsa, %50'nin üzerindeki filtrelenmiş veri miktarı için ücretlendirilirsiniz.

Dönüştürmelerden kaynaklanan veri işleme ücretini hesaplamak için aşağıdaki formülü kullanın:
[Dönüşümlere göre filtrelenen GB] - ([İşlem hattı tarafından alınan GB verileri] / 2). Aşağıdaki tabloda örnekler gösterilmektedir.

İşlem hattı tarafından alınan veriler Dönüştürme tarafından bırakılan veriler Log Analytics çalışma alanı tarafından alınan veriler Veri işleme ücreti Alım ücreti
20 GB 12 GB 8 GB 2 GB 1 8 GB
20 GB 8 GB 12 GB 0 GB 12 GB

1 Bu ücret, Log Analytics çalışma alanı tarafından alınan veriler için ücreti dışlar.

Bu ücretten kaçınmak için, dönüşümleri uygulamadan önce alınan verileri alternatif yöntemler kullanarak filtrelemeniz gerekir. Bunu yaparak, dönüşümler tarafından işlenen veri miktarını azaltabilir ve bu nedenle ek maliyetleri en aza indirebilirsiniz.

Azure İzleyici'de günlük verilerinin alımı ve saklanması için geçerli ücretler için Bkz . Azure İzleyici fiyatlandırması .

Önemli

Log Analytics çalışma alanı için Azure Sentinel etkinleştirildiyse, dönüştürmenin ne kadar veriyi filtrelediğine bakılmaksızın filtreleme alımı ücreti alınmaz.

Örnekler

Aşağıdaki Resource Manager şablonları farklı desenlere sahip örnek DCR'leri gösterir. Bu şablonları, kendi senaryolarınız için dönüştürmelerle DCR'ler oluşturmak için bir başlangıç noktası olarak kullanabilirsiniz.

Tek hedef

Aşağıdaki örnek, tabloya Syslog veri gönderen Azure İzleyici Aracısı için DCR'dir. Bu örnekte dönüştürme, iletideki kayıtların error verilerini filtreler.

{ 
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources" : [
        {
            "type": "Microsoft.Insights/dataCollectionRules", 
            "name": "singleDestinationDCR", 
            "apiVersion": "2021-09-01-preview", 
            "location": "eastus", 
            "properties": { 
              "dataSources": { 
                "syslog": [ 
                  { 
                    "name": "sysLogsDataSource", 
                    "streams": [ 
                      "Microsoft-Syslog" 
                    ], 
                    "facilityNames": [ 
                      "auth",
                      "authpriv",
                      "cron",
                      "daemon",
                      "mark",
                      "kern",
                      "mail",
                      "news",
                      "syslog",
                      "user",
                      "uucp"
                    ], 
                    "logLevels": [ 
                      "Debug", 
                      "Critical", 
                      "Emergency" 
                    ] 
                  } 
                ] 
              }, 
              "destinations": { 
                "logAnalytics": [ 
                  { 
                    "workspaceResourceId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/my-resource-group/providers/Microsoft.OperationalInsights/workspaces/my-workspace", 
                    "name": "centralWorkspace" 
                  } 
                ] 
              }, 
              "dataFlows": [ 
                { 
                  "streams": [ 
                    "Microsoft-Syslog" 
                  ], 
                  "transformKql": "source | where message has 'error'", 
                  "destinations": [ 
                    "centralWorkspace" 
                  ] 
                } 
              ] 
            }
        }
    ]
} 

Birden çok Azure tablosu

Aşağıdaki örnek, Hem hem de tablolarına veri gönderen Günlük Alımı API'sinden Syslog SecurityEvent alınan veriler için bir DCR'dir. Bu DCR, her için ayrı ve farklı transformKql OutputStream olan her için ayrı dataFlow bir ad gerektirir. Bu örnekte, tüm gelen veriler tabloya Syslog gönderilirken, kötü amaçlı veriler de tabloya SecurityEvent gönderilir. Her iki tablodaki kötü amaçlı verileri çoğaltmak istemiyorsanız, bu kayıtları kaldırmak için ilk sorguya bir where deyim ekleyebilirsiniz.

{ 
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources" : [
        { 
            "type": "Microsoft.Insights/dataCollectionRules", 
            "name": "multiDestinationDCR", 
            "location": "eastus", 
            "apiVersion": "2021-09-01-preview", 
            "properties": { 
                "dataCollectionEndpointId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/my-resource-group/providers//Microsoft.Insights/dataCollectionEndpoints/my-dce",
                "streamDeclarations": { 
                    "Custom-MyTableRawData": { 
                        "columns": [ 
                            { 
                                "name": "Time", 
                                "type": "datetime" 
                            }, 
                            { 
                                "name": "Computer", 
                                "type": "string" 
                            }, 
                            { 
                                "name": "AdditionalContext", 
                                "type": "string" 
                            } 
                        ] 
                    } 
                }, 
                "destinations": { 
                    "logAnalytics": [ 
                        { 
                            "workspaceResourceId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/my-resource-group/providers/Microsoft.OperationalInsights/workspaces/my-workspace", 
                            "name": "clv2ws1" 
                        }, 
                    ] 
                }, 
                "dataFlows": [ 
                    { 
                        "streams": [ 
                            "Custom-MyTableRawData" 
                        ], 
                        "destinations": [ 
                            "clv2ws1" 
                        ], 
                        "transformKql": "source | project TimeGenerated = Time, Computer, Message = AdditionalContext", 
                        "outputStream": "Microsoft-Syslog" 
                    }, 
                    { 
                        "streams": [ 
                            "Custom-MyTableRawData" 
                        ], 
                        "destinations": [ 
                            "clv2ws1" 
                        ], 
                        "transformKql": "source | where (AdditionalContext has 'malicious traffic!' | project TimeGenerated = Time, Computer, Subject = AdditionalContext", 
                        "outputStream": "Microsoft-SecurityEvent" 
                    } 
                ] 
            } 
        }
    ]
}

Azure ve özel tabloların birleşimi

Aşağıdaki örnek, Günlük Alımı API'sindeki veriler için hem tabloya hem de Syslog verileri farklı biçimdeki özel bir tabloya gönderen bir DCR'dir. Bu DCR, her için ayrı ve farklı transformKql OutputStream olan her için ayrı dataFlow bir ad gerektirir. Özel tablolar kullanılırken, hedefin şemasının (özel tablonuz) gönderdiğiniz kayıtların şemasıyla eşleşen özel sütunları (özel sütunları ekleme veya silme) içerdiğinden emin olmak önemlidir. Örneğin, kaydınızda SyslogMessage adlı bir alan varsa ancak hedef özel tabloda yalnızca TimeGenerated ve RawData varsa, özel tabloda yalnızca TimeGenerated alanı doldurulmuş bir olay alırsınız ve RawData alanı boş olur. Hedef tablonun şeması SyslogMessage adlı bir dize alanı içermediğinden SyslogMessage alanı bırakılır.

{ 
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources" : [
        { 
            "type": "Microsoft.Insights/dataCollectionRules", 
            "name": "multiDestinationDCR", 
            "location": "eastus", 
            "apiVersion": "2021-09-01-preview", 
            "properties": { 
                "dataCollectionEndpointId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/my-resource-group/providers//Microsoft.Insights/dataCollectionEndpoints/my-dce",
                "streamDeclarations": { 
                    "Custom-MyTableRawData": { 
                        "columns": [ 
                            { 
                                "name": "Time", 
                                "type": "datetime" 
                            }, 
                            { 
                                "name": "Computer", 
                                "type": "string" 
                            }, 
                            { 
                                "name": "AdditionalContext", 
                                "type": "string" 
                            } 
                        ] 
                    } 
                }, 
                "destinations": { 
                    "logAnalytics": [ 
                        { 
                            "workspaceResourceId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/my-resource-group/providers/Microsoft.OperationalInsights/workspaces/my-workspace", 
                            "name": "clv2ws1" 
                        }, 
                    ] 
                }, 
                "dataFlows": [ 
                    { 
                        "streams": [ 
                            "Custom-MyTableRawData" 
                        ], 
                        "destinations": [ 
                            "clv2ws1" 
                        ], 
                        "transformKql": "source | project TimeGenerated = Time, Computer, SyslogMessage = AdditionalContext", 
                        "outputStream": "Microsoft-Syslog" 
                    }, 
                    { 
                        "streams": [ 
                            "Custom-MyTableRawData" 
                        ], 
                        "destinations": [ 
                            "clv2ws1" 
                        ], 
                        "transformKql": "source | extend jsonContext = parse_json(AdditionalContext) | project TimeGenerated = Time, Computer, AdditionalContext = jsonContext, ExtendedColumn=tostring(jsonContext.CounterName)", 
                        "outputStream": "Custom-MyTable_CL" 
                    } 
                ] 
            } 
        }
    ]
}

Sonraki adımlar

  • Veri toplama kuralları (DCR) hakkında daha fazla bilgi edinin.
  • DCR kullanılarak toplanmayan verilere uygulanan bir çalışma alanı dönüştürme DCR'leri oluşturun.