Azure Cosmos DB denetim düzlemi işlemlerini denetleme
ŞUNLAR IÇIN GEÇERLIDIR: NoSQL MongoDB Cassandra Gremlin Masa
Azure Cosmos DB'deki Denetim Düzlemi, Azure Cosmos DB hesabında çeşitli işlemler gerçekleştirmenizi sağlayan bir RESTful hizmetidir. Bir genel kaynak modelini (örneğin, veritabanı, hesap) ve çeşitli işlemleri kaynak modeli üzerinde eylem gerçekleştirmek için son kullanıcılara sunar. Denetim düzlemi işlemleri, Azure Cosmos DB hesabında veya kapsayıcıda yapılan değişiklikleri içerir. Örneğin Azure Cosmos DB hesabı oluşturma, bölge ekleme, aktarım hızını güncelleştirme, bölge yük devretme, VNet ekleme gibi işlemler denetim düzlemi işlemlerinden bazılarıdır. Bu makalede Azure Cosmos DB'de denetim düzlemi işlemlerinin nasıl denetlenecekleri açıklanmaktadır. Denetim düzlemi işlemlerini Azure Cosmos DB hesaplarında Azure CLI, PowerShell veya Azure portalını kullanarak, kapsayıcılar için ise Azure CLI veya PowerShell kullanarak çalıştırabilirsiniz.
Denetim düzlemi işlemlerinin yararlı olduğu bazı örnek senaryolar aşağıda verilmiştir:
Azure Cosmos DB hesabınızın güvenlik duvarı kuralları değiştirildiğinde bir uyarı almak istiyorsunuz. Uyarı, Azure Cosmos DB hesabınızın ağ güvenliğini yöneten kurallarda yetkisiz değişiklikler bulmak ve hızlı işlem yapmak için gereklidir.
Azure Cosmos DB hesabınızda yeni bir bölge eklendiğinde veya kaldırıldığında bir uyarı almak istiyorsunuz. Bölgelerin eklenmesi veya kaldırılması, faturalama ve veri hakimiyeti gereksinimlerini etkiler. Bu uyarı, hesabınızda yanlışlıkla bölge ekleme veya kaldırma işlemini algılamanıza yardımcı olur.
Nelerin değiştiğine ilişkin tanılama günlüklerinden daha fazla ayrıntı almak istiyorsunuz. Örneğin, bir sanal ağ değiştirildi.
Anahtar tabanlı meta veri yazma erişimini devre dışı bırakma
Azure Cosmos DB'deki denetim düzlemi işlemlerini denetlemeden önce hesabınızda anahtar tabanlı meta veri yazma erişimini devre dışı bırakın. Anahtar tabanlı meta veri yazma erişimi devre dışı bırakıldığında, hesap anahtarları aracılığıyla Azure Cosmos DB hesabına bağlanan istemcilerin hesaba erişmesi engellenir. Özelliğini true olarak ayarlayarak disableKeyBasedMetadataWriteAccess
yazma erişimini devre dışı bırakabilirsiniz. Bu özelliği ayarladıktan sonra, uygun Azure rolüne ve kimlik bilgilerine sahip bir kullanıcıdan herhangi bir kaynakta değişiklik yapılabilir.
disableKeyBasedMetadataWriteAccess
açıldıktan sonra SDK tabanlı istemciler oluşturma veya güncelleştirme işlemlerini çalıştırırsa Azure Cosmos DB uç noktası üzerinden 'ContainerNameorDatabaseName' kaynağında "POST" işlemine izin verilmiyor hatası döndürülür. Hesabınız için bu tür işlemlere erişimi açmanız veya Oluşturma/güncelleştirme işlemlerini Azure Resource Manager, Azure CLI veya Azure PowerShell aracılığıyla gerçekleştirmeniz gerekir. Geri dönmek için Azure CLI kullanarak disableKeyBasedMetadataWriteAccess değerini false olarak ayarlayın. değerini disableKeyBasedMetadataWriteAccess
true yerine false olarak değiştirdiğinizden emin olun.
Meta veri yazma erişimini kapatırken aşağıdaki noktaları göz önünde bulundurun:
SDK veya hesap anahtarlarını kullanarak uygulamalarınızın yukarıdaki kaynakları (örneğin koleksiyon oluşturma, güncelleştirme aktarım hızı, ...) değiştiren meta veri çağrıları yapmadığından emin olun.
disableKeyBasedMetadataWriteAccess
true olarak ayarlandığında, SDK tarafından verilen meta veri işlemleri engellenir. Alternatif olarak, bu işlemleri gerçekleştirmek için Azure portalı, Azure CLI, Azure PowerShell veya Azure Resource Manager şablon dağıtımlarını kullanabilirsiniz.
Denetim düzlemi işlemleri için tanılama günlüklerini etkinleştirme
Azure portalını kullanarak denetim düzlemi işlemleri için tanılama günlüklerini etkinleştirebilirsiniz. Etkinleştirdikten sonra, tanılama günlükleri işlemi ilgili ayrıntıları içeren bir başlangıç ve tamamlama olayları çifti olarak kaydeder. Örneğin RegionFailoverStart ve RegionFailoverComplete, bölge yük devretme olayını tamamlar.
Denetim düzlemi işlemlerinde günlüğe kaydetmeyi etkinleştirmek için aşağıdaki adımları kullanın:
Azure portalında oturum açın ve Azure Cosmos DB hesabınıza gidin.
Tanılama ayarları bölmesini açın, oluşturulacak günlükler için bir Ad sağlayın.
Günlük türü için ControlPlaneRequests'i seçin ve Log Analytics'e Gönder seçeneğini belirleyin.
İsteğe bağlı olarak tanılama günlüklerini Azure Depolama, Azure Event Hubs, Azure İzleyici veya üçüncü bir tarafa gönderin.
Ayrıca günlükleri bir depolama hesabında depolayabilir veya bir olay hub'ına akışla aktarabilirsiniz. Bu makalede log analytics'e günlük gönderme ve sonra bunları sorgulama işlemleri gösterilmektedir. Etkinleştirdikten sonra tanılama günlüklerinin geçerlilik kazanması birkaç dakika sürer. Bu noktadan sonra gerçekleştirilen tüm kontrol düzlemi işlemleri izlenebilir. Aşağıdaki ekran görüntüsünde denetim düzlemi günlüklerinin nasıl etkinleştirileceği gösterilmektedir:
Kontrol düzlemi işlemlerini görüntüleme
Günlüğü açtıktan sonra, belirli bir hesabın işlemlerini izlemek için aşağıdaki adımları kullanın:
Azure Portal’ında oturum açın.
Sol gezinti bölmesinden İzleyici sekmesini açın ve ardından Günlükler bölmesini seçin. Bu kullanıcı arabirimini açar ve bu kapsamdaki belirli hesapla kolayca sorgu çalıştırabilirsiniz. Denetim düzlemi günlüklerini görüntülemek için aşağıdaki sorguyu çalıştırın:
AzureDiagnostics | where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="ControlPlaneRequests" | where TimeGenerated >= ago(1h)
Aşağıdaki ekran görüntüleri, Azure Cosmos DB hesabı için tutarlılık düzeyi değiştirildiğinde günlükleri yakalar. Sonuçlardaki
activityId_g
değer, bir işlemin etkinlik kimliğinden farklıdır:Aşağıdaki ekran görüntüleri, cassandra hesabının anahtar alanı veya tablosu oluşturulduğunda ve aktarım hızı güncelleştirildiğinde günlükleri yakalar. Veritabanında ve kapsayıcıda oluşturma ve güncelleştirme işlemlerinin denetim düzlemi günlükleri, aşağıdaki ekran görüntüsünde gösterildiği gibi ayrı olarak günlüğe kaydedilir:
Belirli bir işlemle ilişkili kimliği tanımlama
Daha fazla hata ayıklamak isterseniz, veya işleminin zaman damgasını activityId_g
kullanarak Etkinlik günlüğünde belirli bir işlemi tanımlayabilirsiniz. Zaman damgası, etkinlik kimliğinin açıkça geçirilmediği bazı Resource Manager istemcileri için kullanılır. Etkinlik günlüğü, işlemin başlatıldığı kimlikle ilgili ayrıntıları verir. Aşağıdaki ekran görüntüsünde, Etkinlik günlüğünde activityId_g
kendisiyle ilişkilendirilmiş işlemleri bulmak için komutunun nasıl kullanılacağı gösterilmektedir:
Azure Cosmos DB hesabı için denetim düzlemi işlemleri
Hesap düzeyinde kullanılabilen denetim düzlemi işlemleri aşağıdadır. İşlemlerin çoğu hesap düzeyinde izlenir. Bu işlemler Azure İzleyici'de ölçüm olarak kullanılabilir:
- Bölge eklendi
- Bölge kaldırıldı
- Hesap silindi
- Bölge yük devreddi
- Hesap oluşturuldu
- Sanal ağ silindi
- Hesap ağ ayarları güncelleştirildi
- Hesap çoğaltma ayarları güncelleştirildi
- Hesap anahtarları güncelleştirildi
- Hesap yedekleme ayarları güncelleştirildi
- Hesap tanılama ayarları güncelleştirildi
Veritabanı veya kapsayıcılar için denetim düzlemi işlemleri
Aşağıda, veritabanı ve kapsayıcı düzeyinde kullanılabilen denetim düzlemi işlemleri yer alır. Bu işlemler Azure İzleyici'de ölçüm olarak kullanılabilir:
- SQL Veritabanı Oluşturuldu
- SQL Veritabanı Güncelleştirildi
- SQL Veritabanı Aktarım Hızı Güncelleştirildi
- SQL Veritabanı Silindi
- SQL Kapsayıcısı Oluşturuldu
- SQL Kapsayıcısı Güncelleştirildi
- SQL Kapsayıcı aktarım hızı güncelleştirildi
- SQL Kapsayıcısı Silindi
- Cassandra Anahtar Alanı Oluşturuldu
- Cassandra Anahtar Alanı Güncelleştirildi
- Cassandra Anahtar Alanı Aktarım Hızı Güncelleştirildi
- Cassandra Anahtar Alanı Silindi
- Cassandra Tablosu Oluşturuldu
- Cassandra Tablosu Güncelleştirildi
- Cassandra Tablo Aktarım Hızı Güncelleştirildi
- Cassandra Tablosu Silindi
- Gremlin Veritabanı Oluşturuldu
- Gremlin Veritabanı Güncelleştirildi
- Gremlin Veritabanı Aktarım Hızı Güncelleştirildi
- Gremlin Veritabanı Silindi
- Gremlin Graph Oluşturuldu
- Gremlin Graph Güncelleştirildi
- Gremlin Graph Aktarım Hızı Güncelleştirildi
- Gremlin Grafı Silindi
- Mongo Veritabanı Oluşturuldu
- Mongo Veritabanı Güncelleştirildi
- Mongo Veritabanı Aktarım Hızı Güncelleştirildi
- Mongo Veritabanı Silindi
- Mongo Koleksiyonu Oluşturuldu
- Mongo Koleksiyonu Güncelleştirildi
- Mongo Koleksiyonu Aktarım Hızı Güncelleştirildi
- Mongo Koleksiyonu Silindi
- AzureTable Tablosu Oluşturuldu
- AzureTable Tablosu Güncelleştirildi
- AzureTable Tablo Aktarım Hızı Güncelleştirildi
- AzureTable Tablosu Silindi
Tanılama günlüğü işlemleri
Farklı işlemler için tanılama günlüklerindeki işlem adları şunlardır:
- RegionAddStart, RegionAddComplete
- RegionRemoveStart, RegionRemoveComplete
- AccountDeleteStart, AccountDeleteComplete
- RegionFailoverStart, RegionFailoverComplete
- AccountCreateStart, AccountCreateComplete
- AccountUpdateStart, AccountUpdateComplete
- VirtualNetworkDeleteStart, VirtualNetworkDeleteComplete
- DiagnosticLogUpdateStart, DiagnosticLogUpdateComplete
API'ye özgü işlemler için işlem şu biçimde adlandırılır:
- ApiKind + ApiKindResourceType + OperationType
- ApiKind + ApiKindResourceType + "Aktarım Hızı" + operationType
Örnek
- CassandraKeyspacesCreate
- CassandraKeyspacesUpdate
- CassandraKeyspacesThroughputUpdate
- SqlContainersUpdate
ResourceDetails özelliği, istek yükü olarak tüm kaynak gövdesini ve güncelleştirilmek üzere istenen tüm özellikleri içerir
Denetim düzlemi işlemleri için tanılama günlüğü sorguları
Denetim düzlemi işlemleri için tanılama günlüklerini almaya yönelik bazı örnekler aşağıda verilmiştir:
AzureDiagnostics
| where Category startswith "ControlPlane"
| where OperationName contains "Update"
| project httpstatusCode_s, statusCode_s, OperationName, resourceDetails_s, activityId_g
AzureDiagnostics
| where Category =="ControlPlaneRequests"
| where TimeGenerated >= todatetime('2020-05-14T17:37:09.563Z')
| project TimeGenerated, OperationName, apiKind_s, apiKindResourceType_s, operationType_s, resourceDetails_s
AzureDiagnostics
| where Category == "ControlPlaneRequests"
| where OperationName startswith "SqlContainersUpdate"
AzureDiagnostics
| where Category == "ControlPlaneRequests"
| where OperationName startswith "SqlContainersThroughputUpdate"
activityId değerini ve kapsayıcı silme işlemini başlatan çağıranı almak için sorgu:
(AzureDiagnostics
| where Category == "ControlPlaneRequests"
| where OperationName == "SqlContainersDelete"
| where TimeGenerated >= todatetime('9/3/2020, 5:30:29.300 PM')
| summarize by activityId_g )
| join (
AzureActivity
| parse HTTPRequest with * "clientRequestId\": \"" activityId_g "\"" *
| summarize by Caller, HTTPRequest, activityId_g)
on activityId_g
| project Caller, activityId_g
Dizin veya ttl güncelleştirmelerini almak için sorgu yapın. Daha sonra dizin veya ttl'deki değişikliği görmek için bu sorgunun çıkışını önceki bir güncelleştirmeyle karşılaştırabilirsiniz.
AzureDiagnostics
| where Category =="ControlPlaneRequests"
| where OperationName == "SqlContainersUpdate"
| project resourceDetails_s
output:
{id:skewed,indexingPolicy:{automatic:true,indexingMode:consistent,includedPaths:[{path:/*,indexes:[]}],excludedPaths:[{path:/_etag/?}],compositeIndexes:[],spatialIndexes:[]},partitionKey:{paths:[/pk],kind:Hash},defaultTtl:1000000,uniqueKeyPolicy:{uniqueKeys:[]},conflictResolutionPolicy:{mode:LastWriterWins,conflictResolutionPath:/_ts,conflictResolutionProcedure:}