Aracılığıyla paylaş


Azure İşlevleri için izlemeyi yapılandırma

Azure İşlevleri, işlev uygulamalarınızı daha iyi izlemenizi sağlamak için Application Insights ile tümleşir. Azure İzleyici'nin bir özelliği olan Application Insights, uygulamanızın günlüklere yazdığı bilgiler de dahil olmak üzere işlev uygulamanız tarafından oluşturulan verileri toplayan genişletilebilir bir Uygulama Performansı Yönetimi (APM) hizmetidir. Application Insights tümleştirmesi genellikle işlev uygulamanız oluşturulduğunda etkinleştirilir. Uygulamanızda izleme anahtarı ayarlı değilse, önce Application Insights tümleştirmesini etkinleştirmeniz gerekir.

Application Insights'ı herhangi bir özel yapılandırma olmadan kullanabilirsiniz. Ancak, varsayılan yapılandırma yüksek hacimli verilerle sonuçlanabilir. Visual Studio Azure aboneliği kullanıyorsanız Application Insights için veri sınırınıza ulaşabilirsiniz. Application Insights maliyetleri hakkında bilgi için bkz . Application Insights faturalaması. Daha fazla bilgi için bkz . Yüksek hacimli telemetriye sahip çözümler.

Bu makalede, işlevlerinizin Application Insights'a gönderdiği verileri yapılandırmayı ve özelleştirmeyi öğreneceksiniz. yaygın günlük yapılandırmalarını host.json dosyasında ayarlayabilirsiniz. Varsayılan olarak, bu ayarlar kodunuz tarafından yayılan özel günlükleri de yönetir. Ancak bazı durumlarda bu davranış, günlük kaydı üzerinde daha fazla denetim sahibi olmanıza neden olan seçeneklere göre devre dışı bırakılabilir. Daha fazla bilgi için bkz . Özel uygulama günlükleri.

Not

Belirli bir ortamın host.json dosyasındaki belirli ayarları göstermek için özel olarak yapılandırılmış uygulama ayarlarını kullanabilirsiniz. Bunu yapmak, projenizdeki host.json dosyasını yeniden yayımlamanıza gerek kalmadan host.json ayarlarını etkili bir şekilde değiştirmenize olanak tanır. Daha fazla bilgi için bkz. host.json değerlerini geçersiz kılma.

Özel uygulama günlükleri

Varsayılan olarak, yazdığınız özel uygulama günlükleri İşlevler konağına gönderilir ve bu günlükler Çalışan kategorisi altında Application Insights'a gönderilir. Bazı dil yığınları bunun yerine günlükleri doğrudan Application Insights'a göndermenizi sağlar ve bu sayede yazdığınız günlüklerin nasıl yayıldığı üzerinde tam denetim sahibi olursunuz. Bu durumda, günlük işlem hattı olarak worker -> Functions host -> Application Insights worker -> Application Insightsdeğişir.

Aşağıdaki tabloda her yığın için kullanılabilen yapılandırma seçenekleri özetlenmiştir:

Dil yığını Özel günlüklerin yapılandırıldığı yer
.NET (işlem içi model) host.json
.NET (yalıtılmış model) Varsayılan (İşlevler konağına özel günlükler gönderin): host.json
Günlükleri doğrudan Application Insights'a göndermek için bkz. HostBuilder'da Application Insights'ı yapılandırma
Node.JS host.json
Python host.json
Java Varsayılan (İşlevler konağına özel günlükler gönderin): host.json
Günlükleri doğrudan Application Insights'a göndermek için bkz. Application Insights Java aracısını yapılandırma
PowerShell host.json

Doğrudan gönderilecek özel uygulama günlüklerini yapılandırdığınızda, konak bunları artık yaymaz ve host.json artık davranışlarını denetlemez. Benzer şekilde, her yığın tarafından sunulan seçenekler yalnızca özel günlüklere uygulanır ve bu makalede açıklanan diğer çalışma zamanı günlüklerinin davranışını değiştirmez. Bu durumda, tüm günlüklerin davranışını denetlemek için her iki yapılandırmada da değişiklik yapmanız gerekebilir.

Kategorileri yapılandırma

Azure İşlevleri günlükçü her günlük için bir kategori içerir. Kategori, günlüğü, çalışma zamanı kodunun veya işlev kodunuzun hangi bölümünün yazdığını gösterir. Kategoriler sürüm 1.x ile sonraki sürümler arasında farklılık gösterir.

Kategori adları, İşlevler'de diğer .NET çerçevelerine kıyasla farklı şekilde atanır. Örneğin, ILogger<T> ASP.NET kullandığınızda, kategori genel türün adıdır. C# işlevleri de kullanır ILogger<T>, ancak genel tür adını kategori olarak ayarlamak yerine çalışma zamanı kaynağa göre kategoriler atar. Örneğin:

  • İşlev çalıştırmayla ilgili girişlere kategorisi Function.<FUNCTION_NAME>atanır.
  • İşlevin içindeki kullanıcı kodu tarafından oluşturulan girişlere , çağrılırken logger.LogInformation()olduğu gibi bir kategorisi Function.<FUNCTION_NAME>.Useratanır.

Aşağıdaki tabloda çalışma zamanının oluşturduğu ana günlük kategorileri açıklanmaktadır:

Kategori Table Açıklama
Function Izler Tüm işlev çalıştırmaları için başlatılan ve tamamlanan günlükleri içerir. Başarılı çalıştırmalar için bu günlükler düzeyindedir Information . Özel durumlar düzeyinde günlüğe Error kaydedilir. Çalışma zamanı, kuyruk iletilerinin zehirli kuyruğa gönderilmesi gibi düzey günlükleri de oluştururWarning.
Function.<YOUR_FUNCTION_NAME> Bağımlılık Bazı hizmetler için bağımlılık verileri otomatik olarak toplanır. Başarılı çalıştırmalar için bu günlükler düzeyindedir Information . Daha fazla bilgi için bkz. Bağımlılıklar. Özel durumlar düzeyinde günlüğe Error kaydedilir. Çalışma zamanı, kuyruk iletilerinin zehirli kuyruğa gönderilmesi gibi düzey günlükleri de oluştururWarning.
Function.<YOUR_FUNCTION_NAME> customMetrics
customEvents
C# ve JavaScript SDK'ları özel ölçümleri toplamanıza ve özel olayları günlüğe kaydetmenize olanak tanır. Daha fazla bilgi için bkz . Özel telemetri verileri.
Function.<YOUR_FUNCTION_NAME> Izler Belirli işlev çalıştırmaları için başlatılan ve tamamlanan günlükleri içerir. Başarılı çalıştırmalar için bu günlükler düzeyindedir Information . Özel durumlar düzeyinde günlüğe Error kaydedilir. Çalışma zamanı, kuyruk iletilerinin zehirli kuyruğa gönderilmesi gibi düzey günlükleri de oluştururWarning.
Function.<YOUR_FUNCTION_NAME>.User Izler Kullanıcı tarafından oluşturulan günlükler, herhangi bir günlük düzeyi olabilir. İşlevlerinizden günlüklere yazma hakkında daha fazla bilgi için bkz . Günlüklere yazma.
Host.Aggregator customMetrics Çalışma zamanı tarafından oluşturulan bu günlükler, yapılandırılabilir bir süre boyunca işlev çağrılarının sayısını ve ortalamalarını sağlar. Varsayılan süre 30 saniye veya 1.000 sonuç (hangisi önce gelirse) olur. Çalıştırma sayısı, başarı oranı ve süre örnek olarak verilebilir. Bu günlüklerin tümü düzeyinde yazılır Information . Veya daha yüksek bir değere Warning filtre eklerseniz, bu verilerin hiçbirini görmezsiniz.
Host.Results Istek Çalışma zamanı tarafından oluşturulan bu günlükler bir işlevin başarılı veya başarısız olduğunu gösterir. Bu günlüklerin tümü düzeyinde yazılır Information . Veya daha yüksek bir değere Warning filtre eklerseniz, bu verilerin hiçbirini görmezsiniz.
Microsoft Izler Konak tarafından çağrılan bir .NET çalışma zamanı bileşenini yansıtan tam günlük kategorisi.
Worker Izler non-.NET diller için dil çalışanı işlemi tarafından oluşturulan günlükler. Dil çalışanı günlükleri gibi bir Microsoft.* kategoride Microsoft.Azure.WebJobs.Script.Workers.Rpc.RpcFunctionInvocationDispatcherde günlüğe kaydedilebilir. Bu günlükler düzeyinde yazılır Information .

Not

.NET sınıf kitaplığı işlevleri için, bu kategoriler kullandığınızı değil ILogger<T>kullandığınızı ILogger varsayar. Daha fazla bilgi için İşlevler ILogger belgelerine bakın.

Tablo sütunu, Application Insights'ta günlüğün hangi tabloya yazıldığı gösterir.

Günlük düzeylerini yapılandırma

Her günlüğe bir günlük düzeyi atanır. Değer, göreli önem derecesini gösteren bir tamsayıdır:

GünlükDüzeyi Kod Description
İzleme 0 En ayrıntılı iletileri içeren günlükler. Bu iletiler hassas uygulama verileri içerebilir. Bu iletiler varsayılan olarak devre dışı bırakılır ve üretim ortamında hiçbir zaman etkinleştirilmemelidir.
Hata Ayıklama 1 Geliştirme sırasında etkileşimli araştırma için kullanılan günlükler. Bu günlükler öncelikli olarak hata ayıklama için yararlı bilgiler içermelidir ve uzun vadeli bir değere sahip olmamalıdır.
Bilgiler 2 Uygulamanın genel akışını izleyen günlükler. Bu günlükler uzun vadeli değere sahip olmalıdır.
Uyarı 3 Uygulama akışında anormal veya beklenmeyen bir olayı vurgulayan ancak uygulama yürütmenin durmasına neden olmayan günlükler.
Hata 4 Geçerli yürütme akışının bir hata nedeniyle durdurulduğunu vurgulayan günlükler. Bu hatalar, uygulama genelinde bir hata değil geçerli etkinlikte bir hata olduğunu göstermelidir.
Kritik 5 Kurtarılamayan bir uygulamayı veya sistem kilitlenmesini ya da hemen ilgilenilmesi gereken yıkıcı bir hatayı açıklayan günlükler.
Hiçbiri 6 Belirtilen kategori için günlüğe kaydetmeyi devre dışı bırakır.

host.json dosya yapılandırması, bir işlev uygulamasının Application Insights'a ne kadar günlük gönderdiğini belirler.

Her kategori için gönderilecek en düşük günlük düzeyini belirtirsiniz. host.json ayarları İşlevler çalışma zamanı sürümüne bağlı olarak değişir.

Aşağıdaki örnekler, aşağıdaki kurallara göre günlüğe kaydetmeyi tanımlar:

  • Varsayılan günlük düzeyi, beklenmeyen kategoriler için aşırı günlüğe kaydetmeyi önlemek için olarak ayarlanırWarning.
  • Host.Aggregator ve Host.Results daha düşük düzeylere ayarlanır. Günlük düzeylerinin çok yüksek (özellikle daha Informationyüksek) ayarlanması ölçüm ve performans verilerinin kaybolmasına neden olabilir.
  • İşlev çalıştırmaları için günlüğe Informationkaydetme olarak ayarlanır. Gerekirse, yerel geliştirmede veya için bu ayarı geçersiz kılabilirsiniz.Debug Trace
{
  "logging": {
    "fileLoggingMode": "debugOnly",
    "logLevel": {
      "default": "Warning",
      "Host.Aggregator": "Trace",
      "Host.Results": "Information",
      "Function": "Information"
    }
  }
}

host.json aynı dizeyle başlayan birden çok günlük içeriyorsa, önce daha tanımlı günlükler eşleştirilir. Aşağıdaki örneği göz önünde bulundurarak çalışma zamanı Host.Aggregatordışındaki her şeyi düzeyinde günlüğe Error kaydeder:

{
  "logging": {
    "fileLoggingMode": "debugOnly",
    "logLevel": {
      "default": "Information",
      "Host": "Error",
      "Function": "Error",
      "Host.Aggregator": "Information"
    }
  }
}

Günlüklerin bir kategori için yazılmasını önlemek için günlük düzeyi ayarını None kullanabilirsiniz.

Dikkat

Azure İşlevleri, telemetri olaylarını Application Insights tablolarında depolayarak Application Insights ile tümleşir. Kategori günlüğü düzeyini değerinden Informationfarklı bir değere ayarlarsanız, telemetrinin bu tablolara akmasını engeller ve Application Insights ve İşlev İzleyicisi sekmelerinde ilgili verileri göremezsiniz.

Örneğin, önceki örnekler için:

  • Kategoriyi Host.Results günlük düzeyine Error ayarlarsanız, Azure başarısız işlev yürütmeleri için tabloda yalnızca konak yürütme telemetrisi olaylarını requests toplar ve hem Application Insights hem de İşlev İzleyicisi sekmelerinde başarılı yürütmelerin konak yürütme ayrıntılarının görüntülenmesini engeller.
  • Kategoriyi günlük düzeyine Error ayarlarsanız, tüm işlevler için , customMetricsve ile ilgili dependenciesişlev telemetri verilerini toplamayı durdurur ve customEvents application insights'ta bu verilerden herhangi birini görüntülemenizi engeller.Function Azure yalnızca traces düzeyinde günlüğe kaydedilenleri Error toplar.

Her iki durumda da Azure, Application Insights ve İşlev İzleyicisi sekmelerinde hata ve özel durum verileri toplamaya devam eder. Daha fazla bilgi için bkz . Yüksek hacimli telemetriye sahip çözümler.

Toplayıcıyı yapılandırma

Önceki bölümde belirtildiği gibi, çalışma zamanı belirli bir süre boyunca işlev yürütmeleri hakkındaki verileri toplar. Varsayılan süre 30 saniyedir veya hangisi önce gelirse 1.000 çalıştırmadır. Bu ayarı host.json dosyasında yapılandırabilirsiniz. Örneğin:

{
    "aggregator": {
      "batchSize": 1000,
      "flushTimeout": "00:00:30"
    }
}

Örneklemeyi yapılandırma

Application Insights, yoğun yük olduğu zamanlarda tamamlanan yürütmelerde çok fazla telemetri verisi üretmenizi önleyebilecek bir örnekleme özelliğine sahiptir. Gelen yürütmelerin hızı belirtilen eşiği aşıyorsa Application Insights gelen yürütmelerden bazılarını rastgele olarak yoksaymaya başlar. Saniyede en fazla yürütme sayısı için varsayılan değer 20'dir (sürüm 1.x'te beş). Örneklemeyi host.json yapılandırabilirsiniz. Bir örnek aşağıda verilmiştir:

{
  "logging": {
    "applicationInsights": {
      "samplingSettings": {
        "isEnabled": true,
        "maxTelemetryItemsPerSecond" : 20,
        "excludedTypes": "Request;Exception"
      }
    }
  }
}

Belirli telemetri türlerini örneklemenin dışında tutabilirsiniz. Bu örnekte, ve Exception türündeki Request veriler örneklemenin dışında tutulur. Diğer telemetri türleri örneklemeye tabi kalırken tüm işlev yürütmelerinin (istekler) ve özel durumların günlüğe kaydedilmesini sağlar.

Projeniz el ile telemetri izlemesi yapmak için Application Insights SDK'sına bağımlılık kullanıyorsa, örnekleme yapılandırmanız işlev uygulamanızdaki örnekleme yapılandırmasından farklıysa olağan dışı davranışlarla karşılaşabilirsiniz. Böyle durumlarda işlev uygulamasıyla aynı örnekleme yapılandırmasını kullanın. Daha fazla bilgi için bkz . Application Insights'ta Örnekleme.

SQL sorgu koleksiyonunu etkinleştirme

Application Insights, HTTP istekleri, veritabanı çağrıları ve çeşitli bağlamalar için bağımlılıklarla ilgili verileri otomatik olarak toplar. Daha fazla bilgi için bkz. Bağımlılıklar. SQL çağrıları için sunucu ve veritabanının adı her zaman toplanır ve depolanır, ancak SQL sorgu metni varsayılan olarak toplanmaz. host.json dosyanızda aşağıdaki ayarları (en azından) kullanarak SQL sorgu metin günlüğünü etkinleştirmek için kullanabilirsinizdependencyTrackingOptions.enableSqlCommandTextInstrumentation:

"logging": {
    "applicationInsights": {
        "enableDependencyTracking": true,    
        "dependencyTrackingOptions": {
            "enableSqlCommandTextInstrumentation": true
        }
    }
}

Daha fazla bilgi için bkz . Tam SQL sorgusu almak için gelişmiş SQL izleme.

Ölçek denetleyicisi günlüklerini yapılandırma

Bu özellik önizleme aşamasındadır.

ölçek denetleyicisinin işlev uygulamanız için aldığı kararları daha iyi anlamak için Azure İşlevleri ölçek denetleyicisinin günlükleri Application Insights'a veya Blob depolamaya yaymasını sağlayabilirsiniz.

Bu özelliği etkinleştirmek için işlev uygulaması ayarlarınıza adlı SCALE_CONTROLLER_LOGGING_ENABLED bir uygulama ayarı ekleyin. Ayarın aşağıdaki değeri biçiminde <DESTINATION>:<VERBOSITY>olmalıdır. Daha fazla bilgi için aşağıdaki tabloya bakın:

Özellik Açıklama
<DESTINATION> Günlüklerin gönderildiği hedef. Geçerli değerler: AppInsights ve Blob.
kullandığınızdaAppInsights, işlev uygulamanızda Application Insights'ın etkinleştirildiğinden emin olun.
Hedefi olarak Blobayarladığınızda günlükler, uygulama ayarında ayarlanan varsayılan depolama hesabında adlı azure-functions-scale-controller bir blob kapsayıcısında AzureWebJobsStorage oluşturulur.
<VERBOSITY> Günlük düzeyini belirtir. Desteklenen değerler , Warningve VerbosedeğerleridirNone.
olarak Verboseayarlandığında, ölçek denetleyicisi çalışan sayısındaki her değişikliğin nedenini ve bu kararları dikkate alan tetikleyiciler hakkındaki bilgileri günlüğe kaydeder. Ayrıntılı günlükler tetikleyici uyarılarını ve ölçek denetleyicisi çalıştırıldıktan önce ve çalıştırıldıktan sonra tetikleyiciler tarafından kullanılan karmaları içerir.

İpucu

Ölçek denetleyicisi günlüğünü etkin bırakırken işlev uygulamanızı izlemenin olası maliyetlerini etkilediğini unutmayın. Ölçek denetleyicisinin nasıl davrandığını anlamak için yeterli veri toplayana kadar günlüğü etkinleştirmeyi ve ardından devre dışı bırakmayı göz önünde bulundurun.

Örneğin, aşağıdaki Azure CLI komutu ölçek denetleyicisinden Application Insights'a ayrıntılı günlük kaydını açar:

az functionapp config appsettings set --name <FUNCTION_APP_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--settings SCALE_CONTROLLER_LOGGING_ENABLED=AppInsights:Verbose

Bu örnekte, ve <RESOURCE_GROUP_NAME> değerini sırasıyla işlev uygulamanızın adı ve kaynak grubu adıyla değiştirin<FUNCTION_APP_NAME>.

Aşağıdaki Azure CLI komutu ayrıntı düzeyini olarak ayarlayarak günlüğe kaydetmeyi Nonedevre dışı bırakır:

az functionapp config appsettings set --name <FUNCTION_APP_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--settings SCALE_CONTROLLER_LOGGING_ENABLED=AppInsights:None

Aşağıdaki Azure CLI komutunu kullanarak ayarı kaldırarak SCALE_CONTROLLER_LOGGING_ENABLED günlüğü devre dışı bırakabilirsiniz:

az functionapp config appsettings delete --name <FUNCTION_APP_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--setting-names SCALE_CONTROLLER_LOGGING_ENABLED

Ölçek denetleyicisi günlüğü etkinleştirildiğinde artık ölçek denetleyicisi günlüklerinizi sorgulayabileceksiniz.

Application Insights tümleştirmesini etkinleştirme

Bir işlev uygulamasının Application Insights'a veri göndermesi için bu uygulama ayarlarından yalnızca birini kullanarak Application Insights kaynağına bağlanması gerekir:

Ayar adı Açıklama
APPLICATIONINSIGHTS_CONNECTION_STRING Bu ayar önerilir ve Application Insights örneğiniz bağımsız bir bulutta çalıştığında gereklidir. bağlantı dizesi diğer yeni özellikleri destekler.
APPINSIGHTS_INSTRUMENTATIONKEY Application Insights'ın bağlantı dizesi ayarına göre kullanım dışı bıraktığı eski ayar.

İşlev uygulamanızı Azure portalında komut satırından Azure İşlevleri Core Tools veya Visual Studio Code kullanarak oluşturduğunuzda Application Insights tümleştirmesi varsayılan olarak etkinleştirilir. Application Insights kaynağı işlev uygulamanızla aynı ada sahiptir ve aynı bölgede veya en yakın bölgede oluşturulur.

Microsoft Entra kimlik doğrulaması gerektir

Microsoft Entra kimlik doğrulamasını APPLICATIONINSIGHTS_AUTHENTICATION_STRING kullanarak Application Insights bağlantılarını etkinleştirmek için ayarını kullanabilirsiniz. Bu, Profil Oluşturucu ve Anlık Görüntü Hata Ayıklayıcısı dahil olmak üzere tüm Application Insights işlem hatlarında ve İşlevler ana bilgisayarından ve dile özgü aracılardan tutarlı bir kimlik doğrulama deneyimi oluşturur.

Not

Yerel geliştirme için Entra kimlik doğrulaması desteği yoktur.

Değeri, sistem tarafından atanan yönetilen kimlik için veya ClientId=<YOUR_CLIENT_ID>;Authorization=AAD kullanıcı tarafından atanan yönetilen kimlik için içerirAuthorization=AAD. Yönetilen kimliğin, İzleme Ölçümleri Yayımcısı'na eşdeğer atanmış bir rolle işlev uygulaması tarafından zaten kullanılabilir olması gerekir. Daha fazla bilgi için bkz . Application Insights için Microsoft Entra kimlik doğrulaması.

Ayar APPLICATIONINSIGHTS_CONNECTION_STRING yine de gereklidir.

Not

APPLICATIONINSIGHTS_AUTHENTICATION_STRING Microsoft Entra kimlik doğrulamasını kullanarak Application Insights'a bağlanırken, Application Insights için yerel kimlik doğrulamasını da devre dışı bırakmanız gerekir. Bu yapılandırma, telemetrinin çalışma alanınıza alınması için Microsoft Entra kimlik doğrulaması gerektirir.

Portalda yeni işlev uygulaması

Oluşturulan Application Insights kaynağını gözden geçirmek için bunu seçerek Application Insights penceresini genişletin. Yeni kaynak adını değiştirebilir veya Verilerinizi depolamak istediğiniz Azure coğrafyasında farklı bir Konum seçebilirsiniz.

İşlev uygulaması oluştururken Application Insights'ın nasıl etkinleştirildiğini gösteren ekran görüntüsü.

Oluştur'u seçtiğinizde, uygulama ayarlarında ayarlanmış olan APPLICATIONINSIGHTS_CONNECTION_STRING işlev uygulamanızla bir Application Insights kaynağı oluşturulur. Her şey hazır.

Mevcut bir işlev uygulamasına ekleme

İşlev uygulamanızla bir Application Insights kaynağı oluşturulmadıysa, kaynağı oluşturmak için aşağıdaki adımları kullanın. Ardından bu kaynaktan bağlantı dizesi işlev uygulamanıza uygulama ayarı olarak ekleyebilirsiniz.

  1. Azure portalında işlev uygulamasını arayıp seçin ve ardından işlev uygulamanızı seçin.

  2. Pencerenin üst kısmındaki Application Insights yapılandırılmadı başlığını seçin. Bu başlığı görmüyorsanız, uygulamanızda Application Insights zaten etkinleştirilmiş olabilir.

    Portaldan Application Insights'ın nasıl etkinleştirildiğini gösteren ekran görüntüsü.

  3. Aşağıdaki tabloda belirtilen ayarları kullanarak Kaynağınızı değiştirin'i genişletin ve application insights kaynağı oluşturun:

    Ayar Önerilen değer Açıklama
    Yeni kaynak adı Benzersiz uygulama adı Aboneliğinizde benzersiz olması gereken işlev uygulamanızın adıyla aynı adı kullanmak en kolayıdır.
    Konum West Europe Mümkünse işlev uygulamanızla aynı bölgeyi veya bu bölgeye yakın olan bölgeyi kullanın.

    Application Insights kaynağının nasıl oluşturulacağını gösteren ekran görüntüsü.

  4. Uygula’yı seçin.

    Application Insights kaynağı, işlev uygulamanızla aynı kaynak grubunda ve abonelikte oluşturulur. Kaynak oluşturulduktan sonra Application Insights penceresini kapatın.

  5. İşlev uygulamanızda Ayarlar'ı genişletin ve ortam değişkenleri'ne tıklayın. Uygulama ayarları sekmesinde adlı bir uygulama ayarı APPLICATIONINSIGHTS_CONNECTION_STRINGgörürseniz, Azure'da çalışan işlev uygulamanız için Application Insights tümleştirmesi etkinleştirilir. Bu ayar yoksa, değer olarak Application Insights bağlantı dizesi kullanarak bunu ekleyin.

Not

Eski işlev uygulamaları yerine APPLICATIONINSIGHTS_CONNECTION_STRINGkullanabilirAPPINSIGHTS_INSTRUMENTATIONKEY. Mümkün olduğunda, uygulamanızı izleme anahtarı yerine bağlantı dizesi kullanacak şekilde güncelleştirin.

Yerleşik günlüğe kaydetmeyi devre dışı bırakma

İşlevler'in ilk sürümleri artık önerilen yerleşik izlemeyi kullanıyordu. Application Insights'ı etkinleştirdiğinizde, Azure Depolama kullanan yerleşik günlüğü devre dışı bırakın. Yerleşik günlük, hafif iş yükleriyle test için kullanışlıdır, ancak yüksek yüklü üretim kullanımı için tasarlanmamıştır. Üretim izleme için Application Insights'ı öneririz. Üretimde yerleşik günlük kaydı kullanıyorsanız Azure Depolama'da azaltma nedeniyle günlük kaydı eksik olabilir.

Yerleşik günlüğü devre dışı bırakmak için uygulama ayarını silin AzureWebJobsDashboard . Azure portalında uygulama ayarlarını silme hakkında daha fazla bilgi için, İşlev uygulamasını yönetme'nin Uygulama ayarları bölümüne bakın. Uygulama ayarını silmeden önce, aynı işlev uygulamasındaki mevcut işlevlerin Azure Depolama tetikleyicileri veya bağlamaları için bu ayarı kullanmadığından emin olun.

Yüksek hacimli telemetriye sahip çözümler

İşlev uygulamaları, IoT çözümleri, hızlı olay odaklı çözümler, yüksek yük finansal sistemler ve tümleştirme sistemleri gibi yüksek hacimli telemetriye neden olabilen çözümlerin önemli bir parçasıdır. Bu durumda, gözlemlenebilirliği korurken maliyetleri azaltmak için ek yapılandırmayı göz önünde bulundurmanız gerekir.

Oluşturulan telemetri gerçek zamanlı panolarda, uyarılarda, ayrıntılı tanılamalarda vb. kullanılabilir. Oluşturulan telemetrinin nasıl tüketilmesine bağlı olarak, oluşturulan veri hacmini azaltmak için bir strateji tanımlamanız gerekir. Bu strateji, üretimdeki işlev uygulamalarınızı düzgün bir şekilde izlemenize, çalıştırmanıza ve tanılamanıza olanak tanır. Aşağıdaki seçenekleri göz önünde bulundurun:

  • Örneklemeyi kullanma: Daha önce de belirtildiği gibi örnekleme, istatistiksel olarak doğru bir analiz sürdürürken alınan telemetri olaylarının hacmini önemli ölçüde azaltmaya yardımcı olur. Örneklemeyi kullandığınızda bile yüksek hacimli telemetri elde edebilirsiniz. Uyarlamalı örneklemenin size sağladığı seçenekleri inceleyin. Örneğin, değerini maxTelemetryItemsPerSecond , oluşturulan birimi izleme gereksinimlerinizle dengeleyen bir değere ayarlayın. Telemetri örneklemesinin işlev uygulamanızı yürüten konak başına uygulandığını unutmayın.

  • Varsayılan günlük düzeyi: Tüm telemetri kategorileri için varsayılan değer olarak veya Error kullanınWarning. Daha sonra, işlevlerinizi düzgün bir şekilde izleyebilmek ve tanılamak için düzeye Information ayarlamak istediğiniz kategorileri belirleyebilirsiniz.

  • İşlev telemetrinizi ayarlayın: Varsayılan günlük düzeyi veya Warningolarak ayarlandığında Error her işlevden ayrıntılı bilgi toplanmaz (bağımlılıklar, özel ölçümler, özel olaylar ve izlemeler). Üretim izleme için önemli olan işlevler için, kategori için açık bir giriş tanımlayın ve ayrıntılı bilgi toplayabilmeniz için Function.<YOUR_FUNCTION_NAME> bunu olarak Informationayarlayın. Kullanıcı tarafından oluşturulan günlüklerin düzeyinde toplanmasından Information kaçınmak için kategoriyi Function.<YOUR_FUNCTION_NAME>.User veya Warning günlük düzeyine Error ayarlayın.

  • Host.Aggregator kategorisi: Yapılandırma kategorilerinde açıklandığı gibi, bu kategori işlev çağrılarının toplu bilgilerini sağlar. Bu kategorideki bilgiler Application Insights customMetrics tablosunda toplanır ve Azure portalındaki işleve Genel Bakış sekmesinde gösterilir. Toplayıcıyı nasıl yapılandırdığınıza bağlı olarak, toplanan telemetride ayar tarafından flushTimeout belirlenen bir gecikme olabileceğini göz önünde bulundurun. Bu kategoriyi değerinden Informationfarklı bir değere ayarlarsanız, tablodaki customMetrics verileri toplamayı durdurursunuz ve genel bakış işlevi sekmesinde ölçümleri görüntülemezsiniz.

    Aşağıdaki ekran görüntüsünde, işleve Genel Bakış sekmesinde görüntülenen telemetri verileri gösterilmektedirHost.Aggregator:

    İşleve Genel Bakış sekmesinde görüntülenen Host.Aggregator telemetrisini gösteren ekran görüntüsü.

    Aşağıdaki ekran görüntüsünde Application Insights tablosundaki telemetri verileri gösterilmektedir Host.Aggregator customMetrics :

    customMetrics Application Insights tablosunda Host.Aggregator telemetrisini gösteren ekran görüntüsü.

  • Host.Results kategorisi: Yapılandırma kategorilerinde açıklandığı gibi, bu kategori bir işlev çağrısının başarısını veya başarısızlığını gösteren çalışma zamanı tarafından oluşturulan günlükleri sağlar. Bu kategorideki bilgiler Application Insights requests tablosunda toplanır ve işlev İzleyicisi sekmesinde ve farklı Application Insights panolarında (Performans, Hatalar vb.) gösterilir. Bu kategoriyi değerinden Informationfarklı bir değere ayarlarsanız, yalnızca tanımlanan günlük düzeyinde (veya daha yüksek) oluşturulan telemetri verilerini toplarsınız. Örneğin, bunu olarak error ayarlamak yalnızca başarısız yürütmeler için istek verilerinin izlenmesine neden olur.

    Aşağıdaki ekran görüntüsünde Host.Results , işlev İzleyicisi sekmesinde görüntülenen telemetri verileri gösterilmektedir:

    İşlev İzleyicisi sekmesinde Host.Results telemetrisini gösteren ekran görüntüsü.

    Aşağıdaki ekran görüntüsünde Application Insights Performans panosunda görüntülenen telemetri verileri gösterilmektedir Host.Results :

    Application Insights Performans panosunda Host.Results telemetrisini gösteren ekran görüntüsü.

  • Host.Aggregator ve Host.Results: Her iki kategori de işlev yürütmeleri hakkında iyi içgörüler sağlar. Gerekirse, bu kategorilerden birinden ayrıntılı bilgileri kaldırabilir, böylece diğerini izleme ve uyarı için kullanabilirsiniz. Bu ayara ilişkin örneği aşağıda bulabilirsiniz:

{
  "version": "2.0",  
  "logging": {
    "logLevel": {
      "default": "Warning",
      "Function": "Error",
      "Host.Aggregator": "Error",
      "Host.Results": "Information", 
      "Function.Function1": "Information",
      "Function.Function1.User": "Error"
    },
    "applicationInsights": {
      "samplingSettings": {
        "isEnabled": true,
        "maxTelemetryItemsPerSecond": 1,
        "excludedTypes": "Exception"
      }
    }
  }
} 

Bu yapılandırmayla:

  • Tüm işlevler ve telemetri kategorileri için varsayılan değer olarak ayarlanır Warning (Microsoft ve Çalışan kategorileri dahil). Bu nedenle, varsayılan olarak çalışma zamanı ve özel günlük tarafından oluşturulan tüm hatalar ve uyarılar toplanır.

  • Function Kategori günlüğü düzeyi olarak Errorayarlanır, bu nedenle tüm işlevler için varsayılan olarak yalnızca özel durumlar ve hata günlükleri toplanır. Bağımlılıklar, kullanıcı tarafından oluşturulan ölçümler ve kullanıcı tarafından oluşturulan olaylar atlanır.

  • Kategori için Host.Aggregator günlük düzeyine Error ayarlandığından, işlev çağrılarından toplanan bilgiler Application Insights tablosunda toplanmaz customMetrics ve yürütme sayısı (toplam, başarılı ve başarısız) hakkındaki bilgiler işleve genel bakış panosunda gösterilmez.

  • Kategori için Host.Results tüm konak yürütme bilgileri Application Insights tablosunda toplanır requests . Tüm çağrı sonuçları İzleyici işlevi panosunda ve Application Insights panolarında gösterilir.

  • adlı Function1işlev için günlük düzeyini olarak Informationayarlarız. Bu nedenle, bu somut işlev için tüm telemetri toplanır (bağımlılık, özel ölçümler ve özel olaylar). Aynı işlev için kategorisini Function1.User (kullanıcı tarafından oluşturulan izlemeler) Errorolarak ayarladık, bu nedenle yalnızca özel hata günlüğü toplanır.

    Not

    İşlev başına yapılandırma, İşlevler çalışma zamanının v1.x dosyasında desteklenmez.

  • Örnekleme, özel durumlar hariç olmak üzere her tür için saniyede bir telemetri öğesi gönderecek şekilde yapılandırılır. Bu örnekleme, işlev uygulamamızı çalıştıran her sunucu konağı için gerçekleşir. Bu nedenle, dört örneğimiz varsa, bu yapılandırma saniyede tür başına dört telemetri öğesi ve oluşabilecek tüm özel durumları gösterir.

    Not

    İstek oranı ve özel durum oranı gibi ölçüm sayıları örnekleme oranını telafi edecek şekilde ayarlanır ve ölçüm Gezgini'nde yaklaşık doğru değerleri gösterir.

İpucu

Günlüğe kaydetme, izleme ve uyarı gereksinimlerinizi karşıladığınızdan emin olmak için farklı yapılandırmalarla denemeler yapın. Ayrıca, beklenmeyen hatalar veya arızalar durumunda ayrıntılı tanılamalara sahip olduğunuzdan emin olun.

Çalışma zamanında izleme yapılandırmasını geçersiz kılma

Son olarak, üretimdeki belirli bir kategorinin günlüğe kaydetme davranışını hızla değiştirmeniz gereken ve yalnızca host.json dosyasında değişiklik yapmak için dağıtımın tamamını yapmak istemediğiniz durumlar olabilir. Bu gibi durumlarda, host.json değerlerini geçersiz kılabilirsiniz.

Bu değerleri Uygulama ayarları düzeyinde yapılandırmak (ve yalnızca host.json değişiklikleri yeniden dağıtmaktan kaçınmak) için, uygulama ayarı olarak eşdeğer bir değer oluşturarak belirli host.json değerleri geçersiz kılmanız gerekir. Çalışma zamanı biçiminde AzureFunctionsJobHost__path__to__settingbir uygulama ayarı bulduğunda, JSON'da bulunan path.to.setting eşdeğer host.json ayarı geçersiz kılar. Uygulama ayarı olarak ifade edildiğinde, JSON hiyerarşisini göstermek için kullanılan noktanın () yerine çift alt çizgi (__.) kullanılır. Örneğin, içinde tek tek işlev günlüğü düzeylerini host.jsonyapılandırmak için aşağıdaki uygulama ayarlarını kullanabilirsiniz.

Host.json yolu Uygulama ayarı
logging.logLevel.default AzureFunctionsJobHost__logging__logLevel__default
logging.logLevel.Host.Aggregator AzureFunctionsJobHost__logging__logLevel__Host__Aggregator
logging.logLevel.Function AzureFunctionsJobHost__logging__logLevel__Function
logging.logLevel.Function.Function1 AzureFunctionsJobHost__logging__logLevel__Function__Function1
logging.logLevel.Function.Function1.User AzureFunctionsJobHost__logging__logLevel__Function__Function1__User

Ayarları doğrudan Azure portal İşlevi Uygulama Yapılandırması bölmesinden veya bir Azure CLI veya PowerShell betiği kullanarak geçersiz kılabilirsiniz.

az functionapp config appsettings set --name MyFunctionApp --resource-group MyResourceGroup --settings "AzureFunctionsJobHost__logging__logLevel__Host__Aggregator=Information"

Not

uygulama ayarlarını değiştirerek host.json öğesini geçersiz kılarak işlev uygulamanızı yeniden başlatır. Bir Elastik Premium planında veya Ayrılmış (App Service) planında Linux üzerinde çalıştırılırken nokta içeren uygulama ayarları desteklenmez. Bu barındırma ortamlarında host.json dosyasını kullanmaya devam etmelisiniz.

Sistem durumu denetimini kullanarak işlev uygulamalarını izleme

Premium (Elastik Premium) ve Ayrılmış (App Service) planlarında işlev uygulamalarını izlemek için Sistem Durumu Denetimi özelliğini kullanabilirsiniz. Sistem durumu denetimi Tüketim planı için bir seçenek değildir. Yapılandırmayı öğrenmek için bkz . Sistem Durumu denetimini kullanarak App Service örneklerini izleme. İşlev uygulamanızın, sistem durumu denetiminin parametresinde yapılandırılan Path aynı uç noktada 200 HTTP durum koduyla yanıt veren bir HTTP tetikleyici işlevi olmalıdır. Ayrıca bu işlevin, bağımlı hizmetlere ulaşılabilir ve çalışır durumda olduğundan emin olmak için ek denetimler gerçekleştirmesini sağlayabilirsiniz.

İzleme hakkında daha fazla bilgi için bkz: