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 gibiadx()
diğer çalışma alanları arası veya hizmetler arası ifadeleri içeren parametreli işlevleri veapp()
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 applicationsScoping
bir 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.