İzleme, sistemlerinizin davranış ve durumuyla ilgili öngörüler sağlar ve ortamın bir bütünsel görünümünü, geçmiş eğilimleri, farklı faktörleri ve performans, tüketim veya hata oranını ölçmenize yardımcı olur.
Azure işlevleri Application Insightsile yerleşik tümleştirme sunar. Application Insights, işlev uygulama örneklerinin sayısı veya bir işlevin istek ve bağımlılık telemetrisi gibi bilgileri alabilirsiniz. işlevlerle ve Event Hubs çalışırken Application Insights, olay hub 'ına giden bağımlılık telemetriler izleyebilir, kuyrukta harcanan süreyi hesaplayabilirsiniz ve Event Hubs ile bağlı sistemin uçtan uca akışını gösteriyor olabilir.
bu bölümde, Event Hubs plus işlevleri çözümünüz için Application Insights alabileceğiniz yararlı özellikler ve öngörüler sunulmaktadır.
Uygulama Eşlemesi
Uygulama Haritası , bir sistemdeki bileşenlerin birbirleriyle nasıl etkileşim kurduğuna gösterir. Application Insights sağladığı bağımlılık telemetrisi nedeniyle, her bir işlev yürütmesinin ortalaması ve Event Hubs bir etkinliğin ortalama süresi ve kırmızı renkte işaretlenmiş işlemleri göstermek dahil olmak üzere olayların akışını Azure işlevleri ile Event Hubs arasında eşler.
sisteminizde beklenen yükü gönderdikten sonra, Azure portalApplication Insights adresine gidebilir ve kenar çubuğundan uygulama haritası' nı seçebilirsiniz. Aşağıda, bir aşağı akış veritabanına yazarken üç işlev, üç olay hub 'ı ve görünen hata gösteren bir harita verilmiştir:

Uçtan uca işlem ayrıntıları
Uçtan uca işlem ayrıntıları, sistem bileşenlerinizin, kronolojik sırada, birbirleriyle nasıl etkileşime gireceğini gösterir. Bu görünüm Ayrıca bir olayın sırada ne kadar süre harcandığını gösterir. Ayrıca, bu görünümden her bir bileşenin telemetrisine gidebilir, bu da bir sorun oluştuğunda aynı isteğin içindeki bileşenler arasında sorun gidermeyi kolaylaştırır.

Platform ölçümleri ve telemetri
Event Hubs ve Azure Işlevleri için Azure Izleyici 'de platform tarafından oluşturulan ölçümler, çözüm davranışının ve sistem durumunun genel olarak izlenmesi için kullanılabilir:
Azure izleyici 'de azure Event Hubs ölçümleri , Event Hubs (gelen Isteklerin, giden Isteklerin, kısıtlanmış Isteklerin, başarılı Istekler, gelen iletiler, giden Iletiler, yakalanan Iletiler, gelen baytlar, giden baytlar, yakalanan baytlar, Kullanıcı hataları) için yararlı öngörüleri yakalamaya yöneliktir.
Azure Işlevleri ölçümleri, Tüketim planının kullanımını ve maliyetini anlamakIçin kullanılabilecek işlev yürütme sayısı ve işlev yürütme birimlerinin eklenmesiyle birlikte Azure App Serviceölçümlerin çoğunu paylaşır. Diğer ilgi ölçümleri arasında bağlantılar, veri verileri, veri çıkışı, ortalama bellek çalışma kümesi, Iş parçacığı sayısı, Istekler ve yanıt süresi bulunur.
Azure işlevleri, işlevler ana bilgisayar ve işlev yürütmeleri hakkında gelişmiş ve ayrıntılı telemetri ve öngörüler sağlamak için Application Insights ile tümleşir. daha fazla bilgi için bkz. Application Insights Azure işlevleri telemetrisini çözümleme. bir topolojiyi izlemek için Application Insights kullanırken, kullanılabilen çeşitli konfigürasyonlar vardır. Daha fazla bilgi için bkz. Azure işlevleri için izlemeyi yapılandırma.
Aşağıda, izleme tablosunda oluşturulan Event Hubs tetiklenen işlevler için ek telemetri örneği verilmiştir:
Tetikleyici ayrıntıları: Partionıd: 6, konum: 30095894584-30095919248, EnqueueTimeUtc: 2021-05-06T02:02:59.2490000 Z-2021-05-06T02:02:59.2490000 Z, SequenceNumber: 814940-815019, sayı: 80
Bu bilgiler Event Hubs uzantısı 4.2.0 veya sonraki bir sürümünü kullanmanızı gerektirir. Bu veriler, işlev yürütmeyi tetikleyen ve sorgulama ve Öngörüler için kullanılabilecek ileti hakkında bilgi içerdiğinden çok yararlı olur. İşlevin her tetiklenişinde aşağıdaki verileri içerir:
- Bölüm kimliği (6)
- Bölüm fark aralığı (30095894584-30095919248)
- UTC olarak sıraya alma zaman aralığı (2021-05-06t02:02:59.2490000 z-2021-05-06T02:02:59.2490000 z)
- Sıra numarası aralığı 814940-815019
- Ve mesaj sayısı (80)
bu telemetriyi nasıl kullanacağınızı gösteren örnekler için örnek Application Insights sorguları bölümüne bakın.
Farklı diller için özel telemetri de mümkündür (C# sınıf kitaplığı, c# yalıtılmış, c# betiği, JavaScript, Java, PowerShellve Python). bu günlüğe kaydetme, Application Insights izleme tablosunda görüntülenir. Application Insights, kendi girdilerinizi oluşturabilir ve verileri sorgulamak ve özel panolar oluşturmak için kullanılabilecek özel boyutlar ekleyebilirsiniz.
son olarak, işlev uygulamanız bir çıkış bağlaması kullanarak bir olay hub 'ına bağlanırsa, girdiler Application Insights bağımlılıklar tablosunada yazılır.

Event Hubs için bağıntı olay yüküne eklenir ve olaylarda bir Tanılama kimliği özelliği görürsünüz:

bu, aynı zamanda işlevler tarafından oluşturulan telemetri ' de işlem kimliği ve işlem bağlantıları olarak kullanılan W3C izleme bağlam biçimini izler ve bu da Application Insights, dağıtıldıklarında bile olay hub 'ı olayları ve işlev yürütmeleri arasında bağıntı oluşturmasına olanak tanır.

örnek Application Insights sorguları
Azure işlevleri ile Event Hubs izlerken yardımcı Application Insights sorgularının bir listesi aşağıda verilmiştir. Bu sorgu , 4.2.0 ve üzeri Event Hubs uzantısı tarafından yayılantelemetri kullanarak Event hub ile tetiklenen işlev için ayrıntılı bilgileri görüntüler.
Application Insights ' de örnekleme etkinleştirildiğinde verilerde boşluklar olabilir.
Ayrıntılı olay işleme bilgileri
Veriler yalnızca, toplu dağıtım kullanıldığında doğru biçimde yayınlanır. Batch dağıtımı, işlevin her yürütme için birden çok olayı kabul ettiği anlamına gelir ve bu da performans için önerilir. Aşağıdaki noktaları göz önünde bulundurun:
dispatchTimeMillisecondsDeğer, olayın olay hub 'ına yazıldığı ve işlem için işlev uygulaması tarafından alındığı zaman arasındaki sürenin uzunluğunu yaklaştırır.dispatchTimeMillisecondsolay hub sunucusu ve işlev uygulaması arasındaki saat kayması nedeniyle negatif veya yanlış olabilir.- Event Hubs bölümler sırayla işlenir. Önceki tüm iletiler işlenene kadar işlenmek üzere işlev koduna bir ileti gönderilecektir. Daha uzun yürütme süreleri gönderme gecikmelerine neden olacağı için işlevlerinizin yürütme süresini izleyin.
- Hesaplama, toplu işteki ilk iletinin Enqueuesaatini kullanır. Toplu işteki diğer iletiler için gönderme süreleri daha düşük olabilir.
dispatchTimeMilliseconds, zaman içindeki noktaya göre belirlenir.- Sıra numaraları her bölümden oluşur ve Event Hubs tam bir kez ileti teslimini garanti edemediğinden yinelenen işleme meydana gelebilir.
traces
| where message startswith "Trigger Details: Parti"
| parse message with * "tionId: " partitionId:string ", Offset: "
offsetStart:string "-" offsetEnd:string", EnqueueTimeUtc: "
enqueueTimeStart:datetime "Z-" enqueueTimeEnd:datetime ", SequenceNumber: "
sequenceNumberStart:string "-" sequenceNumberEnd:string ", Count: "
messageCount:int
| extend dispatchTimeMilliseconds = (timestamp - enqueueTimeStart) / 1ms
| project timestamp, cloud_RoleInstance, operation_Name, processId =
customDimensions.ProcessId, partitionId, messageCount, sequenceNumberStart,
sequenceNumberEnd, enqueueTimeStart, enqueueTimeEnd, dispatchTimeMilliseconds

Dağıtım gecikmesi görselleştirme
Bu sorgu, belirli bir olay hub 'ı tetiklenen işlev için 50. ve 90. yüzdebirlik olay dağıtım gecikmesini görselleştirir. Daha fazla ayrıntı ve Not için yukarıdaki sorguya bakın.
traces
| where operation_Name == "<ENTER THE NAME OF YOUR FUNCTION HERE>"
| where message startswith "Trigger Details: Parti"
| parse message with * "tionId: " partitionId:string ", Offset: "
offsetStart:string "-" offsetEnd:string", EnqueueTimeUtc: "
enqueueTimeStart:datetime "Z-" enqueueTimeEnd:datetime ", SequenceNumber: "
sequenceNumberStart:string "-" sequenceNumberEnd:string ", Count: "
messageCount:int
| extend dispatchTimeMilliseconds = (timestamp - enqueueTimeStart) / 1ms
| summarize percentiles(dispatchTimeMilliseconds, 50, 90) by bin(timestamp, 5m)
| render timechart

Dağıtım gecikme süresi Özeti
Bu sorgu yukarıya benzerdir, ancak bir Özet görünümünü gösterir.
traces
| where message startswith "Trigger Details: Parti"
| parse message with * "tionId: " partitionId:string ", Offset: "
offsetStart:string "-" offsetEnd:string", EnqueueTimeUtc: "
enqueueTimeStart:datetime "Z-" enqueueTimeEnd:datetime ", SequenceNumber: "
sequenceNumberStart:string "-" sequenceNumberEnd:string ", Count: "
messageCount:int
| extend dispatchTimeMilliseconds = (timestamp - enqueueTimeStart) / 1ms
| summarize messageCount = sum(messageCount),
percentiles(dispatchTimeMilliseconds, 50, 90, 99, 99.9, 99.99) by operation_Name

Bölümler arasında ileti dağıtımı
Bu sorgu, bölümler arasında ileti dağıtımını görselleştirmeyi gösterir.
traces
| where message startswith "Trigger Details: Parti"
| parse message with * "tionId: " partitionId:string ", Offset: "
offsetStart:string "-" offsetEnd:string", EnqueueTimeUtc: "
enqueueTimeStart:datetime "Z-" enqueueTimeEnd:datetime ", SequenceNumber: "
sequenceNumberStart:string "-" sequenceNumberEnd:string ", Count: "
messageCount:int
| summarize messageCount = sum(messageCount) by partitionId, bin(timestamp, 5m)
| render areachart kind=stacked

Örnekler arasında ileti dağıtımı
Bu sorgu, örneklerin tamamında ileti dağıtımını görselleştirmeyi gösterir.
traces
| where message startswith "Trigger Details: Parti"
| parse message with * "tionId: " partitionId:string ", Offset: "
offsetStart:string "-" offsetEnd:string", EnqueueTimeUtc: "
enqueueTimeStart:datetime "Z-" enqueueTimeEnd:datetime ", SequenceNumber: "
sequenceNumberStart:string "-" sequenceNumberEnd:string ", Count: "
messageCount:int
| summarize messageCount = sum(messageCount) by cloud_RoleInstance,
bin(timestamp, 5m)
| render areachart kind=stacked

Örnekleri ve ayrılan örnekleri yürütme
Bu sorgu, Event Hubs olayları işleyen Azure Işlevleri örneklerinin sayısını ve toplam örnek sayısını (işleme ve kira süresini bekliyor) görselleştirmeyi gösterir. Çoğu zaman aynı olması gerekir.
traces
| where message startswith "Trigger Details: Parti"
| summarize type = "Executing Instances", Count = dcount(cloud_RoleInstance) by
bin(timestamp, 60s)
| union (
traces
| summarize type = "Allocated Instances", Count = dcount(cloud_RoleInstance) by
bin(timestamp, 60s)
)
| project timestamp, type, Count
| render timechart

Belirli bir Işlev yürütmesi için tüm telemetri
operation_Id alanı, Application Insights farklı tablolar arasında kullanılabilir. Event Hubs tetiklenen Azure Işlevleri için aşağıdaki sorgu, tetikleyici bilgileri, Işlev kodu içindeki günlüklerdeki telemetri ve bağımlılıklar ve özel durumlar ile sonuçlanır:
union isfuzzy=true requests, exceptions, traces, dependencies
| where * has "<ENTER THE OPERATION_ID OF YOUR FUNCTION EXECUTION HERE>"
| order by timestamp asc

Bir olay için uçtan uca gecikme süresi
Tetikleyici ayrıntısı izlemesinde Enqueuetimeutc özelliği, işlevin işlediği her bir toplu işlemin sıraya alma süresini gösteriyorsa, aralarında Event Hubs iki işlev arasındaki olayların uçtan uca gecikmesini hesaplamak için daha gelişmiş bir sorgu kullanılabilir. Bu sorgu, ikinci işlevin isteğindeki işlem bağlantılarını (varsa) genişletir ve kendi bitiş saatini ilk işlev başlangıç zamanının karşılık gelen işlem KIMLIĞIYLE eşler.
let start = view(){
requests
| where operation_Name == "FirstFunction"
| project start_t = timestamp, first_operation_Id = operation_Id
};
let link = view(){
requests
| where operation_Name == "SecondFunction"
| mv-expand ex = parse_json(tostring(customDimensions["_MS.links"]))
| extend parent = case(isnotempty(ex.operation_Id), ex.operation_Id, operation_Id )
| project first_operation_Id = parent, second_operation_Id = operation_Id
};
let finish = view(){
traces
| where customDimensions["EventName"] == "FunctionCompleted" and operation_Name
== "SecondFunction"
| project end_t = timestamp, second_operation_Id = operation_Id
};
start
| join kind=inner (
link
| join kind=inner finish on second_operation_Id
) on first_operation_Id
| project start_t, end_t, first_operation_Id, second_operation_Id
| summarize avg(datetime_diff('second', end_t, start_t))

Sonraki adımlar
Daha fazla bilgi edinmek için bu ilgili makaleleri gözden geçirmeyi göz önünde bulundurun:
- Sunucusuz olay işlemeyi izleme
- Application Insights 'de Azure işlevleri telemetrisini çözümleyin
- Azure Işlevleri için izlemeyi yapılandırma
- Application Insights 'de Azure işlevleri telemetrisini çözümleyin
- Azure Izleyici 'de ölçümler-Azure Event Hubs
- Kusto Sorgu Dili
İlgili kaynaklar
- Sunucusuz olay Işlemesini izlemek sunucusuz olay odaklı mimarilerin izlenmesi hakkında rehberlik sağlar.
- Sunucusuz olay işleme , kod örnekleri ve önemli noktaların tartışılması ile bu türden tipik bir mimariyi ayrıntılarıyla açıklayan bir başvuru mimarisidir.
- Event Hubs ile sunucusuz olay Işlemede de toplu işleme ve filtreleme , başvuru mimarisinin bu bölümlerinin nasıl çalıştığı hakkında daha ayrıntılı bilgi için açıklanmaktadır.