Creare un monitoraggio connessione usando ARMClient

Importante

La funzionalità Monitoraggio connessione (versione classica) è deprecata e non è più disponibile. Per altre informazioni, vedere Eseguire la migrazione da Monitoraggio connessione (versione classica) per eseguire la migrazione dei monitoraggi delle connessioni da Monitoraggio connessione (versione classica) al nuovo monitoraggio connessione.

Informazioni su come creare Monitoraggio connessione per monitorare la comunicazione tra le risorse usando ARMClient. Supporta distribuzioni ibride e cloud di Azure.

Operazioni preliminari

Nei monitoraggi di connessione creati in Monitoraggio connessione è possibile aggiungere sia computer locali che macchine virtuali di Azure come origini. Questi monitoraggi delle connessioni possono anche monitorare la connettività agli endpoint. Gli endpoint possono trovarsi in Azure o in qualsiasi altro URL o IP.

Monitoraggio connessione include le entità seguenti:

  • Risorsa di monitoraggio delle connessioni: risorsa di Azure specifica dell'area. Tutte le entità seguenti sono proprietà di una risorsa di monitoraggio delle connessioni.

  • Endpoint: origine o destinazione che partecipa ai controlli di connettività. Esempi di endpoint includono macchine virtuali di Azure, agenti locali, URL e indirizzi IP.

  • Configurazione di test: configurazione specifica del protocollo per un test. In base al protocollo scelto, è possibile definire la porta, le soglie, la frequenza dei test e altri parametri.

  • Gruppo di test: gruppo che contiene endpoint di origine, endpoint di destinazione e configurazioni dei test. Un monitoraggio delle connessioni può contenere più gruppi di test.

  • Test: combinazione di un endpoint di origine, un endpoint di destinazione e una configurazione di test. Un test è il livello più granulare in cui sono disponibili i dati di monitoraggio. I dati di monitoraggio includono la percentuale di controlli non superati e il tempo di round trip.

    Diagramma che mostra un monitoraggio della connessione, definendo la relazione tra i gruppi di test e i test

Procedura per creare un monitoraggio connessione tramite ARMClient

Usare il codice seguente per creare un monitoraggio connessione usando ARMClient.

$connectionMonitorName = "sampleConnectionMonitor"

$ARM = "https://management.azure.com"

$SUB = "subscriptions/<subscription id 1>;"

$NW = "resourceGroups/NetworkWatcherRG/providers/Microsoft.Network/networkWatchers/NetworkWatcher\_<region>"

$body =

"{

location: '<region>',

properties: {

endpoints: [{

name: 'endpoint_workspace_machine',

type: 'MMAWorkspaceMachine',

resourceId: '/subscriptions/<subscription id>/resourcegroups/<resource group>/providers/Microsoft.OperationalInsights/workspaces/sampleWorkspace',

//Example 1: Choose a machine

address : '<non-Azure machine FQDN>'
}

//Example 2: Select IP from chosen machines

address : '<non-Azure machine FQDN>

"scope": {
      "include": [
            {
                  "address": "<IP belonging to machine chosen above>"  
	    }
       ]
      }
   }    
   
name: 'endpoint_workspace_network',

type: 'MMAWorkspaceNetwork',

resourceId: '/subscriptions/<subscription id>/resourcegroups/<resource group>/providers/Microsoft.OperationalInsights/workspaces/sampleWorkspace',

 coverage level : 'high', //Optional
 
 //Include subnets. You can also exclude IPs from subnet to exclude from monitoring
 
 scope: {
      "include": [
            {
                  "address": "<subnet 1 mask>" // Eg: 10.10.1.0/28
            },
            {
                  "address": "<subnet 2 mask>" 
            }
      ],
      "exclude": [
      		{ 
      		"address" : "<ip-from-included-subnets-that-should-be-excluded>"
		}
      ]
     }
},

//Use a Azure VM as an endpoint
{

name: 'endpoint_virtualmachine',

resourceId: '/subscriptions/<subscription id>/resourceGroups/<resource group>/providers/Microsoft.Compute/virtualMachines/<vm-name>'

},

//Use an Azure VNET or Subnet as an endpoint

 {

name: 'endpoint_vnet_subnet',

resourceId: '<resource id of VNET or subnet'
coverage level: 'high' //Optional

//Scope is optional.

  "scope": {
      "include": [
            {
                  "address": "<subnet 1 mask>" // Eg: 10.10.1.0/28 .This subnet should match with any existing subnet in vnet
            }
      ],
    "exclude": [
            {
                  "address": "<ip-from-included-subnets-that-should-be-excluded>" // If used with include, IP should be part of the subnet defined above. Without include, this could be any address within vnet range or any specific subnet range as a whole.
            }
      ]
  }
   },

//Endpoint as a URL
{

name: 'azure portal'

address: '<URL>'

   },

//Endpoint as an IP 
 {

    name: 'ip',

     address: '<IP>'

 }

  ],

  testGroups: [{

    name: 'Connectivity to Azure Portal and Public IP',

    testConfigurations: ['http', 'https', 'tcpEnabled', 'icmpEnabled'],

    sources: ['vm1', 'workspace'],

    destinations: ['azure portal', 'ip']

   },

{

    name: 'Connectivty from Azure VM 1 to Azure VM 2',

   // Choose your protocol
   
    testConfigurations: ['http', 'https', 'tcpDisabled', 'icmpDisabled'],

    sources: ['vm1'],

    destinations: ['vm2'],

    disable: true

   }

  ],

  testConfigurations: [{

    name: 'http',

    testFrequencySec: <frequency>,

    protocol: 'HTTP',

    successThreshold: {

     checksFailedPercent: <threshold for checks failed %>,

     roundTripTimeMs: <threshold for RTT>

    }

   }, {

    name: 'https',

    testFrequencySec: <frequency>,

    protocol: 'HTTP',

    httpConfiguration: {
    
     port: '<port of choice>'
  
    preferHTTPS: true // If port chosen isn't 80 or 443
    
    method: 'GET', //Choose GET or POST
    
    path: '/', //Specify path for request
         
    requestHeaders: [
            {
              "name": "Content-Type",
              "value": "appication/json"
            }
          ],
          
    validStatusCodeRanges: [ "102", "200-202", "3xx" ], //Samples
          
    },

    successThreshold: {

     checksFailedPercent: <choose your checks failed threshold>,

     roundTripTimeMs: <choose your RTT threshold>

    }

   }, 
   {

    name: 'tcpEnabled',

    testFrequencySec: <frequency>,

    protocol: 'TCP',

    tcpConfiguration: {

     port: 80

    },

    successThreshold: {

     checksFailedPercent: <choose your checks failed threshold>,

     roundTripTimeMs: <choose your RTT threshold>

    }

   }, {

    name: 'icmpEnabled',

    testFrequencySec: <frequency>,

    protocol: 'ICMP',

    successThreshold: {

     checksFailedPercent: <choose your checks failed threshold>,

     roundTripTimeMs: <choose your RTT threshold>

    }

   }, {

    name: 'icmpDisabled',

    testFrequencySec: <frequency>,

    protocol: 'ICMP',

    icmpConfiguration: {

     disableTraceRoute: true

    },

    successThreshold: {

     checksFailedPercent: <choose your checks failed threshold>,

     roundTripTimeMs: <choose your RTT threshold>

    }

   }, {

    name: 'tcpDisabled',

    testFrequencySec: <frequency>,

    protocol: 'TCP',

    tcpConfiguration: {

     port: 80,

     disableTraceRoute: true

    },

    successThreshold: {

     checksFailedPercent: <choose your checks failed threshold>,

     roundTripTimeMs: <choose your RTT threshold>

    }

   }

  ]

 }

} "

Ecco il comando di distribuzione:

armclient PUT $ARM/$SUB/$NW/connectionMonitors/$connectionMonitorName/?api-version=2019-07-01 $body -verbose

Descrizione delle proprietà

  • connectionMonitorName - Nome della risorsa monitoraggio connessione

  • SUB - ID sottoscrizione della sottoscrizione in cui si vuole creare il monitoraggio della connessione

  • NW - ID risorsa Network Watcher in cui viene creato CM

  • location - Area in cui viene creato il monitoraggio della connessione

  • Endpoint

    • name: nome univoco per ogni endpoint
    • resourceId: per gli endpoint di Azure, l'ID risorsa fa riferimento all'ID risorsa di Azure Resource Manager per le macchine virtuali. Per gli endpoint non di Azure, l'ID risorsa fa riferimento all'ID risorsa di Azure Resource Manager per l'area di lavoro Log Analytics collegata agli agenti non Azure.
    • address: applicabile solo quando l'ID risorsa non è specificato o se l'ID risorsa è l'area di lavoro Log Analytics. Se usato con l'ID risorsa di Log Analytics, si riferisce al nome di dominio completo dell'agente che può essere usato per il monitoraggio. Se usato senza ID risorsa, può essere l'URL o l'INDIRIZZO IP di qualsiasi endpoint pubblico.
    • filter: per gli endpoint non di Azure, usare il filtro per selezionare gli agenti dall'area di lavoro Log Analytics che verranno usati per il monitoraggio nella risorsa monitoraggio connessione. Se i filtri non sono impostati, tutti gli agenti appartenenti all'area di lavoro Log Analytics possono essere usati per il monitoraggio
      • type: impostare il tipo come "Indirizzo agente"
      • address: impostare l'indirizzo come FQDN dell'agente locale
  • Gruppi di test

    • name: assegnare un nome al gruppo di test.
    • testConfigurations - Testare le configurazioni in base agli endpoint di origine che si connettono agli endpoint di destinazione
    • sources : scegliere tra gli endpoint creati in precedenza. Gli endpoint di origine basati su Azure devono avere installato l'estensione Azure Network Watcher e gli endpoint di origine non basati su Azure devono avere l'agente di Azure Log Analytics installato. Per installare un agente per l'origine, vedere Installare gli agenti di monitoraggio.
    • destinazioni: scegliere tra gli endpoint creati in precedenza. È possibile monitorare la connettività alle macchine virtuali di Azure o a qualsiasi endpoint (indirizzo IP pubblico, URL o FQDN) specificandoli come destinazioni. In un singolo gruppo di test è possibile aggiungere macchine virtuali di Azure, URL di Office 365, URL di Dynamics 365 ed endpoint personalizzati.
    • disable : usare questo campo per disabilitare il monitoraggio per tutte le origini e le destinazioni specificate dal gruppo di test.
  • Configurazioni di test

    • name: nome della configurazione di test.

    • testFrequencySec: specificare la frequenza con cui le origini eseguiranno il ping delle destinazioni sul protocollo e sulla porta specificate. È possibile scegliere 30 secondi, 1 minuto, 5 minuti, 15 minuti o 30 minuti. Le origini testeranno la connettività alle destinazioni in base al valore scelto. Ad esempio, se si seleziona 30 secondi, le origini verificheranno la connettività alla destinazione almeno una volta in un periodo di 30 secondi.

    • protocollo: è possibile scegliere TCP, ICMP, HTTP o HTTPS. A seconda del protocollo, è possibile eseguire alcune configurazioni specifiche del protocollo

      • preferHTTPS : specificare se usare HTTPS su HTTP, quando la porta usata non è 80 né 443
      • port : specificare la porta di destinazione desiderata.
      • disableTraceRoute: si applica alle configurazioni di test il cui protocollo è TCP o ICMP. Impedisce alle origini di individuare la topologia e il RTT hop per hop.
      • method: applicato alle configurazioni di test il cui protocollo è HTTP. Selezionare il metodo di richiesta HTTP: GET o POST
      • path - Specificare i parametri di percorso da aggiungere all'URL
      • validStatusCodes: scegliere i codici di stato applicabili. Se il codice di risposta non corrisponde a questo elenco, verrà visualizzato un messaggio di diagnostica
      • requestHeaders : specificare stringhe di intestazione di richiesta personalizzate che verranno passate alla destinazione
    • successThreshold: è possibile impostare soglie sui parametri di rete seguenti:

      • checksFailedPercent: impostare la percentuale di controlli che possono avere esito negativo quando le origini controllano la connettività alle destinazioni usando i criteri specificati. Per il protocollo TCP o ICMP, la percentuale di controlli non riusciti può essere equivalente alla percentuale di perdita di pacchetti. Per il protocollo HTTP, questo campo rappresenta la percentuale di richieste HTTP che non hanno ricevuto alcuna risposta.
      • roundTripTimeMs: impostare il valore RTT in millisecondi per quanto tempo le origini possono richiedere per connettersi alla destinazione tramite la configurazione di test.

Limiti di scalabilità

I monitoraggi delle connessioni presentano i limiti di scalabilità seguenti:

  • Numero massimo di monitoraggi delle connessioni per sottoscrizione per area: 100
  • Numero massimo di gruppi di test per ogni monitoraggio delle connessioni: 20
  • Numero massimo di origini e destinazioni per ogni monitoraggio delle connessioni: 100
  • Numero massimo di configurazioni di test per monitoraggio connessione: 20 tramite ARMClient

Passaggi successivi