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 Uygulama Analizler, 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. uygulama Analizler tümleştirmesi genellikle işlev uygulamanız oluşturulduğunda etkinleştirilir. Uygulamanızda izleme anahtarı ayarlı değilse, önce Uygulama Analizler tümleştirmesini etkinleştirmeniz gerekir.

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

Bu makalenin ilerleyen bölümlerinde, işlevlerinizin Application Analizler'e gönderdiği verileri yapılandırmayı ve özelleştirmeyi öğreneceksiniz. Ortak günlük yapılandırması host.json dosyasında ayarlanabilir. 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 sağlayan 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. Bu, projenizde host.json dosyasını yeniden yayımlamak zorunda 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 ardından bunları "Çalışan" kategorisi aracılığıyla Uygulama Analizler gönderir. Bazı dil yığınları bunun yerine günlükleri doğrudan Uygulama Analizler göndermenize olanak tanıyarak, yazdığınız günlüklerin nasıl yayıldığında tam denetim sahibi olmanıza olanak sağlar. Günlük işlem hattı olarak worker -> Functions host -> Application Insightsworker -> Application Insightsdeğişir.

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

Dil yığını Özel günlüklerin yapılandırması
.NET (işlem içi model) host.json
.NET (yalıtılmış model) Varsayılan olarak: host.json
Günlükleri doğrudan gönderme seçeneği: HostBuilder'da Uygulama Analizler yapılandırma
Node.JS host.json
Python host.json
Java Varsayılan olarak: host.json
Günlükleri doğrudan gönderme seçeneği: Uygulama Analizler Java aracısını yapılandırma
PowerShell host.json

Özel uygulama günlükleri doğrudan gönderildiğinde, konak artık bunları 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ükler için geçerlidir ve bu makalede açıklanan diğer çalışma zamanı günlüklerinin davranışını değiştirmez. 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 grafik, çalışma zamanının oluşturduğu ana günlük kategorilerini açıklar:

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 üzerini Warning filtrelerseniz, 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 üzerini Warning filtrelerseniz, 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 Analizler 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 Analizler'e 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 örneklerde aşağıdaki kurallara göre günlüğe kaydetme işlemi tanımlıyoruz:

  • 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. Bunları çok yüksek bir düzeye (özellikle de daha Informationyüksek) ayarlamak ölçüm ve performans verilerinin kaybolmasına neden olabilir.
  • İşlev çalıştırmaları için günlüğe Informationkaydetme olarak ayarlanır. Bu, gerektiğinde veya yerel geliştirmede Debug geçersiz kılınabilir.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 Analizler tablolarında depolayarak Application Analizler ile tümleşir. Kategori günlüğü düzeyinin farklı Information bir değere ayarlanması, telemetrinin bu tablolara akmasını engeller. Sonuç olarak, Uygulama Analizler veya İşlev İzleyicisi sekmesinde ilgili verileri göremezsiniz.

Yukarıdaki örneklerden:

  • Host.Results Kategori günlük düzeyine Error ayarlanırsa, başarısız işlev yürütmeleri için tabloda yalnızca konak yürütme telemetri olaylarını requests toplar ve hem Uygulama Analizlerhem de İşlev İzleyicisi sekmesinde başarılı yürütmelerin konak yürütme ayrıntılarının görüntülenmesini engeller.
  • Function Kategori günlük düzeyine Error ayarlanırsa, tüm işlevler için , customMetricsve ile ilgili dependenciesişlev telemetri verilerini toplamayı durdurur ve customEvents Uygulama Analizler bu verilerden herhangi birini görmeyi engeller. Yalnızca düzeyle Error günlüğe kaydedilmiş olarak toplanırtraces.

Her iki durumda da Uygulama Analizler ve İşlev İzleyicisi sekmesinde hata ve özel durum verilerini toplamaya devam edebilirsiniz. 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. Bir örnek aşağıda verilmiştir:

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

Örneklemeyi yapılandırma

Uygulama Analizler, yoğun yük olduğu zamanlarda tamamlanmış 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 dosyasında 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 (isteklerin) ve özel durumların günlüğe kaydedilmesini sağlar.

Projeniz el ile telemetri izlemesi yapmak için Uygulama Analizler SDK'sına bağımlılık alıyorsa, örnekleme yapılandırmanız işlev uygulamanızdaki örnekleme yapılandırmasından farklıysa garip 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. Uygulama Analizler Örnekleme.

SQL sorgu koleksiyonunu etkinleştirme

Uygulama Analizler 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ğıdakileri ayarlayarak (en azından) SQL sorgusu 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 Uygulama Analizler 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ı ekleyebilirsiniz. Ayarın aşağıdaki değeri biçiminde <DESTINATION>:<VERBOSITY>olmalıdır:

Ö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 Uygulama Analizler'nin 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 Analizler'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 Analizler'a veri göndermesi için aşağıdaki uygulama ayarlarından yalnızca birini kullanarak Application Analizler kaynağına bağlanması gerekir:

Ayar adı Açıklama
APPLICATIONINSIGHTS_CONNECTION_STRING Bu, Application Analizler örneğiniz bağımsız bir bulutta çalıştığında gereken önerilen ayardır. bağlantı dizesi diğer yeni özellikleri destekler.
APPINSIGHTS_INSTRUMENTATIONKEY Application Analizler tarafından bağlantı dizesi ayarına göre kullanım dışı bırakılan eski ayar.

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

Portalda yeni işlev uygulaması

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

Screenshot of enabling Application Insights while creating a function app.

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

Mevcut bir işlev uygulamasına ekleme

İşlev uygulamanızla bir Uygulama Analizler 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 Uygulama Analizler zaten etkinleştirilmiş olabilir.

    Screenshot of enabling Application Insights from the portal.

  3. Aşağıdaki tabloda belirtilen ayarları kullanarak Kaynağınızı değiştirin'i genişletin ve bir Application Analizler 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 Batı Avrupa Mümkünse işlev uygulamanızla aynı bölgeyi veya bu bölgeye yakın olan bölgeyi kullanın.

    Screenshot of creating an Application Insights resource.

  4. Uygula'yı seçin.

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

  5. İşlev uygulamanızda, Ayarlar altında Yapılandırma'yı ve ardından Uygulama ayarları'nı seçin. APPLICATIONINSIGHTS_CONNECTION_STRING adlı bir ayar görürseniz Application Insights tümleştirmesi Azure’da çalışan işlev uygulamanız için etkinleştirilmiş demektir. Herhangi bir nedenle bu ayar yoksa, değer olarak Application Analizler bağlantı dizesi'nizi kullanarak ekleyin.

Not

Eski işlev uygulamaları yerine APPLICATIONINSIGHTS_CONNECTION_STRINGkullanıyor APPINSIGHTS_INSTRUMENTATIONKEY olabilir. Mümkün olduğunda uygulamanızı izleme anahtarı yerine bağlantı dizesi kullanacak şekilde güncelleştirmeniz gerekir.

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

İşlevler'in ilk sürümleri artık önerilen yerleşik izlemeyi kullanıyordu. Uygulama Analizler 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 Uygulama Analizler öneririz. Yerleşik günlük kaydı üretimde kullanılıyorsa 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üke sahip 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üketileceğine 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 bulundurabilirsiniz:

  • Örneklemeyi kullanma: Daha önce de belirtildiği gibi, istatistiksel olarak doğru bir analizi sürdürürken alınan telemetri olaylarının hacmini önemli ölçüde azaltmaya yardımcı olacaktır. Ö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. Artık, işlevlerinizi düzgün bir şekilde izleyip tanılamak için düzey olarak Information hangi kategorileri ayarlamak istediğinize karar vekleyebilirsiniz.

  • İş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. Bu noktada, kullanıcı tarafından oluşturulan günlüklerin düzeyinde toplanmasından kaçınmak için kategoriyi Function.<YOUR_FUNCTION_NAME>.UserError veya Warning günlük düzeyini ayarlayın.Information

  • 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 Analizler customMetrics tablosunda toplanır ve Azure portalındaki İşleve Genel Bakış sekmesinde gösterilir. Toplayıcıyı nasıl yapılandırdığınıza bağlı olarak, toplanan telemetride tarafından belirlenen flushTimeoutbir gecikme olacağını 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:

    Screenshot of Host.Aggregator telemetry displayed in function Overview tab.

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

    Screenshot of Host.Aggregator telemetry in customMetrics Application Insights table.

  • 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 Uygulama Analizler requests tablosunda toplanır ve İşlev İzleyicisi sekmesinde ve farklı Uygulama Analizler 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:

    Screenshot of Host.Results telemetry in function Monitor tab.

    Aşağıdaki ekran görüntüsünde, Uygulama Analizler Performansı panosunda görüntülenen telemetri verileri gösterilmektedirHost.Results:

    Screenshot of Host.Results telemetry in Application Insights Performance dashboard.

  • 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 şunları yapacaksınız:

  • 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, dolayısıyla 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 Uygulama Analizler 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 Uygulama Analizler tablosunda toplanırrequests. Tüm çağrı sonuçları İzleyici panosunda ve Uygulama Analizler panolarında gösterilir.

  • adlı Function1işlev için günlük düzeyini olarak ayarladık Information. 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 Function1.User için kategori (kullanıcı tarafından oluşturulan izlemeler) olarak ayarlanır Error, bu nedenle yalnızca özel hata günlüğü toplanır.

    Not

    İşlev başına yapılandırma v1.x'te 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 her tür için saniyede dört telemetri öğesi ve oluşabilecek tüm özel durumları yayar.

    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 için (ve yalnızca host.json değişikliklerinde yeniden dağıtılmasını önlemek için), uygulama ayarı olarak eşdeğer bir değer oluşturarak belirli host.json değerleri geçersiz kılmalısınız. Ç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 nokta (.) yerine çift alt çizgi (__ kullanılır). Örneğin, yukarıdaki gibi host.json tek tek işlev günlüğü düzeylerini yapı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ı dikey penceresinden 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

Sistem Durumu Denetimi özelliği Premium (Elastik Premium) ve Ayrılmış (App Service) planlarında işlev uygulamalarını izlemek için kullanılabilir. 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 'Path' parametresinde yapılandırılan 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.

Sonraki adımlar

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