Práticas recomendadas de FinOps para rede
Este artigo descreve as práticas comprovadas de FinOps para serviços de rede. Eles se concentram na otimização de custos, melhorias de eficiência e insights de recursos.
Firewall do Azure
As seções a seguir fornecem consultas ARG (Azure Resource Graph) para o Firewall do Azure. Essas consultas ajudam você a obter insights sobre os recursos de firewall do Azure e garantir que eles estejam configurados com as configurações apropriadas. Ao analisar os padrões de uso e exibir recomendações do Assistente do Azure, você pode otimizar suas configurações de firewall do Azure para eficiência de custos.
Consulta: Análise de firewall e políticas de firewall do Azure
Essa consulta ARG analisa os firewalls do Azure e suas políticas de firewall associadas em seu ambiente do Azure. Ele visa especificamente firewalls com uma camada de SKU premium e verifica se as configurações em suas políticas de firewall associadas estão utilizando os recursos premium.
Categoria
Otimização
Consulta
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
Consulta: Firewall do Azure e análise de sub-redes associadas
Essa consulta ARG analisa os firewalls do Azure e suas sub-redes associadas em seu ambiente do Azure. Ele fornece insights sobre quais sub-redes estão associadas a cada instância do firewall do Azure. Otimize o uso do firewall do Azure tendo uma instância central do firewall do Azure na rede virtual do hub ou no hub seguro da WAN Virtual. Em seguida, compartilhe o mesmo firewall em várias redes virtuais spoke conectadas ao mesmo hub da mesma região.
Categoria
Otimização
Consulta
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
Gateway de Aplicativo
A seção a seguir fornece consultas ARG para o Gateway de Aplicativo do Azure. Ele ajuda você a obter insights sobre os recursos do Gateway de Aplicativo do Azure e garantir que eles estejam configurados com as configurações apropriadas.
Consulta: Gateways de aplicativo ociosos
Essa consulta ARG analisa os gateways de aplicativo e seus pools de back-end associados em seu ambiente do Azure. Ele fornece insights sobre quais gateways de aplicativo têm pools de back-end vazios, indicando que eles podem estar ociosos e potencialmente desnecessários.
Categoria
Otimização
Consulta
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
A seção a seguir fornece uma consulta ARG para ExpressRoute. Ele ajuda você a obter insights sobre seus circuitos do ExpressRoute e garantir que eles estejam configurados com as configurações apropriadas.
Consulta: Circuitos ociosos do ExpressRoute
Essa consulta ARG analisa os circuitos do ExpressRoute em seu ambiente do Azure para identificar qualquer um sem um circuito concluído.
Categoria
Otimização
Consulta
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
A seção a seguir fornece uma consulta ARG para o Azure Load Balancer. Ele ajuda você a obter insights sobre os recursos do balanceador de carga do Azure e garantir que eles estejam configurados com as configurações apropriadas.
Consulta: Balanceadores de carga ociosos
Essa consulta ARG analisa os balanceadores de carga do Azure e seus pools de back-end associados em seu ambiente do Azure. Ele fornece insights sobre quais balanceadores de carga têm pools de back-end vazios, indicando que eles podem estar ociosos e potencialmente desnecessários.
Categoria
Otimização
Consulta
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
DNS privado
A seção a seguir fornece uma consulta ARG para DNS privado. Ele ajuda você a obter insights sobre seus recursos de DNS privado e garantir que eles estejam configurados com as configurações apropriadas.
Consulta: DNS privado
Essa consulta ARG analisa as zonas DNS privadas em seu ambiente do Azure para identificar qualquer uma sem Links de Rede Virtual.
Categoria
Otimização
Consulta
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
Endereço IP público
As seções a seguir fornecem consultas ARG para endereços IP públicos. Eles ajudam você a obter insights sobre seus recursos de endereço IP público e garantem que eles estejam configurados com as configurações apropriadas.
Consulta: Endereços IP públicos ociosos
Essa consulta ARG analisa os endereços IP públicos do Azure. Ele fornece insights sobre quais IPs públicos estão ociosos e potencialmente desnecessários.
Categoria
Otimização
Consulta
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
)
Consulta: Identificar o método de roteamento de endereços IP públicos
Essa consulta ARG analisa endereços IP públicos e identifica o método de roteamento, o método de alocação e o SKU. Ele também analisa outros detalhes de endereços IP públicos associados a uma configuração de IP.
Categoria
Otimização
Consulta
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
Consulta: Verificar a política de proteção contra DDoS de endereços IP públicos
Se você precisar proteger menos de 15 recursos de IP público, a camada de proteção de IP será a opção mais econômica. No entanto, se você tiver mais de 15 recursos de IP público para proteger, a camada de proteção de rede se tornará mais econômica.
Categoria
Otimização
Consulta
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")
Gateway de Rede Virtual
As seções a seguir fornecem consultas ARG para Gateways de Rede Virtual. Eles ajudam você a obter insights sobre os recursos do Gateway de Rede Virtual e garantem que eles estejam configurados com as configurações apropriadas.
Consulta: Verificar se há Gateway de Rede Virtual ocioso
Essa consulta ARG analisa os Gateways de Rede Virtual em seu ambiente do Azure para identificar os que estão ociosos.
Categoria
Otimização
Consulta
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
Consulta: Verificar se há gateway NAT ocioso
Essa consulta ARG analisa os gateways NAT em seu ambiente do Azure para identificar os que estão ociosos.
Categoria
Otimização
Consulta
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
Procurando mais?
Perdemos alguma coisa? Você gostaria de ver algo adicionado? Adoraríamos ouvir sobre quaisquer perguntas, problemas ou soluções que você gostaria de ver abordados aqui. Crie um novo problema com os detalhes que você gostaria de ver incluídos aqui.
Conteúdo relacionado
Recursos relacionados:
Soluções relacionadas:
- Relatórios do Power BI do kit de ferramentas FinOps
- Hubs FinOps
- Pastas de trabalho FinOps
- Mecanismo de otimização