Application Insights'ta Azure İşlevleri telemetriyi analiz etme
Azure İşlevleri, işlev uygulamalarınızı daha iyi izlemenizi sağlamak için Application Insights ile tümleşir. Application Insights, uygulamanızın günlüklere yazdığı bilgiler de dahil olmak üzere işlev uygulamanız tarafından oluşturulan telemetri verilerini toplar. Application Insights tümleştirmesi genellikle işlev uygulamanız oluşturulduğunda etkinleştirilir. İşlev uygulamanızda izleme anahtarı ayarlı değilse, önce Application Insights tümleştirmesini etkinleştirmeniz gerekir.
Varsayılan olarak, işlev uygulamanızdan toplanan veriler Application Insights'ta depolanır. Azure portalında Application Insights, telemetri verilerinizin kapsamlı bir görselleştirme kümesi sağlar. Hata günlüklerinde detaya gidebilir, olayları ve ölçümleri sorgulayabilirsiniz. Bu makalede, toplanan verilerinizi görüntüleme ve sorgulama hakkında temel örnekler sağlanmaktadır. Application Insights'ta işlev uygulaması verilerinizi keşfetme hakkında daha fazla bilgi edinmek için bkz . Application Insights nedir?.
Bir işlev uygulamasından Application Insights verilerini görüntüleyebilmek için işlev uygulamasında en az Katkıda Bulunan rolü izinlerine sahip olmanız gerekir. Application Insights örneğinde İzleme Okuyucusu iznine de sahip olmanız gerekir. Oluşturduğunuz tüm işlev uygulamaları ve Application Insights örnekleri için varsayılan olarak bu izinlere sahipsiniz.
Veri saklama ve olası depolama maliyetleri hakkında daha fazla bilgi edinmek için bkz . Application Insights'ta veri toplama, saklama ve depolama.
İzleme sekmesinde telemetriyi görüntüleme
Application Insights tümleştirmesi etkinleştirildiğinde, telemetri verilerini İzleyici sekmesinde görüntüleyebilirsiniz.
İşlev uygulaması sayfasında, Application Insights yapılandırıldıktan sonra en az bir kez çalıştırılan bir işlev seçin. Ardından sol bölmeden İzleyici'yi seçin. İşlev çağrıları listesi görünene kadar Düzenli aralıklarla yenile'yi seçin.
Not
Telemetri istemcisi verileri sunucuya iletim için toplu işlerken listenin görünmesi beş dakika kadar sürebilir. Gecikme, Canlı Ölçüm Akışı için geçerli değildir. Bu hizmet, sayfayı yüklediğinizde İşlevler konağına bağlanır, böylece günlükler doğrudan sayfaya akışla aktarılır.
Belirli bir işlev çağrısının günlüklerini görmek için bu çağrının Tarih (UTC) sütun bağlantısını seçin. Bu çağrının günlük çıkışı yeni bir sayfada görüntülenir.
Azure Log'da Azure İzleyici günlük verilerini alan sorgunun kaynağını görüntülemek için Application Insights'ta Çalıştır'ı seçin. Aboneliğinizde Azure Log Analytics'i ilk kez kullanıyorsanız etkinleştirmeniz istenir.
Log Analytics'i etkinleştirdikten sonra aşağıdaki sorgu görüntülenir. Sorgu sonuçlarının son 30 günle (
where timestamp > ago(30d)
) sınırlı olduğunu ve sonuçların en fazla 20 satır (take 20
) göstermediğini görebilirsiniz. Buna karşılık, işlevinizin çağrı ayrıntıları listesi son 30 güne aittir ve sınır yoktur.
Daha fazla bilgi için bu makalenin devamında yer alan Telemetri verilerini sorgulama bölümüne bakın.
Application Insights'ta telemetriyi görüntüleme
Azure portalında bir işlev uygulamasından Application Insights'ı açmak için:
Portalda işlev uygulamanıza göz atın.
Sol sayfadaki Ayarlar'ın altında Application Insights'ı seçin.
Application Insights'ı aboneliğinizle ilk kez kullanıyorsanız etkinleştirmeniz istenir. Bunu yapmak için Application Insights'ı aç'ı ve ardından sonraki sayfada Uygula'yı seçin.
Application Insights'ı kullanma hakkında bilgi için Application Insights belgelerine bakın. Bu bölümde, Application Insights'ta verilerin nasıl görüntüleyebileceğinize ilişkin bazı örnekler gösterilmektedir. Application Insights'ı zaten biliyorsanız telemetri verilerini yapılandırma ve özelleştirme hakkındaki bölümlere doğrudan gidebilirsiniz.
Application Insights'ın aşağıdaki alanları işlevlerinizdeki davranış, performans ve hataları değerlendirirken yararlı olabilir:
Araştır | Açıklama |
---|---|
Başarısızlık | İşlev hatalarına ve sunucu özel durumlarına göre grafikler ve uyarılar oluşturun. İşlem Adı , işlev adıdır. Bağımlılıklar için özel telemetri uygulamadığınız sürece bağımlılıklardaki hatalar gösterilmez. |
Performans | Bulut rolü örnekleri başına kaynak kullanımını ve aktarım hızını görüntüleyerek performans sorunlarını analiz edin. Bu performans verileri, işlevlerin temel alınan kaynaklarınızı tıkadığı senaryolarda hata ayıklamak için yararlı olabilir. |
Ölçümler | Ölçümleri temel alan grafikler ve uyarılar oluşturun. Ölçümler işlev çağrılarının sayısını, yürütme süresini ve başarı oranlarını içerir. |
Canlı Ölçümler | Ölçüm verilerini neredeyse gerçek zamanlı olarak oluşturulduğu şekilde görüntüleyin. |
Telemetri verilerini sorgulama
Application Insights Analytics , veritabanındaki tablo biçimindeki tüm telemetri verilerine erişmenizi sağlar. Analiz, verileri ayıklamak, işlemek ve görselleştirmek için bir sorgu dili sağlar.
Günlüğe kaydedilen olayları incelemek veya sorgulamak için Günlükler'i seçin.
Burada, son 30 dakika içindeki çalışan başına isteklerin dağılımını gösteren bir sorgu örneği verilmiştir.
requests
| where timestamp > ago(30m)
| summarize count() by cloud_RoleInstance, bin(timestamp, 1m)
| render timechart
Kullanılabilir tablolar soldaki Şema sekmesinde gösterilir. İşlev çağrıları tarafından oluşturulan verileri aşağıdaki tablolarda bulabilirsiniz:
Table | Açıklama |
---|---|
Izler | çalışma zamanı, ölçek denetleyicisi ve işlev kodunuzdan izlemeler tarafından oluşturulan günlükler. Flex Tüketim planı barındırma için, traces kod dağıtımı sırasında oluşturulan günlükleri de içerir. |
Istek | Her işlev çağrısı için bir istek. |
Özel durum | Çalışma zamanı tarafından oluşan özel durumlar. |
customMetrics | Başarılı ve başarısız çağrıların sayısı, başarı oranı ve süre. |
customEvents | Çalışma zamanı tarafından izlenen olaylar, örneğin: bir işlevi tetikleyen HTTP istekleri. |
performanceCounters | İşlevlerin üzerinde çalıştığı sunucuların performansı hakkında bilgi. |
Diğer tablolar kullanılabilirlik testleri ile istemci ve tarayıcı telemetrisine yöneliktir. Bunlara veri eklemek için özel telemetri uygulayabilirsiniz.
Her tablonun içinde İşlevlere özgü verilerden bazıları bir customDimensions
alanda yer alır. Örneğin, aşağıdaki sorgu günlük düzeyine Error
sahip tüm izlemeleri alır.
traces
| where customDimensions.LogLevel == "Error"
Çalışma zamanı ve customDimensions.Category
alanlarını sağlarcustomDimensions.LogLevel
. İşlev kodunuzda yazdığınız günlüklerde ek alanlar sağlayabilirsiniz. C# dilindeki bir örnek için bkz . .NET sınıf kitaplığı geliştirici kılavuzunda yapılandırılmış günlük .
Sorgu işlevi çağrıları
Her işlev çağrısına benzersiz bir kimlik atanır. InvocationId
özel boyuta dahil edilir ve belirli bir işlev yürütmesindeki tüm günlükleri ilişkilendirmek için kullanılabilir.
traces
| project customDimensions["InvocationId"], message
Telemetri bağıntısı
Farklı işlevlerden gelen günlükler kullanılarak operation_Id
ilişkilendirilebilir. Belirli bir mantıksal işlemin tüm günlüklerini döndürmek için aşağıdaki sorguyu kullanın.
traces
| where operation_Id == '45fa5c4f8097239efe14a2388f8b4e29'
| project timestamp, customDimensions["InvocationId"], message
| order by timestamp
Örnekleme yüzdesi
Telemetri hacmini azaltmak için örnekleme yapılandırması kullanılabilir. Örneklemenin çalışır durumda olup olmadığını belirlemek için aşağıdaki sorguyu kullanın. Herhangi bir türün RetainedPercentage
değerinin 100'den küçük olması, o telemetri türünün örneklendiğini gösterir.
union requests,dependencies,pageViews,browserTimings,exceptions,traces
| where timestamp > ago(1d)
| summarize RetainedPercentage = 100/avg(itemCount) by bin(timestamp, 1h), itemType
Sorgu ölçek denetleyicisi günlükleri
Bu özellik önizleme aşamasındadır.
Hem ölçek denetleyicisi günlüğünü hem de Application Insights tümleştirmesini etkinleştirdikten sonra, application insights günlük aramasını kullanarak yayılan ölçek denetleyicisi günlüklerini sorgulayabilirsiniz. Ölçek denetleyicisi günlükleri, ScaleControllerLogs kategorisi altındaki koleksiyona kaydedilirtraces
.
Aşağıdaki sorgu, belirtilen süre içinde geçerli işlev uygulamasının tüm ölçek denetleyicisi günlüklerini aramak için kullanılabilir:
traces
| extend CustomDimensions = todynamic(tostring(customDimensions))
| where CustomDimensions.Category == "ScaleControllerLogs"
Aşağıdaki sorgu, yalnızca ölçek değişikliğini gösteren günlüklerin nasıl alındığını göstermek için önceki sorguyu genişletir:
traces
| extend CustomDimensions = todynamic(tostring(customDimensions))
| where CustomDimensions.Category == "ScaleControllerLogs"
| where message == "Instance count changed"
| extend Reason = CustomDimensions.Reason
| extend PreviousInstanceCount = CustomDimensions.PreviousInstanceCount
| extend NewInstanceCount = CustomDimensions.CurrentInstanceCount
Esnek Tüketim kodu dağıtım günlüklerini sorgulama
Önemli
Flex Consumption planı şu anda önizleme aşamasındadır.
Aşağıdaki sorgu, belirtilen süre içinde geçerli işlev uygulamasının tüm kod dağıtım günlüklerini aramak için kullanılabilir:
traces
| extend deploymentId = customDimensions.deploymentId
| where deploymentId != ''
| project timestamp, deploymentId, message, severityLevel, customDimensions, appName
Tüketim planına özgü ölçümler
Tüketim planında çalıştırılırken, tek bir işlev yürütmesinin yürütme maliyeti GB saniye cinsinden ölçülür. Yürütme maliyeti, bellek kullanımı yürütme süresiyle birleştirilerek hesaplanır. Daha fazla bilgi edinmek için bkz . Tüketim planı maliyetlerini tahmin etme.
Aşağıdaki telemetri sorguları, Tüketim planında çalışan işlevlerin maliyetini etkileyen ölçümlere özgüdür.
Bellek kullanımını belirleme
İzleme'nin altında Günlükler (Analiz) öğesini seçin, ardından aşağıdaki telemetri sorgusunu kopyalayıp sorgu penceresine yapıştırın ve Çalıştır'ı seçin. Bu sorgu, örneklenen her seferde toplam bellek kullanımını döndürür.
performanceCounters
| where name == "Private Bytes"
| project timestamp, name, value
Sonuçlar aşağıdaki örneğe benzer:
Zaman damgası [UTC] | Adı | değer |
---|---|---|
12.09.2019, 01:05:14.947 | Özel Bayt Sayısı | 209,932,288 |
12.09.2019, 01:06:14.994 | Özel Bayt Sayısı | 212,189,184 |
12.09.2019, 01:06:30.010 | Özel Bayt Sayısı | 231,714,816 |
12.09.2019, 01:07:15.040 | Özel Bayt Sayısı | 210,591,744 |
12.09.2019, 01:12:16.285 | Özel Bayt Sayısı | 216,285,184 |
12.09.2019, 01:12:31.376 | Özel Bayt Sayısı | 235,806,720 |
Süreyi belirleme
Azure İzleyici, İşlevler için işlev uygulaması olan kaynak düzeyinde ölçümleri izler. Application Insights tümleştirmesi, ölçümleri işlev başına temel alarak gösterir. Bir işlevin ortalama süresini almak için örnek bir analiz sorgusu aşağıda verilmiştir:
customMetrics
| where name contains "Duration"
| extend averageDuration = valueSum / valueCount
| summarize averageDurationMilliseconds=avg(averageDuration) by name
Adı | averageDurationMilliseconds |
---|---|
QueueTrigger AvgDurationMs | 16.087 |
QueueTrigger MaxDurationMs | 90.249 |
QueueTrigger MinDurationMs | 8.522 |
Sonraki adımlar
İzleme Azure İşlevleri hakkında daha fazla bilgi edinin: