Dela via


Så här granskar du azure Cosmos DB-kontrollplansåtgärder

GÄLLER FÖR: NoSQL MongoDB Kassandra Gremlin Bord

Kontrollplan i Azure Cosmos DB är en RESTful-tjänst som gör att du kan utföra en mängd olika åtgärder på Azure Cosmos DB-kontot. Den exponerar en offentlig resursmodell (till exempel databas, konto) och olika åtgärder för slutanvändarna för att utföra åtgärder på resursmodellen. Kontrollplansåtgärderna omfattar ändringar i Azure Cosmos DB-kontot eller containern. Till exempel är åtgärder som att skapa ett Azure Cosmos DB-konto, lägga till en region, uppdatera dataflöde, regionredundans, lägga till ett virtuellt nätverk osv. några av kontrollplansåtgärderna. Den här artikeln beskriver hur du granskar kontrollplansåtgärderna i Azure Cosmos DB. Du kan köra kontrollplansåtgärderna på Azure Cosmos DB-konton med hjälp av Azure CLI, PowerShell eller Azure-portalen, medan du använder Azure CLI eller PowerShell för containrar.

Följande är några exempelscenarier där granskning av kontrollplansåtgärder är till hjälp:

  • Du vill få en avisering när brandväggsreglerna för ditt Azure Cosmos DB-konto ändras. Aviseringen krävs för att hitta obehöriga ändringar av regler som styr nätverkssäkerheten för ditt Azure Cosmos DB-konto och vidta snabba åtgärder.

  • Du vill få en avisering om en ny region läggs till eller tas bort från ditt Azure Cosmos DB-konto. Att lägga till eller ta bort regioner påverkar kraven på fakturering och datasuveränitet. Den här aviseringen hjälper dig att identifiera ett oavsiktligt tillägg eller borttagning av regionen på ditt konto.

  • Du vill få mer information från diagnostikloggarna om vad som har ändrats. Ett virtuellt nätverk har till exempel ändrats.

Inaktivera skrivåtkomst för nyckelbaserade metadata

Innan du granskar kontrollplansåtgärderna i Azure Cosmos DB inaktiverar du skrivåtkomsten för nyckelbaserade metadata på ditt konto. När skrivåtkomst för nyckelbaserade metadata inaktiveras hindras klienter som ansluter till Azure Cosmos DB-kontot via kontonycklar från att komma åt kontot. Du kan inaktivera skrivåtkomst genom att ange disableKeyBasedMetadataWriteAccess egenskapen till true. När du har angett den här egenskapen kan ändringar av alla resurser ske från en användare med rätt Azure-roll och autentiseringsuppgifter. Mer information om hur du anger den här egenskapen finns i artikeln Förhindra ändringar från SDK:er .

disableKeyBasedMetadataWriteAccess Om SDK-baserade klienter kör skapande- eller uppdateringsåtgärder när har aktiverats returneras felet "Operation 'POST' på resursen 'ContainerNameorDatabaseName' inte via Azure Cosmos DB-slutpunkten. Du måste aktivera åtkomst till sådana åtgärder för ditt konto eller utföra åtgärderna för att skapa/uppdatera via Azure Resource Manager, Azure CLI eller Azure PowerShell. Om du vill växla tillbaka anger du disableKeyBasedMetadataWriteAccess till false med hjälp av Azure CLI enligt beskrivningen i artikeln Förhindra ändringar från Azure Cosmos DB SDK . Se till att ändra värdet disableKeyBasedMetadataWriteAccess för till false i stället för sant.

Tänk på följande när du inaktiverar skrivåtkomsten för metadata:

  • Utvärdera och se till att dina program inte gör metadataanrop som ändrar ovanstående resurser (till exempel skapa samling, uppdatera dataflöde, ...) med hjälp av SDK eller kontonycklar.

  • När disableKeyBasedMetadataWriteAccess värdet är true blockeras de metadataåtgärder som utfärdas av SDK:et. Du kan också använda Azure-portalen, Azure CLI, Azure PowerShell eller Azure Resource Manager-malldistributioner för att utföra dessa åtgärder.

Aktivera diagnostikloggar för kontrollplansåtgärder

Du kan aktivera diagnostikloggar för kontrollplansåtgärder med hjälp av Azure-portalen. När du har aktiverat den registrerar diagnostikloggarna åtgärden som ett par start- och slutförda händelser med relevant information. Till exempel slutför RegionFailoverStart och RegionFailoverComplete regionredundanshändelsen.

Använd följande steg för att aktivera loggning av kontrollplansåtgärder:

  1. Logga in på Azure-portalen och gå till ditt Azure Cosmos DB-konto.

  2. Öppna fönstret Diagnostikinställningar och ange ett Namn för loggarna som ska skapas.

  3. Välj ControlPlaneRequests för loggtyp och välj alternativet Skicka till Log Analytics .

  4. Du kan också skicka diagnostikloggarna till Azure Storage, Azure Event Hubs, Azure Monitor eller en tredje part.

Du kan också lagra loggarna på ett lagringskonto eller dataström till en händelsehubb. Den här artikeln visar hur du skickar loggar till log analytics och sedan frågar efter dem. När du har aktiverat det tar det några minuter innan diagnostikloggarna börjar gälla. Alla kontrollplansåtgärder som utförs efter den punkten kan spåras. Följande skärmbild visar hur du aktiverar kontrollplansloggar:

Aktivera loggning av kontrollplansbegäranden

Visa kontrollplansåtgärderna

När du har aktiverat loggning använder du följande steg för att spåra åtgärder för ett specifikt konto:

  1. Logga in på Azure-portalen.

  2. Öppna fliken Övervaka i det vänstra navigeringsfönstret och välj sedan fönstret Loggar . Det öppnar ett användargränssnitt där du enkelt kan köra frågor med det specifika kontot i omfånget. Kör följande fråga för att visa kontrollplansloggar:

    AzureDiagnostics
    | where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="ControlPlaneRequests"
    | where TimeGenerated >= ago(1h)
    

    Följande skärmbilder samlar in loggar när en konsekvensnivå ändras för ett Azure Cosmos DB-konto. Värdet activityId_g från resultaten skiljer sig från aktivitets-ID:t för en åtgärd:

    Kontrollera planloggar när ett VNet läggs till

    Följande skärmbilder samlar in loggar när nyckelområdet eller en tabell med ett Cassandra-konto skapas och när dataflödet uppdateras. Kontrollplansloggarna för att skapa och uppdatera åtgärder i databasen och containern loggas separat enligt följande skärmbild:

    Kontrollera planloggar när dataflödet uppdateras

Identifiera identiteten som är associerad med en specifik åtgärd

Om du vill felsöka ytterligare kan du identifiera en specifik åtgärd i aktivitetsloggen med hjälp av eller med activityId_g tidsstämpeln för åtgärden. Tidsstämpel används för vissa Resource Manager-klienter där aktivitets-ID:t inte uttryckligen skickas. Aktivitetsloggen innehåller information om identiteten som åtgärden initierades med. Följande skärmbild visar hur du använder activityId_g för att hitta de åtgärder som är associerade med den i aktivitetsloggen:

Använd aktivitets-ID:t och hitta åtgärderna

Kontrollplansåtgärder för Azure Cosmos DB-konto

Följande är de kontrollplansåtgärder som är tillgängliga på kontonivå. De flesta åtgärderna spåras på kontonivå. Dessa åtgärder är tillgängliga som mått i Azure Monitor:

  • Region har lagts till
  • Regionen har tagits bort
  • Kontot har tagits bort
  • Region rederover
  • Kontot har skapats
  • Virtuellt nätverk har tagits bort
  • Kontonätverksinställningarna har uppdaterats
  • Inställningarna för kontoreplikering har uppdaterats
  • Kontonycklarna har uppdaterats
  • Inställningarna för kontosäkerhetskopiering har uppdaterats
  • Kontodiagnostikinställningarna har uppdaterats

Kontrollplansåtgärder för databas eller containrar

Följande är de kontrollplansåtgärder som är tillgängliga på databas- och containernivå. Dessa åtgärder är tillgängliga som mått i Azure Monitor:

  • SQL Database har skapats
  • SQL Database har uppdaterats
  • SQL Database-dataflödet har uppdaterats
  • SQL Database har tagits bort
  • SQL-container har skapats
  • SQL-containern har uppdaterats
  • SQL Container-dataflödet har uppdaterats
  • SQL-containern har tagits bort
  • Cassandra-nyckelområde har skapats
  • Cassandra-nyckelutrymmet har uppdaterats
  • Cassandra Keyspace-dataflödet har uppdaterats
  • Cassandra-nyckelområdet har tagits bort
  • Cassandra-tabell skapad
  • Cassandra-tabellen har uppdaterats
  • Dataflödet i Cassandra-tabellen har uppdaterats
  • Cassandra-tabellen har tagits bort
  • Gremlin-databas skapad
  • Gremlin-databasen har uppdaterats
  • Gremlin Database-dataflödet har uppdaterats
  • Gremlin-databasen har tagits bort
  • Gremlin Graph har skapats
  • Gremlin Graph har uppdaterats
  • Gremlin Graph-dataflödet har uppdaterats
  • Gremlin Graph borttaget
  • Mongo-databas skapad
  • Mongo-databasen har uppdaterats
  • Mongo Database-dataflödet har uppdaterats
  • Mongo-databasen har tagits bort
  • Mongo-samling skapad
  • Mongo-samlingen har uppdaterats
  • Mongo-samlingens dataflöde har uppdaterats
  • Mongo-samlingen har tagits bort
  • Skapad AzureTable-tabell
  • AzureTable-tabellen har uppdaterats
  • Dataflödet i AzureTable-tabellen har uppdaterats
  • Borttagen AzureTable-tabell

Diagnostikloggåtgärder

Följande är åtgärdsnamnen i diagnostikloggarna för olika åtgärder:

  • RegionAddStart, RegionAddComplete
  • RegionRemoveStart, RegionRemoveComplete
  • AccountDeleteStart, AccountDeleteComplete
  • RegionFailoverStart, RegionFailoverComplete
  • AccountCreateStart, AccountCreateComplete
  • AccountUpdateStart, AccountUpdateComplete
  • VirtualNetworkDeleteStart, VirtualNetworkDeleteComplete
  • DiagnosticLogUpdateStart, DiagnosticLogUpdateComplete

För API-specifika åtgärder namnges åtgärden med följande format:

  • ApiKind + ApiKindResourceType + OperationType
  • ApiKind + ApiKindResourceType + "Dataflöde" + operationType

Exempel

  • CassandraKeyspacesSkapa
  • CassandraKeyspacesUpdate
  • CassandraKeyspacesThroughputUpdate
  • SqlContainersUpdate

Egenskapen ResourceDetails innehåller hela resurstexten som en nyttolast för begäran och innehåller alla egenskaper som begärs för uppdatering

Diagnostikloggfrågor för kontrollplansåtgärder

Följande är några exempel för att hämta diagnostikloggar för kontrollplansåtgärder:

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"

Fråga för att hämta activityId och anroparen som initierade containerborttagningsåtgärden:

(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

Fråga för att hämta index- eller ttl-uppdateringar. Du kan sedan jämföra utdata från den här frågan med en tidigare uppdatering för att se ändringen i index eller ttl.

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

Nästa steg