Tanılama ayarlarını kullanarak Redis için Azure Cache verilerini izleme
Makale
Kaynak günlüklerini toplamak için Azure'daki tanılama ayarları kullanılır. Azure kaynağı kaynak günlüklerini yayar ve bu kaynağın işleyişi hakkında zengin ve sık kullanılan veriler sağlar. Bu günlükler istek başına yakalanır ve "veri düzlemi günlükleri" olarak da adlandırılır. Azure'daki işlevlere yönelik önerilen genel bakış için bkz . Azure İzleyici'deki tanılama ayarları. Bu günlüklerin içeriği, kaynak türüne göre değişir. Redis için Azure Cache'da günlüğe kaydetmek için iki seçenek vardır:
Bağlan günlükleri, önbellek bağlantılarını güvenlik ve tanılama amacıyla günlüğe kaydeder.
Kullanılabilirlik kapsamı
Katman
Temel, Standart ve Premium
Kurumsal ve Kurumsal Flash
Önbellek Ölçümleri
Evet
Evet
Bağlan Ion Günlükleri
Evet
Evet
Önbellek Ölçümleri
Redis için Azure Cache, Sunucu Yükü ve Saniye başına Bağlan ions gibi günlüğe kaydetmeye yardımcı olan birçok ölçüm yayar. AllMetrics seçeneğinin belirtilmesi, bunların ve diğer önbellek ölçümlerinin günlüğe kaydedilmesini sağlar. Ölçümlerin ne kadar süreyle tutulabileceğini yapılandırabilirsiniz. Önbellek ölçümlerini depolama hesabına aktarma örneği için buraya bakın.
Bağlan Ion Günlükleri
Redis için Azure Cache, önbelleğinize yönelik istemci bağlantılarıyla ilgili bilgileri günlüğe kaydetmek için Azure tanılama ayarlarını kullanır. Bu tanılama ayarını günlüğe kaydetme ve analiz etme, önbelleklerinize kimin bağlanıyor olduğunu ve bu bağlantıların zaman damgasını anlamanıza yardımcı olur. Günlük verileri, güvenlik ihlalinin kapsamını belirlemek ve güvenlik denetimi amacıyla kullanılabilir.
Redis için Azure Cache Katmanları Arasındaki Farklar
Bağlantı günlüklerinin uygulanması katmanlar arasında biraz farklıdır:
Temel, Standart ve Premium katman, her benzersiz IP adresinden kaynaklanan bağlantı sayısı da dahil olmak üzere istemci bağlantılarını IP adresine göre önbelleğe alır. Bu günlükler kümülatif değildir. 10 saniyelik aralıklarla alınan belirli bir noktaya anlık görüntüleri temsil eder. Kimlik doğrulama olayları (başarılı ve başarısız) ve bağlantı kesme olayları bu katmanlarda günlüğe kaydedilmez.
Kurumsal ve Kurumsal Flash katmanlı önbellekler , Redis Enterprise'da yerleşik olarak bulunan bağlantı olaylarını denetleme işlevini kullanır. Bağlantı olaylarını denetleme, başarısız kimlik doğrulama olayları dahil olmak üzere her bağlantı, bağlantı kesilmesi ve kimlik doğrulama olayının günlüğe kaydedilmesine izin verir.
Oluşturulan bağlantı günlükleri katmanlar arasında benzer görünse de bazı farklılıklar vardır. bu iki biçim makalenin ilerleyen bölümlerinde daha ayrıntılı olarak gösterilmiştir.
Önemli
Temel, Standart ve Premium katmanlarında bağlantı günlüğü önbellekteki geçerli istemci bağlantılarını yoklar . Aynı istemci IP adresleri tekrar tekrar görüntülenir. Kurumsal ve Kurumsal Flash katmanlarında oturum açmak her bağlantı olayına odaklanır. Günlükler yalnızca gerçek olay ilk kez gerçekleştiğinde gerçekleşir.
Bağlan Günlüğü Önkoşulları/Sınırlamaları
Temel, Standart ve Premium katmanlar
Bu katmanlardaki bağlantı günlükleri her 10 saniyede bir alınan belirli bir noktaya anlık görüntüden oluştuğundan, 10 saniyelik aralıklar arasında kurulan ve kaldırılan bağlantılar günlüğe kaydedilmez.
Bağlantı günlüklerinin etkinleştirilmesi önbellek örneğinde küçük bir performans düşüşüne neden olabilir.
Azure Log Analytics'e günlük akışı yapılırken yalnızca Analiz Günlükleri fiyatlandırma planı desteklenir. Daha fazla bilgi için bkz . Azure İzleyici fiyatlandırması.
Kurumsal ve Kurumsal Flash katmanları
OSS Küme İlkesi'ni kullandığınızda, günlükler her veri düğümünden yayılır. Kurumsal Küme İlkesi'ni kullandığınızda, yalnızca ara sunucu olarak kullanılan düğüm günlükleri yayar. Her iki sürüm de önbelleğe yönelik tüm bağlantıları kapsar. Bu sadece mimari bir farktır.
Veri kaybı (yani bağlantı olayının eksik olması) nadirdir ancak mümkündür. Veri kaybına genellikle ağ sorunları neden olur.
Bağlantı kesme günlükleri henüz tam olarak kararlı değildir ve olaylar kaçırılabilir.
Kurumsal katmanlardaki bağlantı günlükleri olay tabanlı olduğundan bekletme ilkelerinize dikkat edin. Örneğin, bekletme 10 gün olarak ayarlandıysa ve 15 gün önce bir bağlantı olayı oluştuysa, bu bağlantı hala mevcut olabilir, ancak bu bağlantının günlüğü tutulmaz.
Etkin coğrafi çoğaltma kullanılıyorsa , coğrafi çoğaltma grubundaki her önbellek örneği için günlük ayrı ayrı yapılandırılmalıdır.
Bağlantı günlüklerinin etkinleştirilmesi önbellek örneğinde küçük bir performans düşüşüne neden olabilir.
Dekont
bir önbellek örneğine isteğe bağlı kimlerin bağlı olduğunu denetlemek için BİlGİ veya İsteMCİ LİSTESİ komutlarını kullanmak her zaman mümkündür.
Önemli
Günlükleri seçerken, Azure hizmetlerinde günlüklerin önceden tanımlanmış gruplandırmaları olan belirli Kategori veya Kategori gruplarını seçebilirsiniz. Kategori gruplarını kullandığınızda, artık bekletme ayarlarını yapılandırasınız. Bağlantı günlükleriniz için bekletme süresini belirlemeniz gerekiyorsa, bunun yerine Kategoriler bölümünde öğeyi seçin.
Günlük Hedefleri
Redis için Azure Cache örnekleri için tanılama ayarlarını açabilir ve kaynak günlüklerini aşağıdaki hedeflere gönderebilirsiniz:
Log Analytics çalışma alanı - izlenen kaynakla aynı bölgede olması gerekmez.
Olay hub'ı - sanal ağlar etkinleştirildiğinde tanılama ayarları olay hub'ı kaynaklarına erişemez. Olay hub'larında güvenilen Microsoft hizmetleri bu güvenlik duvarını atlamasına izin ver? ayarını etkinleştirerek olay hub'larınıza erişim izni verin. Olay hub'ı önbellekle aynı bölgede olmalıdır.
İş Ortağı Çözümü - olası iş ortağı günlüğü çözümlerinin listesi burada bulunabilir
Tanılama gereksinimleri hakkında daha fazla bilgi için bkz . tanılama ayarları.
Tanılama günlüklerini her iki hedefe de gönderdiğinizde depolama hesabı ve olay hub'ı kullanımı için normal veri ücretleri alınır. Redis için Azure Cache değil Azure İzleyici kapsamında faturalandırılırsınız. Günlükleri Log Analytics'e gönderirken yalnızca Log Analytics veri alımı için ücretlendirilirsiniz.
Etkileşimli konsol aracılığıyla tanılama ayarı oluşturmak için Azure İzleyici REST API'sini kullanın. Daha fazla bilgi için bkz . Oluşturma veya güncelleştirme.
İste
PUT https://management.azure.com/{resourceUri}/providers/Microsoft.Insights/diagnosticSettings/{name}?api-version=2017-05-01-preview
Etkileşimli konsol aracılığıyla tanılama ayarı oluşturmak için Azure İzleyici REST API'sini kullanın. Daha fazla bilgi için bkz . Oluşturma veya güncelleştirme.
İste
PUT https://management.azure.com/{resourceUri}/providers/Microsoft.Insights/diagnosticSettings/{name}?api-version=2017-05-01-preview
Komutunu kullanarak az monitor diagnostic-settings create Azure CLI ile bir tanılama ayarı oluşturun. Komut ve parametre açıklamaları hakkında daha fazla bilgi için bkz . Farklı hedeflere platform günlüklerini ve ölçümlerini göndermek için tanılama ayarları oluşturma. Bu örnekte, Azure CLI'yi kullanarak dört farklı uç noktaya veri akışı yapmayı gösterir:
Komutunu kullanarak az monitor diagnostic-settings create Azure CLI ile bir tanılama ayarı oluşturun. Komut ve parametre açıklamaları hakkında daha fazla bilgi için bkz . Farklı hedeflere platform günlüklerini ve ölçümlerini göndermek için tanılama ayarları oluşturma. Bu örnekte, Azure CLI'yi kullanarak dört farklı uç noktaya veri akışı yapmayı gösterir:
Bu alanlar ve özellikler günlük kategorisinde görünür ConnectedClientList . Azure İzleyici'de ACRConnectedClientList günlükler tablosunda kaynak sağlayıcısı adı MICROSOFT.CACHEaltında toplanır.
Azure Depolama alanı veya özelliği
Azure İzleyici Günlükleri özelliği
Açıklama
time
TimeGenerated
Günlüğün UTC'de oluşturulduğu zaman damgası.
location
Location
Redis için Azure Cache örneğinin erişildiği konum (bölge).
category
yok
Kullanılabilir günlük kategorileri: ConnectedClientList.
resourceId
_ResourceId
Günlüklerin etkinleştirildiği Redis için Azure Cache kaynağı.
operationName
OperationName
Günlük kaydıyla ilişkili Redis işlemi.
properties
yok
Bu alanın içeriği, izleyen satırlarda açıklanmıştır.
tenant
CacheName
Redis için Azure Cache örneğinin adı.
roleInstance
RoleInstance
İstemci listesini günlüğe kaydeden rol örneği.
connectedClients.ip
ClientIp
Redis istemcisi IP adresi.
connectedClients.privateLinkIpv6
PrivateLinkIpv6
Redis istemcisi özel bağlantı IPv6 adresi (varsa).
connectedClients.count
ClientCount
İlişkili IP adresinden Redis istemci bağlantılarının sayısı.
Örnek depolama hesabı günlüğü
Günlüklerinizi bir depolama hesabına gönderirseniz, günlüklerin içeriği şöyle görünür.
Bu alanlar ve özellikler günlük kategorisinde görünür ConnectionEvents . Azure İzleyici'de REDConnectionEvents günlükler tablosunda kaynak sağlayıcısı adı MICROSOFT.CACHEaltında toplanır.
Azure Depolama alanı veya özelliği
Azure İzleyici Günlükleri özelliği
Açıklama
time
TimeGenerated
Olay günlüğünün yakalandığı zaman damgası (UTC).
location
Location
Redis için Azure Cache örneğinin erişildiği konum (bölge).
category
yok
Kullanılabilir günlük kategorileri: ConnectionEvents.
resourceId
_ResourceId
Günlüklerin etkinleştirildiği Redis için Azure Cache kaynağı.
operationName
OperationName
Günlük kaydıyla ilişkili Redis işlemi.
properties
yok
Bu alanın içeriği, izleyen satırlarda açıklanmıştır.
eventEpochTime
EventEpochTime
OLAYıN UTC'de gerçekleştiği UNIX zaman damgası (1 Ocak 1970'ten bu yana saniye sayısı). Zaman damgası, Log Analytics çalışma alanında işlev unixtime_seconds_todatetime kullanılarak tarih saat biçimine dönüştürülebilir.
clientIP
ClientIP
Redis istemcisi IP adresi. Azure depolama kullanılıyorsa, IP adresi önbellek türüne göre IPv4 veya özel bağlantı IPv6 biçimidir. Log Analytics kullanılıyorsa, ayrı bir IPv6 alanı sağlandığından sonuç her zaman IPv4'te olur.
yok
PrivateLinkIPv6
Redis istemcisi özel bağlantı IPv6 adresi (yalnızca hem Özel Bağlantı hem de log analytics kullanılıyorsa gönderilir).
id
ConnectionId
Redis tarafından atanan benzersiz bağlantı kimliği.
eventType
EventType
Bağlantı olayının türü (new_conn, kimlik doğrulaması veya close_conn).
eventStatus
EventStatus
Durum kodu olarak bir kimlik doğrulama isteğinin sonuçları (yalnızca kimlik doğrulama olayı için geçerlidir).
Dekont
Özel bağlantı kullanılıyorsa yalnızca bir IPv6 adresi günlüğe kaydedilir (verileri log analytics'e akışla aktarmadığınız sürece). IPv6 adresindeki verilerin son dört baytını inceleyerek IPv6 adresini eşdeğer IPv4 adresine dönüştürebilirsiniz. Örneğin, özel bağlantı IPv6 adresinde "fd40:8913:31:6810:6c31:200:a01:104", onaltılık olarak son dört bayt "0a", "01", "01" ve "04" şeklindedir. (Her iki nokta üst üste sonrasında baştaki sıfırların atlandığını unutmayın.) Bunlar ondalık olarak "10", "1", "1" ve "4" ifadelerine karşılık gelir ve bize "10.1.1.4" IPv4 adresini verir.
Örnek depolama hesabı günlüğü
Günlüklerinizi bir depolama hesabına gönderirseniz, bağlantı olayının günlüğü şöyle görünür:
Azure Log Analytics'i kullanma hakkında bir öğretici için bkz . Azure İzleyici'de Log Analytics'e genel bakış. Günlüklerin Log Analtyics'te gösterilmesinin 90 dakika kadar sürebileceğini unutmayın.
Burada model olarak kullanılacak bazı temel sorgular yer alır.
Belirtilen IP adresi aralığında saat başına istemci bağlantılarını Redis için Azure Cache:
let IpRange = "10.1.1.0/24";
ACRConnectedClientList
// For particular datetime filtering, add '| where TimeGenerated between (StartTime .. EndTime)'
| where ipv4_is_in_range(ClientIp, IpRange)
| summarize ConnectionCount = sum(ClientCount) by TimeRange = bin(TimeGenerated, 1h)
Önbelleğe bağlı benzersiz Redis istemcisi IP adresleri:
ACRConnectedClientList
| summarize count() by ClientIp
Belirtilen IP adresi aralığı içinde saatte bir bağlantı Redis için Azure Cache:
REDConnectionEvents
// For particular datetime filtering, add '| where EventTime between (StartTime .. EndTime)'
// For particular IP range filtering, add '| where ipv4_is_in_range(ClientIp, IpRange)'
// IP range can be defined like this 'let IpRange = "10.1.1.0/24";' at the top of query.
| extend EventTime = unixtime_seconds_todatetime(EventEpochTime)
| where EventType == "new_conn"
| summarize ConnectionCount = count() by TimeRange = bin(EventTime, 1h)
Belirtilen IP adresi aralığı içinde saat başına kimlik doğrulama isteklerini Redis için Azure Cache:
REDConnectionEvents
| extend EventTime = unixtime_seconds_todatetime(EventEpochTime)
// For particular datetime filtering, add '| where EventTime between (StartTime .. EndTime)'
// For particular IP range filtering, add '| where ipv4_is_in_range(ClientIp, IpRange)'
// IP range can be defined like this 'let IpRange = "10.1.1.0/24";' at the top of query.
| where EventType == "auth"
| summarize AuthencationRequestsCount = count() by TimeRange = bin(EventTime, 1h)
Önbelleğe bağlı benzersiz Redis istemcisi IP adresleri:
REDConnectionEvents
// https://docs.redis.com/latest/rs/security/audit-events/#status-result-codes
// EventStatus :
// 0 AUTHENTICATION_FAILED - Invalid username and/or password.
// 1 AUTHENTICATION_FAILED_TOO_LONG - Username or password are too long.
// 2 AUTHENTICATION_NOT_REQUIRED - Client tried to authenticate, but authentication isn’t necessary.
// 3 AUTHENTICATION_DIRECTORY_PENDING - Attempting to receive authentication info from the directory in async mode.
// 4 AUTHENTICATION_DIRECTORY_ERROR - Authentication attempt failed because there was a directory connection error.
// 5 AUTHENTICATION_SYNCER_IN_PROGRESS - Syncer SASL handshake. Return SASL response and wait for the next request.
// 6 AUTHENTICATION_SYNCER_FAILED - Syncer SASL handshake. Returned SASL response and closed the connection.
// 7 AUTHENTICATION_SYNCER_OK - Syncer authenticated. Returned SASL response.
// 8 AUTHENTICATION_OK - Client successfully authenticated.
| where EventType == "auth" and EventStatus == 2 or EventStatus == 8 or EventStatus == 7
| summarize count() by ClientIp
Önbellekte başarısız kimlik doğrulama girişimleri
REDConnectionEvents
// https://docs.redis.com/latest/rs/security/audit-events/#status-result-codes
// EventStatus :
// 0 AUTHENTICATION_FAILED - Invalid username and/or password.
// 1 AUTHENTICATION_FAILED_TOO_LONG - Username or password are too long.
// 2 AUTHENTICATION_NOT_REQUIRED - Client tried to authenticate, but authentication isn’t necessary.
// 3 AUTHENTICATION_DIRECTORY_PENDING - Attempting to receive authentication info from the directory in async mode.
// 4 AUTHENTICATION_DIRECTORY_ERROR - Authentication attempt failed because there was a directory connection error.
// 5 AUTHENTICATION_SYNCER_IN_PROGRESS - Syncer SASL handshake. Return SASL response and wait for the next request.
// 6 AUTHENTICATION_SYNCER_FAILED - Syncer SASL handshake. Returned SASL response and closed the connection.
// 7 AUTHENTICATION_SYNCER_OK - Syncer authenticated. Returned SASL response.
// 8 AUTHENTICATION_OK - Client successfully authenticated.
| where EventType == "auth" and EventStatus != 2 and EventStatus != 8 and EventStatus != 7
| project ClientIp, EventStatus, ConnectionId
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz. https://aka.ms/ContentUserFeedback.