使用 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 個