Dela via


Metodtips för FinOps för nätverk

Den här artikeln beskriver beprövade FinOps-metoder för nätverkstjänster. De fokuserar på kostnadsoptimering, effektivitetsförbättringar och resursinsikter.


Azure Firewall

Följande avsnitt innehåller Azure Resource Graph-frågor (ARG) för Azure Firewall. De här frågorna hjälper dig att få insikter om dina Azure-brandväggsresurser och se till att de är konfigurerade med lämpliga inställningar. Genom att analysera användningsmönster och visa rekommendationer från Azure Advisor kan du optimera dina Azure-brandväggskonfigurationer för kostnadseffektivitet.

Fråga: Analys av Azure-brandväggs- och brandväggsprinciper

Den här ARG-frågan analyserar Azure-brandväggar och deras associerade brandväggsprinciper i din Azure-miljö. Den riktar sig specifikt mot brandväggar med en Premium SKU-nivå och verifierar att konfigurationerna i deras associerade brandväggsprinciper använder premiumfunktionerna.

Kategori

Optimering

Fråga

resources 
| where type =~ 'Microsoft.Network/azureFirewalls' and properties.sku.tier=="Premium"
| project FWID=id, firewallName=name, SkuTier=tostring(properties.sku.tier), resourceGroup, location
| join kind=inner (
    resources
    | where type =~ 'microsoft.network/firewallpolicies'
    | mv-expand properties.firewalls
    | extend intrusionDetection = tostring(properties.intrusionDetection contains "Alert"
        or properties.intrusionDetection contains "Deny")
    | extend transportSecurity = tostring(properties.transportSecurity contains "keyVaultSecretId")
    | extend FWID = tostring(properties_firewalls.id)
    | where intrusionDetection == "False"
        and transportSecurity == "False"
    | project
        PolicyName = name,
        PolicySKU = tostring(properties.sku.tier),
        intrusionDetection,
        transportSecurity,
        FWID
) on FWID

Fråga: Azure Firewall och tillhörande undernätsanalys

Den här ARG-frågan analyserar Azure-brandväggar och deras associerade undernät i din Azure-miljö. Den ger insikter om vilka undernät som är associerade med varje Azure-brandväggsinstans. Optimera användningen av Azure-brandväggen genom att ha en central instans av Azure-brandväggen i hubbens virtuella nätverk eller virtual WAN-säker hubb. Dela sedan samma brandvägg i många virtuella ekernätverk som är anslutna till samma hubb från samma region.

Kategori

Optimering

Fråga

resources
| where type =~ 'Microsoft.Network/azureFirewalls' and properties.sku.tier=="Premium"
| project
    FWID=id,
    firewallName=name,
    SkuTier=tostring(properties.sku.tier),
    resourceGroup,
    location
| join kind=inner (
    resources
    | where type =~ 'microsoft.network/firewallpolicies'
    | mv-expand properties.firewalls
    | extend intrusionDetection = tostring(properties.intrusionDetection contains "Alert"
        or properties.intrusionDetection contains "Deny")
    | extend transportSecurity = tostring(properties.transportSecurity contains "keyVaultSecretId")
    | extend FWID=tostring(properties_firewalls.id)
    | where intrusionDetection == "False"
        and transportSecurity == "False"
    | project
        PolicyName = name,
        PolicySKU = tostring(properties.sku.tier),
        intrusionDetection,
        transportSecurity,
        FWID
) on FWID

Application Gateway

Följande avsnitt innehåller en ARG-fråga för Azure Application Gateway. Det hjälper dig att få insikter om dina Azure Application Gateway-resurser och se till att de är konfigurerade med lämpliga inställningar.

Fråga: Inaktiva programgatewayer

Den här ARG-frågan analyserar programgatewayer och deras associerade serverdelspooler i din Azure-miljö. Den ger insikter om vilka programgatewayer som har tomma serverdelspooler, vilket indikerar att de kan vara inaktiva och potentiellt onödiga.

Kategori

Optimering

Fråga

resources
| where type =~ 'Microsoft.Network/applicationGateways'
| extend
    backendPoolsCount = array_length(properties.backendAddressPools),
    SKUName = tostring(properties.sku.name),
    SKUTier = tostring(properties.sku.tier),
    SKUCapacity = properties.sku.capacity,
    backendPools = properties.backendAddressPools,
    resourceGroup = strcat('/subscriptions/',subscriptionId,'/resourceGroups/',resourceGroup)
| project id, name, SKUName, SKUTier, SKUCapacity, resourceGroup, subscriptionId
| join (
    resources
    | where type =~ 'Microsoft.Network/applicationGateways'
    | mvexpand backendPools = properties.backendAddressPools
    | extend backendIPCount = array_length(backendPools.properties.backendIPConfigurations)
    | extend backendAddressesCount = array_length(backendPools.properties.backendAddresses)
    | extend backendPoolName = backendPools.properties.backendAddressPools.name
    | summarize
        backendIPCount = sum(backendIPCount),
        backendAddressesCount = sum(backendAddressesCount)
        by id
) on id
| project-away id1
| where (backendIPCount == 0 or isempty(backendIPCount))
    and (backendAddressesCount==0 or isempty(backendAddressesCount))
| order by id asc

ExpressRoute

Följande avsnitt innehåller en ARG-fråga för ExpressRoute. Det hjälper dig att få insikter om dina ExpressRoute-kretsar och se till att de är konfigurerade med lämpliga inställningar.

Fråga: Inaktiva ExpressRoute-kretsar

Den här ARG-frågan analyserar ExpressRoute-kretsar i din Azure-miljö för att identifiera eventuella utan en slutförd krets.

Kategori

Optimering

Fråga

resources
| where type =~ 'Microsoft.Network/expressRouteCircuits'
    and properties.serviceProviderProvisioningState == "NotProvisioned"
| extend
    ServiceLocation = tostring(properties.serviceProviderProperties.peeringLocation),
    ServiceProvider = tostring(properties.serviceProviderProperties.serviceProviderName),
    BandwidthInMbps = tostring(properties.serviceProviderProperties.bandwidthInMbps)
| project
    ERId = id,
    ERName = name,
    ERRG = resourceGroup,
    SKUName = tostring(sku.name),
    SKUTier = tostring(sku.tier),
    SKUFamily = tostring(sku.family),
    ERLocation = location,
    ServiceLocation,
    ServiceProvider,
    BandwidthInMbps

Load Balancer

Följande avsnitt innehåller en ARG-fråga för Azure Load Balancer. Det hjälper dig att få insikter om dina Azure-lastbalanserare och se till att de är konfigurerade med lämpliga inställningar.

Fråga: Inaktiva lastbalanserare

Den här ARG-frågan analyserar Azure-lastbalanserare och deras associerade serverdelspooler i Din Azure-miljö. Det ger insikter om vilka lastbalanserare som har tomma serverdelspooler, vilket indikerar att de kan vara inaktiva och potentiellt onödiga.

Kategori

Optimering

Fråga

resources
| extend resourceGroup = strcat('/subscriptions/', subscriptionId, '/resourceGroups/', resourceGroup)
| extend SKUName = tostring(sku.name)
| extend SKUTier = tostring(sku.tier)
| extend location,backendAddressPools = properties.backendAddressPools
| where type =~ 'microsoft.network/loadbalancers'
    and array_length(backendAddressPools) == 0
    and sku.name!='Basic'
| order by id asc
| project
    id,
    name,
    SKUName,
    SKUTier,
    backendAddressPools,
    location,
    resourceGroup,
    subscriptionId

Privat DNS

Följande avsnitt innehåller en ARG-fråga för Privat DNS. Det hjälper dig att få insikter om dina Privat DNS resurser och se till att de är konfigurerade med lämpliga inställningar.

Fråga: Privat DNS

Den här ARG-frågan analyserar Privat DNS zoner i Din Azure-miljö för att identifiera eventuella utan länkar till virtuella nätverk.

Kategori

Optimering

Fråga

resources
| where type == "microsoft.network/privatednszones"
    and properties.numberOfVirtualNetworkLinks == 0
| project id, PrivateDNSName=name,
    NumberOfRecordSets = tostring(properties.numberOfRecordSets),
    resourceGroup = tostring(strcat('/subscriptions/', subscriptionId, '/resourceGroups/', resourceGroup)),
    vNets = tostring(properties.properties.numberOfVirtualNetworkLinks),
    subscriptionId

Offentlig IP-adress

Följande avsnitt innehåller ARG-frågor för offentliga IP-adresser. De hjälper dig att få insikter om dina offentliga IP-adressresurser och se till att de är konfigurerade med lämpliga inställningar.

Fråga: Inaktiva offentliga IP-adresser

Den här ARG-frågan analyserar offentliga IP-adresser i Azure. Det ger insikter om vilka offentliga IP-adresser som är inaktiva och potentiellt onödiga.

Kategori

Optimering

Fråga

resources
| where type =~ 'Microsoft.Network/publicIPAddresses'
    and isempty(properties.ipConfiguration)
    and isempty(properties.natGateway)
    and properties.publicIPAllocationMethod =~ 'Static'
| extend
    PublicIpId = id,
    IPName = name,
    AllocationMethod = tostring(properties.publicIPAllocationMethod),
    SKUName = sku.name,
    Location = location,
    resourceGroup = strcat('/subscriptions/', subscriptionId, '/resourceGroups/', resourceGroup)
| project PublicIpId, IPName, SKUName, resourceGroup, Location, AllocationMethod, subscriptionId
| union (
    Resources
    | where type =~ 'microsoft.network/networkinterfaces'
        and isempty(properties.virtualMachine)
        and isnull(properties.privateEndpoint)
        and isnotempty(properties.ipConfigurations)
    | extend IPconfig = properties.ipConfigurations
    | mv-expand IPconfig
    | extend PublicIpId= tostring(IPconfig.properties.publicIPAddress.id)
    | project PublicIpId
    | join (
        resource
        | where type =~ 'Microsoft.Network/publicIPAddresses'
        | extend
            PublicIpId = id,
            IPName = name,
            AllocationMethod = tostring(properties.publicIPAllocationMethod),
            SKUName = sku.name,
            resourceGroup,
            Location = location
    ) on PublicIpId
    | project
        PublicIpId,
        IPName,
        SKUName,
        resourceGroup,
        Location,
        AllocationMethod,
        subscriptionId
)

Fråga: Identifiera routningsmetod för offentliga IP-adresser

Den här ARG-frågan analyserar offentliga IP-adresser och identifierar routningsmetod, allokeringsmetod och SKU. Den analyserar också annan information om offentliga IP-adresser som är associerade med en IP-konfiguration.

Kategori

Optimering

Fråga

resources
| where type =~ 'Microsoft.Network/publicIPAddresses'
    and isnotempty(properties.ipConfiguration)
| where tostring(properties.ipTags) == "[]"
| extend
    PublicIpId = id,
    RoutingMethod = id,
    IPName = name,
    AllocationMethod = tostring(properties.publicIPAllocationMethod),
    SKUName = sku.name,
    Location = location,
    resourceGroup = strcat('/subscriptions/', subscriptionId, '/resourceGroups/', resourceGroup)
| project
    PublicIpId,
    IPName,
    RoutingMethod,SKUName,
    resourceGroup,
    Location,
    AllocationMethod,
    subscriptionId

Fråga: Kontrollera de offentliga IP-adressernas DDoS-skyddsprincip

Om du behöver skydda färre än 15 offentliga IP-resurser är IP-skyddsnivån det mer kostnadseffektiva alternativet. Men om du har fler än 15 offentliga IP-resurser att skydda blir nätverksskyddsnivån mer kostnadseffektiv.

Kategori

Optimering

Fråga

resources
| where type == "microsoft.network/publicipaddresses"
| project ddosProtection = tostring(properties.ddosSettings), name
| where ddosProtection has "Enabled"
| count
| project TotalIpsProtected = Count
| extend CheckIpsProtected = iff(TotalIpsProtected >= 15, "Enable Network Protection tier", "Enable PIP DDoS Protection")

Virtuell nätverksgateway

Följande avsnitt innehåller ARG-frågor för virtuella nätverksgatewayer. De hjälper dig att få insikter om dina virtuella nätverksgatewayresurser och se till att de är konfigurerade med lämpliga inställningar.

Fråga: Sök efter inaktiv virtuell nätverksgateway

Den här ARG-frågan analyserar virtuella nätverksgatewayer i din Azure-miljö för att identifiera alla som är inaktiva.

Kategori

Optimering

Fråga

resources
| where type == "microsoft.network/virtualnetworkgateways"
| extend resourceGroup = strcat('/subscriptions/', subscriptionId, '/resourceGroups/', resourceGroup)
| project id, GWName=name, resourceGroup, location, subscriptionId
| join kind = leftouter(
    resources
    | where type == "microsoft.network/connections"
    | extend id = tostring(properties.virtualNetworkGateway1.id)
    | project id
) on id
| where isempty(id1)
| project
    id,
    GWName,
    resourceGroup,
    location,
    subscriptionId,
    status=id

Fråga: Sök efter inaktiv NAT-gateway

Den här ARG-frågan analyserar NAT-gatewayer i din Azure-miljö för att identifiera alla som är inaktiva.

Kategori

Optimering

Fråga

resources
| where type == "microsoft.network/natgateways" and isnull(properties.subnets)
| project
    id,
    GWName = name,
    SKUName = tostring(sku.name),
    SKUTier = tostring(sku.tier),
    Location = location,
    resourceGroup = tostring(strcat('/subscriptions/', subscriptionId, '/resourceGroups/', resourceGroup)),
    subnet = tostring(properties.subnet),
    subscriptionId

Letar du efter mer?

Missade vi något? Vill du se något tillagt? Vi vill gärna höra om eventuella frågor, problem eller lösningar som du vill se här. Skapa ett nytt problem med den information som du vill se här.


Relaterade resurser:

Relaterade lösningar: