Jak przeprowadzać inspekcję operacji płaszczyzny sterowania usługi Azure Cosmos DB
DOTYCZY: NoSQL MongoDB Kasandra Gremlin Stół
Płaszczyzna sterowania w usłudze Azure Cosmos DB to usługa RESTful, która umożliwia wykonywanie zróżnicowanego zestawu operacji na koncie usługi Azure Cosmos DB. Uwidacznia ona publiczny model zasobów (na przykład baza danych, konto) i różne operacje dla użytkowników końcowych w celu wykonywania akcji w modelu zasobów. Operacje płaszczyzny sterowania obejmują zmiany na koncie lub kontenerze usługi Azure Cosmos DB. Na przykład operacje, takie jak tworzenie konta usługi Azure Cosmos DB, dodawanie regionu, aktualizowanie przepływności, tryb failover regionu, dodawanie sieci wirtualnej itp. to niektóre operacje płaszczyzny sterowania. W tym artykule wyjaśniono, jak przeprowadzać inspekcję operacji płaszczyzny sterowania w usłudze Azure Cosmos DB. Operacje płaszczyzny sterowania na kontach usługi Azure Cosmos DB można uruchamiać przy użyciu interfejsu wiersza polecenia platformy Azure, programu PowerShell lub witryny Azure Portal, natomiast w przypadku kontenerów użyj interfejsu wiersza polecenia platformy Azure lub programu PowerShell.
Poniżej przedstawiono przykładowe scenariusze, w których pomocne jest przeprowadzanie inspekcji operacji płaszczyzny sterowania:
Chcesz uzyskać alert, gdy reguły zapory dla konta usługi Azure Cosmos DB zostaną zmodyfikowane. Alert jest wymagany do znalezienia nieautoryzowanych modyfikacji reguł, które zarządzają zabezpieczeniami sieci konta usługi Azure Cosmos DB i podejmują szybkie działania.
Chcesz uzyskać alert, jeśli nowy region zostanie dodany lub usunięty z konta usługi Azure Cosmos DB. Dodawanie lub usuwanie regionów ma wpływ na wymagania dotyczące rozliczeń i niezależności danych. Ten alert pomoże Ci wykryć przypadkowe dodanie lub usunięcie regionu na twoim koncie.
Chcesz uzyskać więcej szczegółów z dzienników diagnostycznych dotyczących tego, co się zmieniło. Na przykład sieć wirtualna została zmieniona.
Wyłączanie dostępu do zapisu metadanych opartych na kluczach
Przed przeprowadzeniem inspekcji operacji płaszczyzny sterowania w usłudze Azure Cosmos DB wyłącz dostęp do zapisu metadanych opartych na kluczach na koncie. Gdy dostęp do zapisu metadanych opartych na kluczach jest wyłączony, klienci łączący się z kontem usługi Azure Cosmos DB za pośrednictwem kluczy kont nie mogą uzyskiwać dostępu do konta. Dostęp do zapisu można wyłączyć, ustawiając disableKeyBasedMetadataWriteAccess
właściwość na true. Po ustawieniu tej właściwości zmiany w dowolnym zasobie mogą wystąpić od użytkownika z odpowiednią rolą i poświadczeniami platformy Azure.
disableKeyBasedMetadataWriteAccess
Jeśli klienci z zestawem SDK uruchamiają operacje tworzenia lub aktualizowania zestawu SDK, zwracany jest błąd "Operacja POST" zasobu "ContainerNameorDatabaseName" jest niedozwolona za pośrednictwem punktu końcowego usługi Azure Cosmos DB. Musisz włączyć dostęp do takich operacji dla konta lub wykonać operacje tworzenia/aktualizacji za pomocą usługi Azure Resource Manager, interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell. Aby przełączyć się z powrotem, ustaw wartość disableKeyBasedMetadataWriteAccess na false przy użyciu interfejsu wiersza polecenia platformy Azure. Pamiętaj, aby zmienić wartość disableKeyBasedMetadataWriteAccess
na false zamiast wartości true.
Podczas wyłączania dostępu do zapisu metadanych należy wziąć pod uwagę następujące kwestie:
Oceń i upewnij się, że aplikacje nie wykonują wywołań metadanych, które zmieniają powyższe zasoby (na przykład utwórz kolekcję, zaktualizuj przepływność, ...) przy użyciu zestawu SDK lub kluczy konta.
Po
disableKeyBasedMetadataWriteAccess
ustawieniu wartości true operacje metadanych wystawione przez zestaw SDK są blokowane. Alternatywnie możesz użyć witryny Azure Portal, interfejsu wiersza polecenia platformy Azure, programu Azure PowerShell lub wdrożeń szablonów usługi Azure Resource Manager w celu wykonania tych operacji.
Włączanie dzienników diagnostycznych dla operacji płaszczyzny sterowania
Dzienniki diagnostyczne dla operacji płaszczyzny sterowania można włączyć przy użyciu witryny Azure Portal. Po włączeniu dzienniki diagnostyczne będą rejestrować operację jako parę zdarzeń początkowych i kompletnych z odpowiednimi szczegółami. Na przykład regionFailoverStart i RegionFailoverComplete zakończą zdarzenie trybu failover regionu.
Aby włączyć rejestrowanie operacji płaszczyzny sterowania, wykonaj następujące czynności:
Zaloguj się do witryny Azure Portal i przejdź do swojego konta usługi Azure Cosmos DB.
Otwórz okienko Ustawienia diagnostyczne, podaj nazwę dzienników do utworzenia.
Wybierz pozycję ControlPlaneRequests dla typu dziennika i wybierz opcję Wyślij do usługi Log Analytics .
Opcjonalnie wyślij dzienniki diagnostyczne do usługi Azure Storage, Azure Event Hubs, Azure Monitor lub innej firmy.
Dzienniki można również przechowywać na koncie magazynu lub przesyłać strumieniowo do centrum zdarzeń. W tym artykule pokazano, jak wysyłać dzienniki do usługi Log Analytics, a następnie wykonywać względem nich zapytania. Po włączeniu dzienników diagnostycznych może upłynąć kilka minut. Wszystkie operacje płaszczyzny sterowania wykonywane po tym punkcie można śledzić. Poniższy zrzut ekranu przedstawia sposób włączania dzienników płaszczyzny sterowania:
Wyświetlanie operacji płaszczyzny sterowania
Po włączeniu rejestrowania wykonaj następujące kroki, aby śledzić operacje dla określonego konta:
Zaloguj się w witrynie Azure Portal.
Otwórz kartę Monitorowanie w obszarze nawigacji po lewej stronie, a następnie wybierz okienko Dzienniki. Spowoduje to otwarcie interfejsu użytkownika, w którym można łatwo uruchamiać zapytania z określonym kontem w zakresie. Uruchom następujące zapytanie, aby wyświetlić dzienniki płaszczyzny sterowania:
AzureDiagnostics | where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="ControlPlaneRequests" | where TimeGenerated >= ago(1h)
Poniższe zrzuty ekranu przechwytują dzienniki po zmianie poziomu spójności dla konta usługi Azure Cosmos DB. Wartość
activityId_g
z wyników różni się od identyfikatora działania operacji:Poniższe zrzuty ekranu przechwytują dzienniki podczas tworzenia przestrzeni kluczy lub tabeli konta Cassandra i aktualizowania przepływności. Dzienniki płaszczyzny sterowania dotyczące operacji tworzenia i aktualizowania bazy danych oraz kontenera są rejestrowane oddzielnie, jak pokazano na poniższym zrzucie ekranu:
Identyfikowanie tożsamości skojarzonej z określoną operacją
Jeśli chcesz dodatkowo debugować, możesz zidentyfikować określoną operację w dzienniku aktywności przy użyciu activityId_g
znacznika czasu operacji lub . Sygnatura czasowa jest używana dla niektórych klientów usługi Resource Manager, w których identyfikator działania nie jest jawnie przekazywany. Dziennik aktywności zawiera szczegółowe informacje o tożsamości, za pomocą której zainicjowano operację. Poniższy zrzut ekranu przedstawia sposób użycia elementu activityId_g
w celu znalezienia operacji skojarzonych z nim w dzienniku aktywności:
Operacje płaszczyzny sterowania dla konta usługi Azure Cosmos DB
Poniżej przedstawiono operacje płaszczyzny sterowania dostępne na poziomie konta. Większość operacji jest śledzona na poziomie konta. Te operacje są dostępne jako metryki w usłudze Azure Monitor:
- Dodano region
- Usunięto region
- Konto usunięte
- Przełączony region w tryb failover
- Utworzone konto
- Usunięto sieć wirtualną
- Zaktualizowano ustawienia sieci konta
- Zaktualizowano ustawienia replikacji konta
- Zaktualizowano klucze konta
- Zaktualizowano ustawienia kopii zapasowej konta
- Zaktualizowano ustawienia diagnostyczne konta
Operacje płaszczyzny sterowania dla bazy danych lub kontenerów
Poniżej przedstawiono operacje płaszczyzny sterowania dostępne na poziomie bazy danych i kontenera. Te operacje są dostępne jako metryki w usłudze Azure Monitor:
- Utworzono bazę danych SQL Database
- Zaktualizowano bazę danych SQL Database
- Zaktualizowano przepływność usługi SQL Database
- Usunięto bazę danych SQL
- Utworzony kontener SQL
- Zaktualizowano kontener SQL
- Zaktualizowano przepływność kontenera SQL
- Usunięto kontener SQL
- Utworzono usługę Cassandra Keyspace
- Zaktualizowano przestrzeń kluczy Cassandra
- Zaktualizowano przepływność usługi Cassandra Keyspace
- Usunięto przestrzeń kluczy Cassandra
- Utworzono tabelę Cassandra
- Zaktualizowano tabelę Cassandra
- Zaktualizowano przepływność tabeli Cassandra
- Usunięto tabelę Cassandra
- Utworzono bazę danych języka Gremlin
- Zaktualizowano bazę danych języka Gremlin
- Zaktualizowano przepływność bazy danych Gremlin
- Usunięto bazę danych Języka Gremlin
- Utworzony wykres Gremlin
- Zaktualizowano wykres języka Gremlin
- Zaktualizowano przepływność programu Gremlin Graph
- Usunięto wykres języka Gremlin
- Utworzono bazę danych Mongo
- Zaktualizowano bazę danych Mongo
- Zaktualizowano przepływność bazy danych Mongo
- Usunięto bazę danych Mongo
- Utworzono kolekcję Mongo
- Zaktualizowano kolekcję Mongo
- Zaktualizowano przepływność kolekcji Mongo
- Usunięto kolekcję Mongo
- Utworzono tabelę AzureTable
- Zaktualizowano tabelę AzureTable
- Zaktualizowano przepływność tabeli AzureTable
- Usunięto tabelę AzureTable
Operacje dziennika diagnostycznego
Poniżej przedstawiono nazwy operacji w dziennikach diagnostycznych dla różnych operacji:
- RegionAddStart, RegionAddComplete
- RegionRemoveStart, RegionRemoveComplete
- AccountDeleteStart, AccountDeleteComplete
- RegionFailoverStart, RegionFailoverComplete
- AccountCreateStart, AccountCreateComplete
- AccountUpdateStart, AccountUpdateComplete
- VirtualNetworkDeleteStart, VirtualNetworkDeleteComplete
- DiagnosticLogUpdateStart, DiagnosticLogUpdateComplete
W przypadku operacji specyficznych dla interfejsu API operacja ma następujący format:
- ApiKind + ApiKindResourceType + OperationType
- ApiKind + ApiKindResourceType + "Przepływność" + typ operacji
Przykład
- CassandraKeyspacesTworzenie
- CassandraKeyspacesUpdate
- CassandraKeyspacesThroughputUpdate
- SqlContainersUpdate
Właściwość ResourceDetails zawiera całą treść zasobu jako ładunek żądania i zawiera wszystkie właściwości żądane do zaktualizowania
Zapytania dziennika diagnostycznego dotyczące operacji płaszczyzny sterowania
Poniżej przedstawiono kilka przykładów pobierania dzienników diagnostycznych dla operacji płaszczyzny sterowania:
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"
Wykonaj zapytanie, aby pobrać identyfikator activityId i obiekt wywołujący, który zainicjował operację usuwania kontenera:
(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
Wykonaj zapytanie w celu pobrania aktualizacji indeksu lub czasu wygaśnięcia. Następnie możesz porównać dane wyjściowe tego zapytania z wcześniejszą aktualizacją, aby zobaczyć zmianę indeksu lub czasu wygaśnięcia.
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:}