共用方式為


使用 ARMClient 建立連線監視器

重要

線上監視器 (傳統) 已被取代,且不再可用。 如需詳細資訊,請參閱從連線監視器 (傳統版) 移轉,將連線監視器從連線監視器 (傳統版) 移轉至新的連線監視器。

了解如何建立連線監視器,以使用 ARMClient 監視資源間的通訊。 此功能支援混合式與 Azure 雲端部署。

開始之前

您在「連線監視器」建立的連線監視器,可以將內部部署機器和 Azure VM 新增為來源。 這些連線監視器也可以監視端點的連線能力。 端點可以位於 Azure 或任何其他 URL 或 IP 上。

連接監視包含下列實體:

  • 連線監視器資源 – 區域特定的 Azure 資源。 下列所有實體都是連線監視器資源的屬性。

  • 端點 – 參與連線檢查的來源或目的地。 端點的例子包括 Azure VM、內部部署代理程式、URL 和 IP。

  • 測試設定 – 適用於測試的通訊協定特定設定。 根據您選擇的通訊協定,您可以定義連接埠、閾值、測試頻率及其他參數。

  • 測試群組 – 包含來源端點、目的地端點和測試設定的群組。 一個連接監視器可以包含一個以上的測試群組。

  • 測試 – 來源端點、目的地端點和測試設定的組合。 測試是監視資料可達到的最細微層級。 監視資料包括失敗檢查的百分比和往返時間 (RTT)。

    顯示連接監視器的圖表,定義測試群組與測試之間的關聯性

使用 ARMClient 建立連線監視器的步驟

使用下列命令,透過 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>

    }

   }

  ]

 }

} "

以下是部署命令:

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

屬性的描述

  • connectionMonitorName:連線監視器資源的名稱

  • SUB:您要在其中建立連線監視器訂閱的訂閱識別碼

  • NW - 網路監看員 建立 CM 的資源識別碼

  • location - 建立連線監視器的區域

  • 端點

    • name:每個端點的唯一名稱。
    • resourceId – :針對 Azure 端點,資源識別碼是指虛擬機器 的 Azure Resource Manager 資源識別碼。 針對非 Azure 端點,資源識別碼是指連結至非 Azure 代理程式之 Log Analytics 工作區的 Azure Resource Manager 資源識別碼。
    • address:僅當未指定資源識別碼時或若資源識別碼為 Log Analytics 工作區,才適用。 如果搭配 Log Analytics 資源識別碼使用,此項目指可用於間式的代理程式 FQDN。 如並非搭配資源識別碼使用,則此項目可為任何公用端點的 URL 或 IP。
    • filter:針對非 Azure 端點,請使用篩選從 Log Analytics 工作區中選取將用於監視連線監視資源的代理程式。 如未設定篩選條件,則屬於 Log Analytics 工作區的所有代理程式均可用於監視
      • type:將類型設定為 「Agent Address」
      • address:將地址設定為內部部署代理程式的 FQDN
  • 測試群組

    • name:命名您的測試群組。
    • testConfigurations:根據來源端點連線到目的地端點的測試組態
    • sources:從先前建立的端點中進行選擇。 Azure 型來源端點必須安裝 Azure 網路監看員延伸模組,而非 Azure 型來源端點必須安裝 Azure Log Analytics 代理程式。 若要為您的來源安裝代理程式,請參閱安裝監視代理程式
    • destinations:從先前建立的端點中進行選擇。 您可以將 Azure VM 或任何端點 (公用 IP、URL 或 FQDN) 指定為目的地,以監視對 Azure VM 的連線。 在單一測試群組中,您可以新增 Azure VM、Office 365 URL、Dynamics 365 URL 和自訂端點。
    • disable:使用此欄位來停用測試群組所指定所有來源和目的地的監視。
  • 測試組態

    • name:為測試組態命名。

    • testFrequencySec:指定來源在通訊協定和連接埠上偵測目的地的頻率。 您可以選擇 30 秒、1 分鐘、5 分鐘、15 分鐘或 30 分鐘。 來源將根據您選擇的值測試目的地的連線能力。 例如,如果您選取 30 秒,來源將每 30 秒檢查至少一次目的地的連線能力。

    • 通訊協定 - 您可以選擇 TCP、ICMP、HTTP 或 HTTPS。 視通訊協定而定,您可以執行一些通訊協定特定的設定

      • preferHTTPS:指定當使用的連接埠並非 80 或 443 時,是否要使用 HTTPS 而非 HTTP
      • port:指定您選擇的目的地連接埠。
      • disableTraceRoute:這適用於通訊協定為 TCP 或 ICMP 的測試組態。 此組態會停止來源探索拓撲和逐一躍點的 RTT。
      • method:此組態會套用至通訊協定為 HTTP 的測試組態。 請選取 HTTP 要求方法,可為 GET 或 POST
      • path:指定要附加至 URL 的路徑參數
      • validStatusCodes:選擇適用的狀態程式碼。 如果回應碼不符合此清單,您將會收到診斷訊息
      • requestHeaders:指定將傳遞至目的地的自訂要求標頭字串
    • successThreshold:您可以設定下列網路參數的閾值:

      • checksFailedPercent:使用您指定的準則,設定來源檢查目的地連線能力時可能會失敗的檢查百分比。 針對 TCP 或 ICMP 通訊協定,失敗檢查的百分比可能等於封包遺失的百分比。 針對 HTTP 通訊協定,此欄位代表未收到回應的 HTTP 要求百分比。
      • roundTripTimeMs:以毫秒為單位,設定針對來源透過測試組態連線到目的地所需的 RTT 時間上限。

調整限制

連線監視器具有下列規模限制:

  • 每個區域每個訂閱的連線監視器上限:100
  • 每個連線監視器的測試群組上限:20
  • 每個連線監視器的來源和目的地上限:100
  • 每個連線監視器的測試組態上限:透過 ARMClient 為 20 個

下一步