Azure Cosmos DB denetim düzlemi işlemlerini denetleme

ŞUNLAR IÇIN GEÇERLIDIR: Nosql MongoDB Cassandra Gremlin Tablo

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 son kullanıcıların kaynak modeli üzerinde eylem gerçekleştirmesi için kullanıma 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 CLI, PowerShell veya Azure portal kullanarak Azure Cosmos DB hesaplarında çalıştırabilirsiniz; kapsayıcılar için ise Azure CLI veya PowerShell kullanabilirsiniz.

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. Bu özelliği ayarlama hakkında daha fazla bilgi edinmek için SDK'lardan değişiklikleri engelleme makalesine bakın.

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 Cosmos DB SDK'sından değişiklik yapılmasını engelleme makalesinde açıklandığı gibi Azure CLI kullanarak disableKeyBasedMetadataWriteAccess ayarını 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ı değiştiren meta veri çağrıları yapmadığından (örneğin, koleksiyon oluşturma, aktarım hızını güncelleştirme...) 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 şablonu dağıtımlarını kullanabilirsiniz.

Denetim düzlemi işlemleri için tanılama günlüklerini etkinleştirme

Azure portal kullanarak kontrol düzlemi işlemleri için tanılama günlüklerini etkinleştirebilirsiniz. Etkinleştirildikten sonra, tanılama günlükleri işlemi ilgili ayrıntılarla birlikte bir çift başlatma ve tamamlama olayı 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:

  1. Azure portal oturum açın ve Azure Cosmos DB hesabınıza gidin.

  2. Tanılama ayarları bölmesini açın, oluşturulacak günlükler için bir Ad sağlayın.

  3. Günlük türü için ControlPlaneRequests'i seçin ve Log Analytics'e Gönder seçeneğini belirleyin.

  4. İ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 günlüklerin Log Analytics'e nasıl gönderilip sorgu yapılacağı gösterilmektedir. Etkinleştirdikten sonra tanılama günlüklerinin etkili olması 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:

Denetim düzlemi isteklerinin günlüğe kaydedilmesini etkinleştirme

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:

  1. Azure Portal’ında oturum açın.

  2. Sol gezinti bölmesinden İzleyici sekmesini açın ve günlükler bölmesini seçin. Bu kullanıcı arabirimini açar ve bu kullanıcı arabirimini kullanarak kapsamdaki belirli bir 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:

    Bir sanal ağ eklendiğinde denetim düzlemi günlüğe kaydeder

    Aşağıdaki ekran görüntüleri, bir 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:

    Aktarım hızı güncelleştirildiğinde kontrol düzlemi günlükleri

Belirli bir işlemle ilişkili kimliği belirleme

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 activityId_g , ile ilişkili işlemleri Etkinlik günlüğünde bulmak için uygulamasının nasıl kullanılacağı gösterilmektedir:

Etkinlik kimliğini kullanma ve işlemleri bulma

Azure Cosmos DB hesabı için denetim düzlemi işlemleri

Hesap düzeyinde kullanılabilen kontrol 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 devredildi
  • 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 Grafı Oluşturuldu
  • Gremlin Grafı 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
  • Oluşturulan AzureTable Tablosu
  • 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ı aşağıdadı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 + "Throughput" + 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

Çıkış:

{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:}

Sonraki adımlar