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 Insights
değ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 kategorisiFunction.<FUNCTION_NAME>.User
atanı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.RpcFunctionInvocationDispatcher de günlüğe kaydedilebilir. Bu günlükler düzeyinde yazılır Information . |
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ır
Warning
. Host.Aggregator
veHost.Results
daha düşük düzeylere ayarlanır. Günlük düzeylerinin çok yüksek (özellikle dahaInformation
yüksek) ayarlanması ölçüm ve performans verilerinin kaybolmasına neden olabilir.- İşlev çalıştırmaları için günlüğe
Information
kaydetme 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.Aggregator
dışı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 Information
farklı 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üzeyineError
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 ,customMetrics
ve ile ilgilidependencies
işlev telemetri verilerini toplamayı durdurur vecustomEvents
application insights'ta bu verilerden herhangi birini görüntülemenizi engeller.Function
Azure yalnızcatraces
düzeyinde günlüğe kaydedilenleriError
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ızda AppInsights , işlev uygulamanızda Application Insights'ın etkinleştirildiğinden emin olun.Hedefi olarak Blob ayarladığı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 , Warning ve Verbose değerleridirNone .olarak Verbose ayarlandığı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 None
devre 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.
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.
Azure portalında işlev uygulamasını arayıp seçin ve ardından işlev uygulamanızı seçin.
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.
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. 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.
İşlev uygulamanızda Ayarlar'ı genişletin ve ortam değişkenleri'ne tıklayın. Uygulama ayarları sekmesinde adlı bir uygulama ayarı
APPLICATIONINSIGHTS_CONNECTION_STRING
gö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_STRING
kullanabilirAPPINSIGHTS_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üzeyeInformation
ayarlamak istediğiniz kategorileri belirleyebilirsiniz.İşlev telemetrinizi ayarlayın: Varsayılan günlük düzeyi veya
Warning
olarak ayarlandığındaError
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çinFunction.<YOUR_FUNCTION_NAME>
bunu olarakInformation
ayarlayın. Kullanıcı tarafından oluşturulan günlüklerin düzeyinde toplanmasındanInformation
kaçınmak için kategoriyiFunction.<YOUR_FUNCTION_NAME>.User
veyaWarning
günlük düzeyineError
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ındanflushTimeout
belirlenen bir gecikme olabileceğini göz önünde bulundurun. Bu kategoriyi değerindenInformation
farklı bir değere ayarlarsanız, tablodakicustomMetrics
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österilmektedir
Host.Aggregator
:Aşağıdaki ekran görüntüsünde Application Insights tablosundaki telemetri verileri gösterilmektedir
Host.Aggregator
customMetrics
: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ğerindenInformation
farklı 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 olarakerror
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:Aşağıdaki ekran görüntüsünde Application Insights Performans panosunda görüntülenen telemetri verileri gösterilmektedir
Host.Results
: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 olarakError
ayarlanı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üzeyineError
ayarlandığından, işlev çağrılarından toplanan bilgiler Application Insights tablosunda toplanmazcustomMetrics
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ırrequests
. Tüm çağrı sonuçları İzleyici işlevi panosunda ve Application Insights panolarında gösterilir.adlı
Function1
işlev için günlük düzeyini olarakInformation
ayarları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 kategorisiniFunction1.User
(kullanıcı tarafından oluşturulan izlemeler)Error
olarak 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__setting
bir 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.json
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ı 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.
İlgili içerik
İzleme hakkında daha fazla bilgi için bkz: