Melhores práticas de FinOps para redes
Este artigo descreve 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.
Azure Firewall
As seções a seguir fornecem consultas do Azure Resource Graph (ARG) para o Firewall do Azure. Essas consultas ajudam você a obter informações sobre seus recursos de firewall do Azure e garantir que eles estejam configurados com as configurações apropriadas. Ao analisar padrões de uso e recomendações do Azure Advisor, você pode otimizar suas configurações de firewall do Azure para eficiência de custos.
Consulta: Análise de políticas de firewall e firewall do Azure
Esta 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: Análise do Firewall do Azure e sub-redes associadas
Esta consulta ARG analisa firewalls do Azure e suas sub-redes associadas em seu ambiente do Azure. Ele fornece informações sobre quais sub-redes estão associadas a cada instância de 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 muitas redes virtuais spoke que estão 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 Aplicação
A seção a seguir fornece consultas ARG para o Gateway de Aplicativo do Azure. Ele ajuda você a obter informações sobre seus recursos do Gateway de Aplicativo do Azure e garantir que eles estejam configurados com as configurações apropriadas.
Consulta: Gateways de aplicativos ociosos
Esta consulta ARG analisa gateways de aplicativos e seus pools de back-end associados em seu ambiente do Azure. Ele fornece informações sobre quais gateways de aplicativos 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 informações sobre seus circuitos de Rota Expressa e garantir que eles estejam configurados com as configurações apropriadas.
Consulta: Circuitos Idle ExpressRoute
Esta consulta ARG analisa circuitos de Rota Expressa 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
Balanceador de Carga
A seção a seguir fornece uma consulta ARG para o Balanceador de Carga do Azure. Ele ajuda você a obter informações sobre seus recursos de balanceador de carga do Azure e garantir que eles estejam configurados com as configurações apropriadas.
Consulta: Balanceadores de carga ociosos
Esta consulta ARG analisa os balanceadores de carga do Azure e seus pools de back-end associados em seu ambiente do Azure. Ele fornece informações 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 informações sobre seus recursos de DNS privado e garantir que eles estejam configurados com as configurações apropriadas.
Consulta: DNS privado
Esta consulta ARG analisa zonas DNS privadas dentro do 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 informações sobre seus recursos de endereço IP público e garantir que eles estejam configurados com as configurações apropriadas.
Consulta: Endereços IP públicos ociosos
Esta consulta ARG analisa endereços IP públicos do Azure. Ele fornece informações 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
Esta consulta ARG analisa endereços IP públicos e identifica o método de roteamento, o método de alocação e a SKU. Ele também analisa outros detalhes de endereços IP públicos que estão associados a uma configuração 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: Verifique a política de proteção contra DDoS de endereços IP públicos
Se você precisar proteger menos de 15 recursos IP públicos, a camada de proteção IP é a opção mais econômica. No entanto, se você tiver mais de 15 recursos IP públicos 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 informações sobre seus recursos do Gateway de Rede Virtual e garantir que eles estejam configurados com as configurações apropriadas.
Consulta: Verifique se há Gateway de Rede Virtual ocioso
Esta consulta ARG analisa os Gateways de Rede Virtual no 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: Verifique se há gateway NAT ocioso
Esta consulta ARG analisa gateways NAT em seu ambiente do Azure para identificar qualquer um que esteja ocioso.
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
Procura mais?
Perdemos alguma coisa? Gostaria de ver algo acrescentado? Adoraríamos saber mais sobre quaisquer perguntas, problemas ou soluções que você gostaria de ver abordadas aqui. Crie um novo problema com os detalhes que você gostaria de ver incluídos aqui.
Conteúdos relacionados
Recursos relacionados:
Soluções relacionadas:
- Relatórios do Power BI do kit de ferramentas FinOps
- Hubs FinOps
- Pastas de trabalho FinOps
- Motor de otimização