Azure Işlevlerini ve Event Hubs izleme

Event Hubs
İşlevler
Application Insights
İzleyici

İ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:

Uygulama Eşlemesi

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.

Uçtan uca Işlem

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

Bağımlılıklar tablosu

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:

Tanılama kimliği özelliği

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.

Batch olayları bağıntı

ö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.
  • dispatchTimeMilliseconds olay 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

Ayrıntılı olay Işleme

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 gecikmesi görselleştirme

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

Dağıtım gecikme süresi Özeti

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

Bölümler arasında ileti dağıtımı

Ö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

Örnekler arasında ileti dağıtımı

Ö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

Örnekleri ve ayrılan örnekleri yürütme

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

Belirli bir Işlev yürütmesi için tüm telemetri

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))

Bir olay için uçtan uca gecikme süresi

Sonraki adımlar

Daha fazla bilgi edinmek için bu ilgili makaleleri gözden geçirmeyi göz önünde bulundurun: