Aracılığıyla paylaş


Azure İzleyici'de Log Analytics çalışma alanları, uygulamaları ve kaynakları arasında veri sorgulama

Birden çok çalışma alanı, uygulama ve kaynaktan veri sorgulamanın iki yolu vardır:

  • Bu makalede açıklandığı gibi workspace(), app() veya resource() ifadelerini kullanarak çalışma alanı, uygulama veya kaynak bilgilerini belirterek açıkça.
  • Örtük olarak kaynak bağlamı sorgularını kullanarak. Belirli bir kaynak, kaynak grubu veya abonelik bağlamında sorgu yaptığınızda, sorgu bu kaynaklar için veri içeren tüm çalışma alanlarından ilgili verileri alır. Kaynak bağlamı sorguları, klasik Application Insights kaynaklarından veri almaz.

Bu makalede, birden çok Log Analytics çalışma alanından, uygulamadan ve resource() kaynaktan verileri sorgulamak için , app()ve ifadelerinin nasıl kullanılacağı workspace()açıklanmaktadır.

Azure Lighthouse aracılığıyla diğer Microsoft Entra kiracılarındaki abonelikleri yönetiyorsanız, bu müşteri kiracılarında oluşturulan Log Analytics çalışma alanlarını sorgularınıza ekleyebilirsiniz.

Önemli

Çalışma alanı tabanlı bir Application Insights kaynağı kullanıyorsanız, telemetri diğer tüm günlük verileriyle birlikte log Analytics çalışma alanında depolanır. birden çok çalışma alanında bulunan uygulamalardan veri sorgulamak için ifadeyi workspace() kullanın. Aynı çalışma alanında birden çok uygulamadan veri sorgulamak için çalışma alanları arası sorguya ihtiyacınız yoktur.

Gerekli izinler

Eylem Gerekli izinler
Çalışma alanı durumunu denetleme Microsoft.OperationalInsights/workspaces/query/*/readörneğin Log Analytics Okuyucusu yerleşik rolü tarafından sağlandığı gibi sorguladığınız Log Analytics çalışma alanlarına yönelik izinler.
Sorgu kaydetme microsoft.operationalinsights/querypacks/queries/actionörneğin Log Analytics Katkıda Bulunanı yerleşik rolü tarafından sağlanan sorguyu kaydetmek istediğiniz sorgu paketine yönelik izinler.

Sınırlamalar

  • Kaynaklar arası ve hizmetler arası sorgular, tanımı , , resource()arg(), workspace()ve gibi adx()diğer çalışma alanları arası veya hizmetler arası ifadeleri içeren parametreli işlevleri ve app()işlevleri desteklemez.
  • Tek bir sorguya en fazla 100 Log Analytics çalışma alanı veya klasik Application Insights kaynağı ekleyebilirsiniz.
  • Çok sayıda kaynak arasında sorgulama, sorguyu önemli ölçüde yavaşlatabilir.
  • Günlük arama uyarılarındaki kaynaklar arası sorgular yalnızca geçerli zamanlanmışQueryRules API'sinde desteklenir. Eski Log Analytics Uyarıları API'sini kullanıyorsanız geçerli API'ye geçmeniz gerekir.
  • Başka bir çalışma alanı gibi çapraz kaynağa yapılan başvurular açık olmalıdır ve parametrelenemez.

İşlevleri kullanarak çalışma alanları, uygulamalar ve kaynaklar arasında sorgulama

Bu bölümde, işlev kullanarak ve kullanmadan işlevleri kullanarak çalışma alanlarını, uygulamaları ve kaynakları sorgulama açıklanmaktadır.

İşlev kullanmadan sorgulama

Kaynak örneklerinizden herhangi birinden birden çok kaynağı sorgulayabilirsiniz. Bu kaynaklar birleştirilmiş çalışma alanları ve uygulamalar olabilir.

Üç çalışma alanı arasında bir sorgu örneği:

union 
  Update, 
  workspace("00000000-0000-0000-0000-000000000001").Update, 
  workspace("00000000-0000-0000-0000-000000000002").Update
| where TimeGenerated >= ago(1h)
| where UpdateState == "Needed"
| summarize dcount(Computer) by Classification

Birleşim, where ve summarize işleçleri hakkında daha fazla bilgi için bkz . birleşim işleci, where işleci ve summarize işleci.

İşlev kullanarak sorgulama

Birden çok Log Analytics çalışma alanı ve Application Insights bileşeninden gelen verileri ilişkilendirmek için kaynaklar arası sorgular kullandığınızda, sorgunun bakımı karmaşık ve zor olabilir. Sorgu mantığını sorgu kaynaklarının kapsamını belirlemeden ayırmak için Azure İzleyici günlük sorgularındaki işlevleri kullanmanız gerekir. Bu yöntem sorgu yapısını basitleştirir. Aşağıdaki örnek, birden çok Application Insights bileşenini nasıl izleyebilebileceğinizi ve başarısız isteklerin sayısını uygulama adına göre nasıl görselleştirebileceğinizi gösterir.

Application Insights bileşenlerinin kapsamına başvuran aşağıdaki örneğe benzer bir sorgu oluşturun. komutu, withsource= SourceApp günlüğü gönderen uygulama adını belirten bir sütun ekler. Sorguyu diğer adıyla applicationsScopingbir işlev olarak kaydedin.

// crossResource function that scopes my Application Insights components
union withsource= SourceApp
app('00000000-0000-0000-0000-000000000000').requests, 
app('00000000-0000-0000-0000-000000000001').requests,
app('00000000-0000-0000-0000-000000000002').requests,
app('00000000-0000-0000-0000-000000000003').requests,
app('00000000-0000-0000-0000-000000000004').requests

Bu işlevi artık aşağıdaki örneğe benzer bir çapraz kaynak sorgusunda kullanabilirsiniz. İşlev diğer adı applicationsScoping , tüm tanımlı uygulamalardan requests tablosunun birleşimini döndürür. Sorgu daha sonra başarısız istekleri filtreler ve eğilimleri uygulamaya göre görselleştirir. bu parse örnekte işleç isteğe bağlıdır. Özelliğinden SourceApp uygulama adını ayıklar.

applicationsScoping 
| where timestamp > ago(12h)
| where success == 'False'
| parse SourceApp with * '(' applicationId ')' * 
| summarize count() by applicationId, bin(timestamp, 1h) 
| render timechart

Not

Çalışma alanları ve uygulamalar da dahil olmak üzere uyarı kuralı kaynaklarının erişim doğrulaması uyarı oluşturma zamanında gerçekleştirildiğinden, bu yöntem günlük araması uyarıları ile kullanılamaz. Uyarı oluşturulduktan sonra işleve yeni kaynaklar eklenmesi desteklenmez. Günlük arama uyarılarında kaynak kapsamını belirleme için bir işlev kullanmayı tercih ediyorsanız, kapsamlı kaynakları güncelleştirmek için uyarı kuralını portalda veya Azure Resource Manager şablonuyla düzenlemeniz gerekir. Alternatif olarak, günlük araması uyarı sorgusuna kaynak listesini de ekleyebilirsiniz.

Workspace() kullanarak Log Analytics çalışma alanları arasında sorgulama

İfadeyi workspace() kullanarak aynı kaynak grubundaki, başka bir kaynak grubundaki veya başka bir abonelikteki belirli bir çalışma alanından veri alabilirsiniz. Bu ifadeyi bir Application Insights sorgusuna günlük verilerini eklemek ve bir günlük sorgusundaki birden çok çalışma alanında verileri sorgulamak için kullanabilirsiniz.

Sözdizimi

workspace(Tanımlayıcı)

Bağımsız değişkenler

*Identifier*: Aşağıdaki tabloda yer alan biçimlerden birini kullanarak çalışma alanını tanımlar.

Tanımlayıcı Açıklama Örnek
Kimlik Çalışma alanının GUID'i workspace("00000000-0000-0000-0000-0000000000000")
Azure Kaynak Kimliği Azure kaynağının tanımlayıcısı workspace("/subscriptions/00000000-0000-0000-0000-00000000000/resourcegroups/Contoso/providers/Microsoft.OperationalInsights/workspaces/contosoretail")

Örnekler

workspace("00000000-0000-0000-0000-000000000000").Update | count
workspace("/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Contoso/providers/Microsoft.OperationalInsights/workspaces/contosoretail").Event | count
union 
( workspace("00000000-0000-0000-0000-000000000000").Heartbeat | where Computer == "myComputer"),
(app("00000000-0000-0000-0000-000000000000").requests | where cloud_RoleInstance == "myRoleInstance")
| count  
union 
(workspace("00000000-0000-0000-0000-000000000000").Heartbeat), (app("00000000-0000-0000-0000-000000000000").requests) | where TimeGenerated between(todatetime("2023-03-08 15:00:00") .. todatetime("2023-04-08 15:05:00"))

app() kullanarak klasik Application Insights uygulamaları arasında sorgulama

aynı kaynak grubundaki app , başka bir kaynak grubundaki veya başka bir abonelikteki belirli bir klasik Application Insights kaynağından veri almak için ifadesini kullanın. Çalışma alanı tabanlı bir Application Insights kaynağı kullanıyorsanız, telemetri diğer tüm günlük verileriyle birlikte log Analytics çalışma alanında depolanır. birden çok çalışma alanında bulunan uygulamalardan veri sorgulamak için ifadeyi workspace() kullanın. Aynı çalışma alanında birden çok uygulamadan veri sorgulamak için çalışma alanları arası sorguya ihtiyacınız yoktur.

Sözdizimi

app(Tanımlayıcı)

Bağımsız değişkenler

*Identifier*: Aşağıdaki tabloda yer alan biçimlerden birini kullanarak uygulamayı tanımlar.

Tanımlayıcı Açıklama Örnek
Kimlik Uygulamanın GUID'i app("00000000-0000-0000-0000-0000000000000")
Azure Kaynak Kimliği Azure kaynağının tanımlayıcısı app("/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Fabrikam/providers/microsoft.insights/components/fabrikamapp")

Örnekler

app("00000000-0000-0000-0000-000000000000").requests | count
app("/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Fabrikam/providers/microsoft.insights/components/fabrikamapp").requests | count
union 
(workspace("00000000-0000-0000-0000-000000000000").Heartbeat | where Computer == "myComputer"),
(app("00000000-0000-0000-0000-000000000000").requests | where cloud_RoleInstance == "myColumnInstance")
| count  
union 
(workspace("00000000-0000-0000-0000-000000000000").Heartbeat), (app("00000000-0000-0000-0000-000000000000").requests)
| where TimeGenerated between(todatetime("2023-03-08 15:00:00") .. todatetime("2023-04-08 15:05:00"))

resource() kullanarak kaynaklar arasında veri bağıntısı oluşturun

İfade, resource diğer kaynaklardan veri almak için kapsamı bir kaynak olarak belirlenmiş bir Azure İzleyici sorgusunda kullanılır.

Sözdizimi

resource(Tanımlayıcı)

Bağımsız değişkenler

*Identifier*: Verileri ilişkilendirmek için kaynak, kaynak grubu veya aboneliği tanımlar.

Tanımlayıcı Açıklama Örnek
Kaynak Kaynağın verilerini içerir. resource("/subscriptions/xxxxxxx-xxxx-xxxx-xxxx-xxxxx/resourcesgroups/myresourcegroup/providers/microsoft.compute/virtualmachines/myvm")
Kaynak Grubu veya Abonelik Kaynağın ve içerdiği tüm kaynakların verilerini içerir. resource("/subscriptions/xxxxxxx-xxxx-xxxx-xxxx-xxxxx/resourcesgroups/myresourcegroup)

Örnekler

union (Heartbeat),(resource("/subscriptions/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcesgroups/myresourcegroup/providers/microsoft.compute/virtualmachines/myvm").Heartbeat) | summarize count() by _ResourceId, TenantId
union (Heartbeat),(resource("/subscriptions/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcesgroups/myresourcegroup").Heartbeat) | summarize count() by _ResourceId, TenantId

Sonraki adımlar

Günlük sorgularının ve Azure İzleyici günlük verilerinin nasıl yapılandırıldığına genel bakış için bkz. Azure İzleyici'de günlük verilerini analiz etme.