$npx -y skills add PatrickGallucci/fabric-skills --skill fabric-network-remediateDiagnose and resolve Microsoft Fabric network performance issues including connectivity failures, latency, private endpoints, managed VNets, outbound access protection, gateway diagnostics, OneLake endpoint routing, service tag configuration, firewall allowlisting, DNS resolution
| 1 | # Microsoft Fabric Network Performance remediate |
| 2 | |
| 3 | Systematic toolkit for diagnosing and resolving network performance issues across Microsoft Fabric workloads including Spark, OneLake, Data Warehouse, Pipelines, and Dataflows. |
| 4 | |
| 5 | ## When to Use This Skill |
| 6 | |
| 7 | - Fabric Spark sessions take longer than expected to start (>10 seconds) |
| 8 | - Connection timeouts to external data sources from notebooks or pipelines |
| 9 | - Managed private endpoint status shows Pending or Failed |
| 10 | - DNS resolution returns public IPs instead of private IPs |
| 11 | - Outbound access protection blocks required dependencies (PyPI, Conda) |
| 12 | - On-premises data gateway connectivity failures |
| 13 | - OneLake API calls returning 403 or timeout errors |
| 14 | - Capacity throttling errors (HTTP 430) |
| 15 | - Dataflow Gen2 staging failures behind firewalls |
| 16 | - Cross-workspace environment attachment failures due to network mismatch |
| 17 | |
| 18 | ## Prerequisites |
| 19 | |
| 20 | - PowerShell 7+ with Az module installed (`Install-Module Az -Scope CurrentUser`) |
| 21 | - Fabric Admin or Workspace Admin role for network configuration changes |
| 22 | - Azure portal access for Private Link Service and DNS zone management |
| 23 | - Network access to run `nslookup`, `Test-NetConnection`, and `Resolve-DnsName` |
| 24 | |
| 25 | ## Step-by-Step Workflows |
| 26 | |
| 27 | ### Workflow 1: Diagnose Spark Session Startup Delays |
| 28 | |
| 29 | Spark startup times vary based on networking configuration. Consult the reference table: |
| 30 | |
| 31 | | Scenario | Typical Startup Time | |
| 32 | | --------------------------------------- | ----------------------- | |
| 33 | | Default settings, no libraries | 5-10 seconds | |
| 34 | | Default settings + library dependencies | 5-10 sec + 30 sec-5 min | |
| 35 | | High traffic in region, no libraries | 2-5 minutes | |
| 36 | | High traffic + library dependencies | 2-5 min + 30 sec-5 min | |
| 37 | | Network security (Private Links/VNet) | 2-5 minutes | |
| 38 | | Network security + library dependencies | 2-5 min + 30 sec-5 min | |
| 39 | |
| 40 | Run the [diagnostic script](./scripts/Test-FabricNetworkHealth.ps1) for automated assessment: |
| 41 | |
| 42 | ```powershell |
| 43 | .\scripts\Test-FabricNetworkHealth.ps1 -WorkspaceId "<workspace-id>" -CheckType SparkStartup |
| 44 | ``` |
| 45 | |
| 46 | When Private Links or Managed VNets are enabled, Starter Pools are unavailable and Fabric must create clusters on demand, adding 2-5 minutes to session start time. |
| 47 | |
| 48 | ### Workflow 2: Validate Managed Private Endpoint Connectivity |
| 49 | |
| 50 | 1. Navigate to Fabric workspace **Settings > Network security** |
| 51 | 2. Under **Managed private endpoints**, verify Status shows **Approved** |
| 52 | 3. If Pending or Failed, see [private-endpoint-remediate.md](./references/private-endpoint-remediate.md) |
| 53 | 4. Validate DNS routing from a Fabric Notebook: |
| 54 | |
| 55 | ```bash |
| 56 | nslookup sqlserver.corp.contoso.com |
| 57 | ``` |
| 58 | |
| 59 | Confirm the returned IP is a private range (10.x.x.x or 172.x.x.x), not public. |
| 60 | |
| 61 | 5. Run the automated validation: |
| 62 | |
| 63 | ```powershell |
| 64 | .\scripts\Test-FabricNetworkHealth.ps1 -WorkspaceId "<workspace-id>" -CheckType PrivateEndpoint |
| 65 | ``` |
| 66 | |
| 67 | ### Workflow 3: Configure Firewall Allowlisting |
| 68 | |
| 69 | Fabric requires specific endpoints and service tags. Run the [firewall audit script](./scripts/Test-FabricNetworkHealth.ps1): |
| 70 | |
| 71 | ```powershell |
| 72 | .\scripts\Test-FabricNetworkHealth.ps1 -CheckType FirewallEndpoints |
| 73 | ``` |
| 74 | |
| 75 | For the complete endpoint reference, see [firewall-endpoints.md](./references/firewall-endpoints.md). |
| 76 | |
| 77 | Key service tags for Azure Firewall / NSG rules: |
| 78 | |
| 79 | | Tag | Purpose | Direction | |
| 80 | | ---------------- | ---------------------- | --------- | |
| 81 | | Power BI | Fabric core services | Both | |
| 82 | | DataFactory | Pipeline operations | Both | |
| 83 | | PowerQueryOnline | Dataflow processing | Both | |
| 84 | | SQL | Warehouse connectivity | Outbound | |
| 85 | | EventHub | Real-Time Analytics | Outbound | |
| 86 | | KustoAnalytics | Real-Time Analytics | Both | |
| 87 | |
| 88 | ### Workflow 4: Troubleshoot Outbound Access Protection |
| 89 | |
| 90 | When outbound access protection is enabled, public repositories (PyPI, Conda) are blocked. To install libraries in secured environments: |
| 91 | |
| 92 | 1. Prepare a `requirements.txt` on a machine with internet access |
| 93 | 2. Download packages and dependencies using pip: |
| 94 | |
| 95 | ```bash |
| 96 | pip download -r requirements.txt -d ./packages |
| 97 | ``` |
| 98 | |
| 99 | 3. Upload packages as custom libraries in the Fabric Environment |
| 100 | 4. See [outbound-access-guide.md](./references/outbound-access-guide.md) for detailed steps |
| 101 | |
| 102 | ### Workflow 5: Resolve Capacity Throttling (HTTP 430) |
| 103 | |
| 104 | When all Spark VCores are consumed, new jobs rece |