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.

  1. İş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.

    Çağrılar listesi

    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.

  2. 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.

    Çağırma ayrıntıları

  3. 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.

  4. 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.

    Application Insights Analytics çağırma listesi

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:

  1. Portalda işlev uygulamanıza göz atın.

  2. Sol sayfadaki Ayarlar'ın altında Application Insights'ı seçin.

  3. 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.

İşlev uygulaması Genel Bakış sayfasından Application Insights'ın açılması

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'a Genel Bakış sekmesi

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.

Analiz örneği

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 Errorsahip 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_Idiliş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: