Criar um monitor de conexão usando o ARMClient

Importante

A partir de 1 de julho de 2021, você não poderá adicionar novos testes a um workspace existente ou habilitar um novo workspace no Monitor de Desempenho de Rede. Também não será possível adicionar novos monitores de conexão no Monitor da Conexão (clássico). Você pode continuar a usar os testes e os monitores de conexão criados antes de 1 de julho de 2021. Para minimizar a interrupção do serviço de suas cargas de trabalho atuais, migre os testes do Monitor de Desempenho de Rede ou migre do Monitor da Conexão (clássico) para o novo Monitor da Conexão no Observador de Rede do Azure, antes de 29 de fevereiro de 2024.

Saiba como criar um monitor de conexão para monitorar a comunicação entre seus recursos usando o ARMClient. Ele dá suporte a implantações de nuvem híbridas e do Azure.

Antes de começar

Nos monitores de conexão criados no Monitor da Conexão, você pode adicionar máquinas locais e VMs do Azure como origens. Esses monitores de conexão também podem monitorar a conectividade com pontos de extremidade. Os pontos de extremidade podem estar no Azure ou em qualquer outra URL ou IP.

O Monitor da Conexão inclui as seguintes entidades:

  • Recurso do Monitor de Conexão – Um recurso do Azure específico da região. Todas as entidades a seguir são propriedades de um recurso de um monitor de conexão.

  • Ponto de extremidade – Uma origem ou destino que participa das verificações de conectividade. Os exemplos de pontos de extremidade incluem VMs do Azure, agentes locais, URLs e IPs.

  • Configuração de teste – Uma configuração específica de protocolos para um teste. Com base no protocolo escolhido, você pode definir a porta, os limites, a frequência do teste e outros parâmetros.

  • Grupo de teste – O grupo contém pontos de extremidade de origem, pontos de extremidade de destino e configurações de teste. Um monitor de conexão pode conter mais de um grupo de teste.

  • Teste – A combinação entre um ponto de extremidade de origem, um ponto de extremidade de destino e uma configuração de teste. Um teste é o nível mais granular no qual os dados de monitoramento estão disponíveis. Os dados de monitoramento incluem o percentual de verificações que falharam e o RTT (tempo de ida e volta).

    Diagrama mostrando um monitor de conexão, definindo a relação entre os grupos de teste e os testes

Etapas para criar um monitor de conexão usando o ARMClient

Use o código a seguir para criar um monitor de conexão usando o 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>

    }

   }

  ]

 }

} "

Este é o comando de implantação:

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

Descrição das propriedades

  • connectionMonitorName – Nome do recurso de monitor de conexão

  • SUB – ID da assinatura na qual deseja criar um monitor de conexão

  • NW – ID do recurso do Observador de Rede no qual um CM será criado

  • local – região na qual o monitor de conexão será criado

  • Pontos de extremidade

    • nome – Nome exclusivo para cada ponto de extremidade
    • resourceId: para pontos de extremidade do Azure, a ID do recurso refere-se à ID do recurso Azure Resource Manager para máquinas virtuais. Para pontos de extremidade não Azure, a ID do recurso se refere à ID do recurso Azure Resource Manager para o workspace do Log Analytics vinculado a agentes não Azure.
    • endereço – Aplicável somente quando a ID de recurso não for especificada ou se a ID de recurso for workspace do Log Analytics. Se usado com a ID de recurso do Log Analytics, isso se refere ao FQDN do agente que pode ser usado para monitoramento. Se utilizado sem uma ID de recurso, pode ser a URL ou o IP de qualquer ponto de extremidade público.
    • filtro – para pontos de extremidade não Azure, use filtrar para selecionar agentes do workspace do Log Analytics que será usado para monitoramento no recurso de monitor de conexão. Se os filtros não forem definidos, todos os agentes pertencentes ao workspace do Log Analytics poderão ser usados para monitoramento
      • tipo – definir tipo como "endereço do agente"
      • endereço – definir endereço como o FQDN do seu agente local
  • Grupos de teste

    • nome – Nomeie seu grupo de teste.
    • testConfigurations – testar configurações com base em quais pontos de extremidade de origem se conectam aos pontos de extremidade de destino
    • fontes – escolher entre os pontos de extremidade criados acima. Os pontos de extremidade de origem baseados no Azure precisam ter a extensão do Observador de Rede do Azure instalada e pontos de extremidade de origem não baseados no Azure precisam ter um agente do Log Analytics do Azure instalado. Para instalar um agente para sua origem, consulte Instalar agentes de monitoramento.
    • destinos – escolher entre os pontos de extremidade criados acima. É possível monitorar a conectividade com as VMs do Azure ou qualquer ponto de extremidade (um IP público, uma URL ou um FQDN) especificando-os como destinos. Em um único grupo de teste, é possível adicionar VMs do Azure, URLs do Office 365, URLs do Dynamics 365 e pontos de extremidade personalizados.
    • desabilitar – usar este campo para desabilitar o monitoramento de todas as origens e destinos que o grupo de testes especifica.
  • Configurações de teste

    • nome – nome da configuração de teste.

    • testFrequencySec – especifique com que frequência as origens executarão ping nos destinos no protocolo e na porta especificada. É possível escolher 30 segundos, 1 minuto, 5 minutos, 15 minutos ou 30 minutos. As origens testam a conectividade a destinos com base no valor escolhido. Por exemplo, se selecionar 30 segundos, as origens verificarão a conectividade com o destino pelo menos uma vez em um período de 30 segundos.

    • protocolo – escolha TCP, ICMP, HTTP ou HTTPS. Dependendo do protocolo, é possível fazer algumas configurações específicas do protocolo

      • preferHTTPS – especificar se deseja usar HTTPS em vez de HTTP, quando a porta usada não for 80 nem 443
      • porta – especifique a porta de destino de sua escolha.
      • disableTraceRoute – isto se aplica a configurações de teste cujo protocolo é TCP ou ICMP. Impede que as origens descubram a topologia e o RTT de salto a salto.
      • método – aplicado a configurações de teste cujo protocolo é HTTP. Selecione o método de solicitação HTTP – GET ou POST
      • caminho – especifique os parâmetros de caminho a serem acrescentados à URL
      • validStatusCodes – escolha os códigos de status aplicáveis. Se o código de resposta não corresponder a essa lista, você receberá uma mensagem de diagnóstico
      • requestHeaders – especifique cadeias de caracteres de cabeçalho de solicitação personalizadas que farão com que sejam passadas para o destino
    • successThreshold – é possível definir limites nos seguintes parâmetros de rede:

      • checksFailedPercent – Defina a porcentagem de verificações que podem falhar quando as origens verificam a conectividade com os destinos usando os critérios especificados. Para o protocolo TCP ou ICMP, a porcentagem de verificações com falha pode ser igual à porcentagem de perda de pacotes. Para o protocolo HTTP, esse campo representa a porcentagem de solicitações HTTP que não receberam resposta.
      • roundTripTimeMs – Defina o RTT em milissegundos para quanto tempo as origens podem levar para se conectar ao destino pela configuração de teste.

Limites de escala

Os monitores de conexão têm os seguintes limites de escala:

  • Máximo de monitores de conexão por assinatura por região: 100
  • Máximo de grupos de teste por monitor de conexão: 20
  • Máximo de origens e destinos por monitor de conexão: 100
  • Máximo de configurações de teste por monitor de conexão: 20 por meio do ARMClient

Próximas etapas