Skip to content

Commit c98961e

Browse files
committed
Merge branch 'user/basaba/adx-vnet-troubleshoot' of https://github.com/basaba/azure-docs-pr into 2020-3-vnet
2 parents 1d0eb30 + 262f3a9 commit c98961e

File tree

2 files changed

+139
-0
lines changed

2 files changed

+139
-0
lines changed

articles/data-explorer/vnet-deployment.md

Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,3 +258,142 @@ For example, for **West US** region, the following UDRs must be defined:
258258
To deploy Azure Data Explorer cluster into your virtual network, use the [Deploy Azure Data Explorer cluster into your VNet](https://azure.microsoft.com/resources/templates/101-kusto-vnet/) Azure Resource Manager template.
259259

260260
This template creates the cluster, virtual network, subnet, network security group, and public IP addresses.
261+
262+
## Troubleshooting
263+
264+
Learn how to troubleshoot connectivity, operational, cluster creation issues for a cluster that is deployed into your [Virtual Network](/azure/virtual-network/virtual-networks-overview).
265+
266+
## Access issues
267+
268+
If you have an issue while accessing cluster using the public (cluster.region.kusto.windows.net) or private (private-cluster.region.kusto.windows.net) endpoint and you suspect it is related to virtual network setup, follow these steps to troubleshoot the issue.
269+
270+
### Step 1: Check TCP connectivity
271+
272+
#### Check using Windows OS
273+
274+
1. Download [TCping](https://www.elifulkerson.com/projects/tcping.php) to the machine that is connecting to the cluster.
275+
2. Ping the destination from the source machine by using the following command:
276+
```cmd
277+
C:\> tcping -t yourcluster.kusto.windows.net 443
278+
279+
** Pinging continuously. Press control-c to stop **
280+
281+
Probing 1.2.3.4:443/tcp - Port is open - time=100.00ms
282+
```
283+
#### Check using Linux OS
284+
285+
1. Install *netcat* to the machine that is connecting to the cluster
286+
```bash
287+
$ apt-get install netcat
288+
```
289+
2. Ping the destination from the source machine by using the following command:
290+
291+
```bash
292+
$ netcat -z -v yourcluster.kusto.windows.net 443
293+
294+
Connection to yourcluster.kusto.windows.net 443 port [tcp/https] succeeded!
295+
```
296+
297+
If the test is successful, that means that the issue is due to other issue or operational issue, please go to [operational issues](#operational-issues) section to troubleshoot, otherwise proceed with the following steps.
298+
299+
### Step 2: Check Network Secuirty Group (NSG)
300+
301+
Make sure that [Network Security Group](/azure/virtual-network/security-overview) (NSG) attached to the cluster's subnet has an inbound rule that allows the access from the client machine's IP for the port 443.
302+
303+
### Step 3: Check Route Table
304+
305+
If the cluster's subnet has force-tunneling setup to firewall (subnet with a [route table](/azure/virtual-network/virtual-networks-udr-overview) that contains the default route '0.0.0.0/0') make sure that the machine IP address has route with [next hop type](/azure/virtual-network/virtual-networks-udr-overview) to VirtualNetwork/Internet, this is required to prevent asymmetric route issues.
306+
307+
## Ingestion issues
308+
309+
If you're experiencing ingestion issues and you suspect it is related to virtual network setup, follow these steps to troubleshoot the issue.
310+
311+
### Step 1: Check ingestion health
312+
313+
Make sure that the [cluster ingestion metrics](/azure/data-explorer/using-metrics#ingestion-health-and-performance-metrics) indicate healthy state.
314+
315+
### Step 2: Check security rules on source resources
316+
317+
If you see that metrics indicate that no events were processed from data source (*'Events processed (for Event/IoT Hubs)'* metric) make sure that the data source resources (EventHub/Storage) allow access from cluster's subnet in the firewall rules or service endpoints.
318+
<br>
319+
320+
### Step 3: Check security rules configured on cluster's subnet
321+
322+
Make sure cluster's subnet has NSG, UDR and firewall rules are properly configured.
323+
<br>
324+
To test network connectivty for all dependent endpoints follow the steps [here](#step-1:-diagnose-virtual-network-with-the-rest-api).
325+
326+
## Cluster creation and operations issues
327+
328+
If you're experiencing cluster creation or operateion issues and you suspect it is related to virtual network setup, follow these steps to troubleshoot the issue.
329+
330+
### Step 1: Diagnose virtual network with the REST API
331+
332+
The ARMclient is used to call the REST API using PowerShell. The ARMClient is found on chocolatey at [ARMClient on Chocolatey](https://chocolatey.org/packages/ARMClient)
333+
334+
### Log in with ARMClient
335+
336+
```powerShell
337+
armclient login
338+
```
339+
340+
### Invoke diagnose operation.
341+
342+
```powershell
343+
$subscriptionId = '<subscription id>'
344+
$clusterName = '<name of cluster>'
345+
$resourceGroupName = '<resource group name>'
346+
$apiversion = '2019-11-09'
347+
348+
armclient post "https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.Kusto/clusters/$clusterName/diagnoseVirtualNetwork?api-version=$apiversion" -verbose
349+
```
350+
351+
Check the response
352+
353+
```powershell
354+
HTTP/1.1 202 Accepted
355+
...
356+
Azure-AsyncOperation: https://management.azure.com/subscriptions/{subscription-id}/providers/Microsoft.Kusto/locations/{location}/operationResults/{operation-id}?api-version=2019-11-09
357+
...
358+
```
359+
360+
### Wait for the operation completion
361+
```powershell
362+
armclient get https://management.azure.com/subscriptions/$subscriptionId/providers/Microsoft.Kusto/locations/{location}/operationResults/{operation-id}?api-version=2019-11-09
363+
364+
{
365+
"id": "/subscriptions/{subscription-id}/providers/Microsoft.Kusto/locations/{location}/operationresults/{operation-id}",
366+
"name": "{operation-name}",
367+
"status": "[Running/Failed/Completed]",
368+
"startTime": "{start-time}",
369+
"endTime": "{end-time}",
370+
"properties": {...}
371+
}
372+
```
373+
374+
Wait until the *status* property shows *Completed*, then the *properties* field should show:
375+
```powershell
376+
{
377+
"id": "/subscriptions/{subscription-id}/providers/Microsoft.Kusto/locations/{location}/operationresults/{operation-id}",
378+
"name": "{operation-name}",
379+
"status": "Completed",
380+
"startTime": "{start-time}",
381+
"endTime": "{end-time}",
382+
"properties": {
383+
"Findings": [...]
384+
}
385+
}
386+
```
387+
If *Findings* property shows empty result, it means that all network tests passed and no connections are broken, otherwise it will show an error as follows *"Outbound dependency '{dependencyName}:{port}' might be not satisfied (Outbound)"* it means the cluster cannot reach the dependent service's endpoints, proceed with the following steps to troubleshoot.
388+
389+
### Step 2: Check Network Security Group (NSG)
390+
391+
Make sure that the [Network Security Group](/azure/virtual-network/security-overview) is configured properly per the instuctions in [Dependencies for VNet deployment](/azure/data-explorer/vnet-deployment#dependencies-for-vnet-deployment)
392+
393+
### Step 3: Check Route Table
394+
395+
If the cluster's subnet has force-tunneling setup to firewall (subnet with a [route table](/azure/virtual-network/virtual-networks-udr-overview) that contains the default route '0.0.0.0/0') make sure that the [management IP addresses](/azure/data-explorer/vnet-deployment#azure-data-explorer-management-ip-addresses) and [health monitoring IP addresses](/azure/data-explorer/vnet-deployment#health-monitoring-ip-addresses) has route with [next hop type](/azure/virtual-network/virtual-networks-udr-overview##next-hop-types-across-azure-tools) *Internet*, and [source address prefix](/azure/virtual-network/virtual-networks-udr-overview#how-azure-selects-a-route) to *'management-ip/32'* and *'health-monitoring-ip/32'*, this is required to prevent asymmetric route issues.
396+
397+
### Step 4: Check firewall rules
398+
399+
If you force tunnel subnet outbound traffic to a firewall, make sure all dependencies FQDN (e.g. **.blob.core.windows.net*) are allowed in the firewall configuration as described in [Securing outbound traffic with firewall](/azure/data-explorer/vnet-deployment#securing-outbound-traffic-with-firewall).
Binary file not shown.

0 commit comments

Comments
 (0)