Рекомендации По использованию FinOps для сети
В этой статье описаны проверенные методики FinOps для сетевых служб. Они сосредоточены на оптимизации затрат, улучшении эффективности и аналитике ресурсов.
Брандмауэр Azure
В следующих разделах приведены запросы Azure Resource Graph (ARG) для Брандмауэр Azure. Эти запросы помогают получить аналитические сведения о ресурсах брандмауэра Azure и убедиться, что они настроены с соответствующими параметрами. Анализируя шаблоны использования и рекомендации по поиску в Помощнике по Azure, вы можете оптимизировать конфигурации брандмауэра Azure для повышения затрат.
Запрос: анализ политик брандмауэра и брандмауэра Azure
Этот запрос ARG анализирует брандмауэры Azure и связанные с ними политики брандмауэра в среде Azure. Он специально предназначен для брандмауэров с уровнем SKU уровня "Премиум" и проверяет, используются ли конфигурации в связанных политиках брандмауэра.
Категория
Optimization
Запрос
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
Запрос: анализ Брандмауэр Azure и связанных подсетей
Этот запрос ARG анализирует брандмауэры Azure и связанные с ними подсети в среде Azure. Он предоставляет аналитические сведения о том, какие подсети связаны с каждым экземпляром брандмауэра Azure. Оптимизируйте использование брандмауэра Azure, используя центральный экземпляр брандмауэра Azure в центральной виртуальной сети или Виртуальная глобальная сеть безопасном концентраторе. Затем совместно использовать один и тот же брандмауэр во многих периферийных виртуальных сетях, подключенных к одному концентратору из одного региона.
Категория
Optimization
Запрос
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
Шлюз приложений
В следующем разделе приведены запросы ARG для Шлюз приложений Azure. Он помогает получить аналитические сведения о Шлюз приложений Azure ресурсах и убедиться, что они настроены с соответствующими параметрами.
Запрос: неактивные шлюзы приложений
Этот запрос ARG анализирует шлюзы приложений и связанные с ними серверные пулы в среде Azure. Он предоставляет аналитические сведения о том, какие шлюзы приложений имеют пустые внутренние пулы, что означает, что они могут быть бездействующими и потенциально ненужными.
Категория
Optimization
Запрос
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
В следующем разделе представлен запрос ARG для ExpressRoute. Он помогает получить аналитические сведения о каналах ExpressRoute и убедиться, что они настроены с соответствующими параметрами.
Запрос: неактивные каналы ExpressRoute
Этот запрос ARG анализирует каналы ExpressRoute в среде Azure, чтобы определить любой без завершенного канала.
Категория
Optimization
Запрос
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
В следующем разделе приведен запрос ARG для Azure Load Balancer. Он помогает получить аналитические сведения о ресурсах подсистемы балансировки нагрузки Azure и убедиться, что они настроены с соответствующими параметрами.
Запрос: балансировщики нагрузки бездействия
Этот запрос ARG анализирует подсистемы балансировки нагрузки Azure и связанные с ними серверные пулы в среде Azure. Он предоставляет аналитические сведения о том, какие подсистемы балансировки нагрузки имеют пустые внутренние пулы, что означает, что они могут быть бездействующими и потенциально ненужными.
Категория
Optimization
Запрос
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
В следующем разделе представлен запрос ARG для Частная зона DNS. Он помогает получить аналитические сведения о Частная зона DNS ресурсах и убедиться, что они настроены с соответствующими параметрами.
Запрос: Частная зона DNS
Этот запрос ARG анализирует Частная зона DNS зоны в среде Azure, чтобы определить любые без виртуальная сеть ссылок.
Категория
Optimization
Запрос
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
Общедоступный IP-адрес
В следующих разделах приведены запросы ARG для общедоступных IP-адресов. Они помогают получить аналитические сведения о ресурсах общедоступного IP-адреса и убедиться, что они настроены с соответствующими параметрами.
Запрос: неактивные общедоступные IP-адреса
Этот запрос ARG анализирует общедоступные IP-адреса Azure. Он предоставляет аналитические сведения о том, какие общедоступные IP-адреса неактивны и потенциально ненужны.
Категория
Optimization
Запрос
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
)
Запрос. Определение метода маршрутизации общедоступных IP-адресов
Этот запрос ARG анализирует общедоступные IP-адреса и определяет метод маршрутизации, метод выделения и номер SKU. Он также анализирует другие сведения о общедоступных IP-адресах, связанных с конфигурацией IP-адресов.
Категория
Optimization
Запрос
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
Запрос. Проверка политики защиты от атак DDoS общедоступных IP-адресов
Если вам нужно защитить менее 15 общедоступных IP-ресурсов, уровень защиты IP-адресов является более экономичным. Однако если у вас более 15 ресурсов общедоступного IP-адреса для защиты, уровень защиты сети становится более экономичным.
Категория
Optimization
Запрос
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")
шлюз виртуальной сети;
В следующих разделах приведены запросы ARG для шлюзов виртуальная сеть. Они помогают получить аналитические сведения о ресурсах шлюза виртуальная сеть и убедиться, что они настроены с соответствующими параметрами.
Запрос. Проверка простоя шлюза виртуальная сеть
Этот запрос ARG анализирует шлюзы виртуальная сеть в среде Azure, чтобы определить, какие из них неактивны.
Категория
Optimization
Запрос
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
Запрос. Проверка простоя шлюза NAT
Этот запрос ARG анализирует шлюзы NAT в среде Azure, чтобы определить, какие из них неактивны.
Категория
Optimization
Запрос
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
Ищете больше?
Упустили ли мы что-нибудь? Хотите ли вы увидеть что-то добавленное? Мы хотели бы услышать о любых проблемах, проблемах или решениях, которые вы хотели бы увидеть здесь. Создайте новую проблему с подробными сведениями, которые вы хотите просмотреть здесь.
Связанный контент
Связанные ресурсы:
Связанные решения: