Kaynak günlükleriyle ilgili sorunları giderme
Bu nasıl yapılır kılavuzu, Azure Web PubSub kaynak günlüklerine genel bir bakış ve sorunları gidermek için günlükleri kullanmaya yönelik ipuçları sağlar. Günlükleri sorun belirleme, bağlantı izleme, ileti izleme, HTTP isteği izleme ve analiz için kullanabilirsiniz.
Kaynak günlükleri nedir?
Üç tür kaynak günlüğü vardır:
- Bağlantı günlükleri, Azure Web PubSub hub bağlantıları için ayrıntılı bilgiler sağlar. Bunlar kullanıcı kimliği ve bağlantı kimliği gibi temel bilgileri veya bağlanma ve bağlantıyı kesme gibi olay bilgilerini içerebilir.
- Mesajlaşma günlükleri, Azure Web PubSub hizmeti aracılığıyla gönderilen veya alınan hub iletileri için izleme kimliği veya ileti türü gibi izleme bilgileri sağlar.
- HTTP istek günlükleri, Azure Web PubSub hizmetine http istekleri için HTTP yöntemi veya durum kodu gibi izleme bilgileri sağlar. Genellikle, bir HTTP isteği hizmete ulaştığında veya hizmetten ayrıldığında kaydedilir.
Canlı izleme aracını kullanarak kaynak günlüklerini yakalama
Azure Web PubSub hizmetindeki canlı izleme aracı, kaynak günlüklerini gerçek zamanlı olarak toplayabilir ve bu da geliştirme ortamınızdaki sorunları gidermeye yardımcı olur. Canlı izleme aracı bağlantı günlüklerini, mesajlaşma günlüklerini ve HTTP istek günlüklerini yakalayabilir.
Canlı izleme aracını kullanırken aşağıdaki faktörleri dikkate almanız gerekir:
- Canlı izleme aracının yakaladığı gerçek zamanlı kaynak günlükleri, ileti (giden trafik) olarak faturalandırılır.
- Azure Web PubSub hizmetinin Ücretsiz katman örneğinde günlük 20.000 ileti (giden trafik) sınırı vardır. Canlı izleme kullanarak beklenmedik şekilde günlük sınıra ulaşabilirsiniz.
- Canlı izleme aracı şu anda Microsoft Entra yetkilendirmesini desteklemez. Canlı izleme kullanmak için erişim anahtarlarını etkinleştirmeniz gerekir. Ayarlar'ın altında Anahtarlar'ı seçin ve ardından Erişim Anahtarı'nı etkinleştirin.
Canlı izleme aracını başlatma
Erişim anahtarını etkinleştirdiğinizde, canlı izleme aracının kimliğini doğrulamak için erişim belirtecini kullanırsınız. Aksi takdirde, canlı izleme aracının kimliğini doğrulamak için Microsoft Entra Id kullanırsınız. Azure portalında Azure SignalR Hizmeti örneğinizdeki Anahtarlar bölmesine giderek erişim anahtarının etkinleştirilip etkinleştirilmediğini öğrenebilirsiniz.
Erişim anahtarı etkinleştirildiğinde canlı izlemeyi açma
Azure portalına ve SignalR Hizmeti bölmenize gidin.
Hizmet menüsündeki İzleme'nin altında Canlı izleme ayarları'nı seçin.
Canlı İzlemeyi Etkinleştir'i seçin.
Kaydet düğmesini seçin. Değişikliklerin geçerli olması biraz zaman alır.
Güncelleştirme tamamlandığında Canlı İzleme Aracını Aç'ı seçin.
Erişim anahtarı devre dışı bırakıldığında canlı izleme aracını açma
Kendinize canlı izleme aracı API'si izni atama
Azure portalına ve SignalR Hizmeti bölmenize gidin.
Erişim denetimi (IAM) öğesini seçin.
+Ekle'yi ve ardından Rol ataması'ı seçin.
İş işlevi rolleri sekmesinde sahip rolünü SignalR Hizmeti ve ardından İleri'yi seçin.
Üyeler bölmesinde +Üyeleri seç'e tıklayın.
Üyeleri arayıp seçin ve ardından Seç'e tıklayın.
Gözden geçir ve ata'yı seçin ve tamamlanma bildirimini bekleyin.
Canlı izleme aracını etkinleştirme
Azure portalına ve SignalR Hizmeti bölmenize gidin.
Hizmet menüsündeki İzleme'nin altında Canlı izleme ayarları'nı seçin.
Canlı İzlemeyi Etkinleştir'i seçin.
Kaydet düğmesini seçin. Değişikliklerin geçerli olması biraz zaman alır.
Güncelleştirme tamamlandığında Canlı İzleme Aracını Aç'ı seçin.
Microsoft hesabınızla oturum açın
Canlı izleme aracı bir Microsoft oturum açma penceresinin açılmasına neden olur. Pencere açılmazsa tarayıcı ayarlarınızda açılır pencerelere izin verin.
Durum çubuğunda Hazır'ın görünmesini bekleyin.
Kaynak günlüklerini yakalama
Canlı izleme aracı, sorun giderme için kaynak günlüklerini yakalamanıza yardımcı olabilir.
- Yakalama , Azure Web PubSub'dan gerçek zamanlı kaynak günlüklerini yakalamaya başlar.
- Yakalanan gerçek zamanlı kaynak günlüklerini temizler .
- Günlük filtresi , yakalanan gerçek zamanlı kaynak günlüklerini belirli bir anahtar sözcükle filtreler. Boşluk, virgül ve noktalı virgül gibi ortak ayırıcılar anahtar sözcüğün bir parçası olarak değerlendirilir.
- Durum, canlı izleme aracının belirli bir örneğe bağlı olup olmadığını veya bağlantısının kesilip kesilmediğini gösterir.
Canlı izleme aracı tarafından yakalanan gerçek zamanlı kaynak günlükleri, sorun giderme için ayrıntılı bilgiler içerir.
Veri Akışı Adı | Açıklama |
---|---|
Time | Olay saatini günlüğe kaydetme |
Günlük Düzeyi | Günlük olay düzeyi (Trace , Debug , Informational Warning veya Error ) |
Olay Adı | Olayın işlem adı |
İleti | Olay için ayrıntılı ileti |
Özel Durum | Azure Web PubSub hizmetinin çalışma zamanı özel durumu |
Hub | Kullanıcı tanımlı hub adı |
Bağlantı Kimliği | Bağlantının kimliği |
Kullanıcı Kimliği | Kullanıcı kimliği |
IP | İstemci IP adresi |
Rota Şablonu | API'nin rota şablonu |
HTTP Yöntemi | HTTP yöntemi (POST , GET veya PUT DELETE ) |
URL | Tekdüzen kaynak bulucu |
İzleme Kimliği | Çağırmanın benzersiz tanımlayıcısı |
Durum Kodu | HTTP yanıt kodu |
Süre | İsteği alma ve isteği işleme arasındaki süre |
Üst bilgiler | http isteği veya yanıtı ile istemci ve sunucu tarafından geçirilen ek bilgiler |
Azure İzleyici ile kaynak günlüklerini yakalama
Kaynak günlüklerini etkinleştirme
Şu anda Azure Web PubSub, Azure Depolama ile tümleştirmeyi desteklemektedir.
Azure portala gidin.
Azure Web PubSub hizmet örneğinizin Tanılama ayarları bölmesinde + Tanılama ayarı ekle'yi seçin.
Tanılama ayarı adı alanına ayar adını girin.
Kategori ayrıntıları bölümünde ihtiyacınız olan günlük kategorilerini seçin.
Hedef ayrıntıları bölümünde Depolama hesabına arşivle'yi seçin.
Tanılama ayarını kaydetmek için Kaydet'i seçin.
Not
Depolama hesabı Azure Web PubSub hizmetiyle aynı bölgede olmalıdır.
Azure depolama hesabına arşivle
Günlükler, Tanılama ayarı bölmesinde yapılandırılan depolama hesabında depolanır. Adlı insights-logs-<CATEGORY_NAME>
kapsayıcı, kaynak günlüklerini depolamak için otomatik olarak oluşturulur. Kapsayıcının içinde günlükler dosyasında resourceId=/SUBSCRIPTIONS/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/RESOURCEGROUPS/XXXX/PROVIDERS/MICROSOFT.SIGNALRSERVICE/SIGNALR/XXX/y=YYYY/m=MM/d=DD/h=HH/m=00/PT1H.json
depolanır. Yol ve Date Time
ile resource ID
birleştirilir. Günlük dosyaları ile hour
bölünür. Dakika değeri her zaman m=00
şeklindedir.
Tüm günlükler JavaScript Nesne Gösterimi (JSON) biçiminde depolanır. Her girdinin, aşağıdaki bölümlerde açıklanan biçimi kullanan dize alanları vardır.
Arşiv günlüklerindeki JSON dizeleri aşağıdaki tablolarda listelenen öğeleri içerir.
Biçimlendir
Veri Akışı Adı | Açıklama |
---|---|
time |
Olay saatini günlüğe kaydetme |
level |
Günlük olay düzeyi |
resourceId |
Azure SignalR Hizmeti örneğinizin kaynak kimliği |
location |
Azure SignalR Hizmeti örneğinizin konumu |
category |
Günlük olayının kategorisi |
operationName |
Olayın işlem adı |
callerIpAddress |
Sunucunuzun veya istemcinizin IP adresi |
properties |
Bu günlük olayıyla ilgili ayrıntılı özellikler (aşağıdaki tabloya bakın) |
Özellikler tablosu
Veri Akışı Adı | Açıklama |
---|---|
collection |
Günlük olayının (Connection Authorization veya Throttling ) koleksiyonu |
connectionId |
Bağlantının kimliği |
userId |
Kullanıcının kimliği |
message |
Günlük olayının ayrıntılı iletisi |
hub |
Kullanıcı tanımlı hub adı |
routeTemplate |
API'nin rota şablonu |
httpMethod |
HTTP yöntemi (POST , GET veya PUT DELETE ) |
url |
Tekdüzen kaynak bulucu |
traceId |
Çağırmanın benzersiz tanımlayıcısı |
statusCode |
HTTP yanıt kodu |
duration |
İsteğin alındığı ve işlendiği zaman arasındaki süre |
headers |
http isteği veya yanıtı ile istemci ve sunucu tarafından geçirilen ek bilgiler |
Aşağıdaki kod, arşiv günlüğündeki bir JSON dizesi örneğidir:
{
"properties": {
"message": "Connection started",
"collection": "Connection",
"connectionId": "LW61bMG2VQLIMYIVBMmyXgb3c418200",
"userId": null
},
"operationName": "ConnectionStarted",
"category": "ConnectivityLogs",
"level": "Informational",
"callerIpAddress": "167.220.255.79",
"resourceId": "/SUBSCRIPTIONS/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/RESOURCEGROUPS/MYGROUP/PROVIDERS/MICROSOFT.SIGNALRSERVICE/WEBPUBSUB/MYWEBPUBSUB",
"time": "2021-09-17T05:25:05Z",
"location": "westus"
}
Azure Log Analytics'e arşivle
Log Analytics çalışma alanına günlük göndermek için:
Tanılama ayarı bölmesindeki Hedef ayrıntıları'nın altında Log Analytics çalışma alanına gönder'i seçin.
Abonelik için kullanmak istediğiniz aboneliği seçin.
Günlüklerin hedefi için Log Analytics çalışma alanı'nı seçin.
Kaynak günlüklerini görüntülemek için şu adımları izleyin:
Hedef Log Analytics çalışma alanınızda Günlükler'i seçin.
Günlüğü sorgulamak için ,
WebPubSubMessaging
veyaWebPubSubHttpRequest
girinWebPubSubConnectivity
ve zaman aralığını seçin. Gelişmiş sorgular için bkz . Azure İzleyici'de Log Analytics'i kullanmaya başlama.
SignalR hizmeti için örnek bir sorgu kullanmak için şu adımları izleyin:
Hedef Log Analytics çalışma alanınızda Günlükler'i seçin.
Sorgu gezginini açmak için Sorgular'ı seçin.
Örnek sorguları kaynak türüne göre gruplandırmak için Kaynak türü'nü seçin.
Betiği çalıştırmak için Çalıştır'ı seçin.
Arşiv günlüğü sütunları aşağıdaki tabloda listelenen öğeleri içerir.
Veri Akışı Adı | Açıklama |
---|---|
TimeGenerated |
Olay saatini günlüğe kaydetme |
Collection |
Günlük olayının (Connection , Authorization ve Throttling ) koleksiyonu |
OperationName |
Olayın işlem adı |
Location |
Azure SignalR Hizmeti örneğinizin konumu |
Level |
Günlük olay düzeyi |
CallerIpAddress |
Sunucunuzun/istemcinizin IP adresi |
Message |
Günlük olayının ayrıntılı iletisi |
UserId |
Kullanıcının kimliği |
ConnectionId |
Bağlantının kimliği |
ConnectionType |
Bağlantının türü (Server , sunucu tarafından bir bağlantı; ve Client istemci tarafından bir bağlantı) |
TransportType |
Bağlantının aktarım türü (Websockets , ServerSentEvents ve LongPolling ) |
Sorun gidermek için kaynak günlüklerini kullanma
Bağlantı sayısında beklenmeyen artışlar veya düşüşler bulursanız, kaynak günlüklerini kullanarak sorunu giderebilirsiniz. Olası sorunlar arasında beklenmeyen bağlantı miktarı değişiklikleri, bağlantı sınırlarına ulaşan bağlantılar ve yetkilendirme hatası sayılabilir.
Beklenmeyen bağlantı kesme olayları
Bağlantı kesilirse, kaynak günlükleri veya ile ConnectionAborted
ConnectionEnded
operationName
bağlantı kesme olayını kaydeder.
ile ConnectionEnded
arasındaki ConnectionAborted
fark, ConnectionEnded
istemci veya sunucu tarafı tarafından tetiklenen beklenen bir bağlantı kesilmesidir. Buna karşılık, ConnectionAborted
genellikle bir bağlantının beklenmedik bir şekilde düştüğü ve bağlantı kesilmesinin nedeninin içinde message
sağlandığı bir olayı ifade eder.
Aşağıdaki tabloda beklenmeyen bir bağlantı kesilmesinin nedenleri listelendi.
Neden | Açıklama |
---|---|
Bağlantı sayısı sınıra ulaştı | Bağlantı sayısı geçerli fiyat katmanınızın sınırına ulaşır. Hizmet biriminin ölçeğini artırmayı göz önünde bulundurun. |
Hizmet yeniden yükleme, yeniden bağlanma | Azure Web PubSub hizmeti yeniden yükleniyor. Kendi yeniden bağlantı mekanizmanızı uygulamanız veya Azure Web PubSub hizmetine el ile yeniden bağlanmanız gerekir. |
İç sunucu geçici hatası | Azure Web PubSub hizmetinde geçici bir hata oluşur. Kurtarma otomatik olmalıdır. |
Bağlantılarda beklenmeyen artış
İstemci bağlantılarının sayısı beklenmedik şekilde arttığında bu adımları izlemeniz gerekir. İlk olarak gereksiz bağlantıları filtreleyin ve test istemcisi bağlantınıza benzersiz bir test kullanıcı kimliği ekleyin. Ardından kaynak günlüklerini denetleyin. Birden fazla istemci bağlantısının aynı test kullanıcı kimliğine veya IP'ye sahip olduğunu fark ederseniz, istemci beklenenden daha fazla bağlantı oluşturuyor olabilir. Ek bağlantıların kaynağını bulmak için istemci kodunuzu denetleyin.
Yetkilendirme hatası
İstemci istekleri için 401 Yetkisiz döndürülürse kaynak günlüklerinizi denetleyin. bulursanız Failed to validate audience. Expected Audiences: <valid audience>. Actual Audiences: <actual audience>
, erişim belirtecindeki tüm hedef kitlelerin geçersiz olduğu anlamına gelir. Günlükte önerilen geçerli hedef kitleleri kullanmayı deneyin.
Azaltma
Azure Web PubSub hizmetine istemci bağlantıları kuramazsınız, kaynak günlüklerinizi denetleyin. Kaynak günlüğünde görüyorsanız Connection count reaches limit
, Azure Web PubSub hizmetine çok fazla bağlantı kurduysanız ve bağlantı sayısı sınırına ulaştınız. Azure Web PubSub hizmet örneğinizin ölçeğini artırmayı göz önünde bulundurun.
Kaynak günlüğünde görüyorsanız Message count reaches limit
ve Ücretsiz katmanını kullanıyorsanız, ileti kotasını kullandığınız anlamına gelir. Daha fazla ileti göndermek istiyorsanız Azure Web PubSub hizmet örneğinizi Standart katman olarak değiştirmeyi göz önünde bulundurun. Daha fazla bilgi için bkz . Azure Web PubSub fiyatlandırması.