From 776abc1cc33083b2baf3a5469bf45dcd5964347c Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 29 Jun 2026 16:11:34 +0300 Subject: [PATCH] 52 utilization and bugfixes --- Application.cfc | 4 +- cloud_capacity.cfm | 154 ++++++++++++++++++++++++++++++++++----------- crm2cloud.cfm | 8 +-- etc/billing.txt | 19 ++++++ 4 files changed, 142 insertions(+), 43 deletions(-) create mode 100644 etc/billing.txt diff --git a/Application.cfc b/Application.cfc index 089e265..88bf9a1 100644 --- a/Application.cfc +++ b/Application.cfc @@ -75,8 +75,8 @@ - - + s + diff --git a/cloud_capacity.cfm b/cloud_capacity.cfm index d7756cc..86e3832 100644 --- a/cloud_capacity.cfm +++ b/cloud_capacity.cfm @@ -89,9 +89,11 @@ select "Cluster" as cluster ,sum("VM_vCPU_count"*"VDC_CPU_Speed"*"VM_CPU_Reserv_perc"/100) as vm_ghz_reserved_c ,sum("VM_vCPU_count"*"VDC_CPU_Speed"*(case when "VM_CPU_Reserv_perc" IS null then 20 when "VM_CPU_Reserv_perc"<=20 then 20 else "VM_CPU_Reserv_perc" end)/100) as vm_ghz_promised -- promised - зарезервированные ГГц, если включить минимальное согласованное резервирование +,sum("VM_RAM_Allocated"*"VM_is_ON") as vm_ram_alloc_on ,sum("VM_RAM_Allocated") as vm_ram_alloc ,sum("VM_RAM_Used") as vm_ram_used ,sum("VM_CPU_Used_AVG") as vm_ghz_usage +,sum("VM_is_ON") as vms_on from vmreports.compute where ts=(select max(ts) from vmreports.compute) group by "Cluster"), @@ -110,9 +112,11 @@ SELECT ,sum(CASE WHEN "Maintenance"='notInMaintenance' THEN "CPU_Cores"*"CPU_Speed" ELSE 0 END) as ghz_in_service ,sum(CASE WHEN "Maintenance"='notInMaintenance' THEN "CPUtoVM" ELSE 0 END) as ghz_provisioned ,sum(CASE WHEN "Maintenance"='notInMaintenance' THEN "RAMtoVM" ELSE 0 END) as gb_provisioned -,sum("CPU_Used_AVG") as host_ghz_usage -,(sum(CASE WHEN "Maintenance"='notInMaintenance' THEN "RAM_Total" ELSE 0 END)) as ram_in_service -,(avg(CASE WHEN "Maintenance"='notInMaintenance' THEN "CPU_Speed" ELSE 0 END)) as ghz +--,sum("CPU_Used_AVG") as host_ghz_usage +--,sum(CASE WHEN "Maintenance"='notInMaintenance' THEN "CPU_Used_AVG" ELSE 0 END) as host_ghz_usage +,sum(CASE WHEN "Maintenance"='notInMaintenance' THEN "CPU_Used" ELSE 0 END) as host_ghz_usage +,sum(CASE WHEN "Maintenance"='notInMaintenance' THEN "RAM_Total" ELSE 0 END) as ram_in_service +,avg(CASE WHEN "Maintenance"='notInMaintenance' THEN "CPU_Speed" ELSE 0 END) as ghz ,max("CPUtoVM") as ghz_subtract_ha ,max("RAMtoVM") as gb_subtract_ha ,CASE WHEN sum("CPU_Cores"*"CPU_Speed") > 0 THEN sum("CPU_Used_AVG")/sum("CPU_Cores"*"CPU_Speed")*100 ELSE NULL END as cpu_usage_perc @@ -154,27 +158,29 @@ select coalesce(h.cores,0) as cores coalesce(h.cores_in_service,0) as cores_in_service coalesce(h.ghz_in_service,0) as ghz_in_service - coalesce(h.host_ghz_usage,0) as host_ghz_usage - coalesce(u.vm_ghz_usage,0) as vm_ghz_usage + coalesce(h.host_ghz_usage,0) as host_ghz_usage + coalesce(u.vm_ghz_usage,0) as vm_ghz_usage coalesce(h.ghz,0) as ghz coalesce(h.ram_in_service,0) as ram_in_service coalesce(h.cpu_usage_perc,0) as cpu_usage_perc - coalesce(h.cores,0) as Cores_Capacity + coalesce(h.cores,0) as cores_total coalesce(h.ghz_provisioned - CASE WHEN hosts_in_maintenance > 0 THEN 0 ELSE h.ghz_subtract_ha END,0) as GHz_Provisioned coalesce(h.gb_provisioned - CASE WHEN hosts_in_maintenance > 0 THEN 0 ELSE h.gb_subtract_ha END,0) as GB_Provisioned - coalesce(u.vm_ghz_reserved,0) as vm_ghz_reserved - coalesce(u.vm_ghz_promised,0) as vm_ghz_promised - coalesce(round((u.vm_ghz_promised/h.ghz_provisioned)::numeric,2)*100,0) as GHz_provision_rate - coalesce(u.vm_ram_alloc,0) as vm_ram_alloc - coalesce(u.vm_ram_used,0) as vm_ram_used + coalesce(u.vm_ghz_reserved,0) as vm_ghz_reserved + coalesce(u.vm_ghz_promised,0) as vm_ghz_promised + coalesce(round((u.vm_ghz_promised/h.ghz_provisioned)::numeric,2)*100,0) as GHz_provision_rate + coalesce(u.vm_ram_alloc,0) as vm_ram_alloc + coalesce(u.vm_ram_alloc_on,0) as vm_ram_alloc_on + coalesce(u.vm_ram_used,0) as vm_ram_used coalesce(round((u.vm_ram_alloc/h.gb_provisioned)::numeric,2)*100,0) as GB_alloc_perc coalesce(round((u.vm_ram_used/h.gb_provisioned)::numeric,2)*100,0) as GB_usage_perc coalesce(round((u.vm_cores/h.cores)::numeric,1),0) as oversubscription - coalesce(u.vm_cores,0) as vm_cores - coalesce(u.vms,0) as vms - coalesce(u.vm_ghz_usage/h.ghz_in_service*100,0) as vm_cpu_usage_perc + coalesce(u.vm_cores,0) as vm_cores + coalesce(u.vms,0) as vms + coalesce(u.vms_on,0) as vms_on + coalesce(u.vm_ghz_usage/h.ghz_in_service*100,0) as vm_cpu_usage_perc from cluster_stat h left outer join usage u on (h.cluster=u.cluster) @@ -189,6 +195,7 @@ select ,sum(hosts_ha) as hosts_ha ,sum(hosts_in_maintenance) as hosts_in_maintenance ,sum(host_ghz_usage) as host_ghz_usage + ,sum(cores_total) as cores_total ,sum(cores_in_service) as cores_in_service ,sum(ghz_in_service) as ghz_in_service ,sum(ghz_provisioned) as ghz_provisioned @@ -202,7 +209,7 @@ select ,sum(vm_ram_alloc) as vm_ram_alloc ,sum(vm_ram_used) as vm_ram_used ,sum(vms) as vms - ,sum(cores*ghz)/sum(cores) as ghz + ,sum(cores*ghz)/sum(cores) as ghz from qRead @@ -231,29 +238,26 @@ from qRead

Свободно

- + + - - - - - + + + + + - + + + + - - - - - - + + @@ -285,7 +289,7 @@ from qRead
СвободноRAM GB by allocВМ размещено
RAM GB by alloc RAM GB by usage CPU GHz (текущий резерв) Ядра 20% (текущий резерв) Ядра 50% (текущий резерв)Ядра 80% (текущий резерв)ВМ размещеноЯдра 80% (текущий резерв)
-Емкость HA вычитается из Capacity, если нет хостов в Maintenance, в противном случае вычитается ресурс хостов в Maintenance. За объем для HA принимается размер наибольшего хоста в кластере по каждому ресурсу (поэтому при выводе в Maintenance маленького хоста расчетная емкость может временно увеличиться, но это только если хосты в кластере разные) +Емкость HA вычитается из Capacity, если нет хостов в Maintenance, в противном случае вычитается ресурс хостов в Maintenance. За объем для HA принимается размер наибольшего хоста в кластере по каждому ресурсу (поэтому при выводе в Maintenance маленького хоста расчетная емкость может временно увеличиться, но это только если хосты в кластере разные. Понятнее будет, если мы как резерв будем брать максимальное значение из наибольшего хоста и суммы выведенных в Maintenance хостов)

Использование подробно

@@ -316,7 +320,7 @@ from qRead - + @@ -351,7 +355,7 @@ from qRead #numberFormat(cpu_usage_perc,"0")# #numberFormat(vm_cpu_usage_perc,"0")# #oversubscription# - #Cores_Capacity# + #cores_total# #numberFormat(ghz_provisioned,".0")# #numberFormat(vm_ghz_reserved,".0")# #numberFormat(vm_ghz_promised,".0")# @@ -379,10 +383,12 @@ from qRead #numberFormat(ghz_in_service,".0")# ---> #numberFormat(host_ghz_usage,".0")# #numberFormat(vm_ghz_usage,".0")# - - + + + + #numberFormat(vm_ghz_usage*100/ghz_in_service,"0")# #numberFormat(vm_cores/cores_in_service,".0")# - + #numberFormat(cores_total,"0")# #numberFormat(ghz_provisioned,".0")# #numberFormat(vm_ghz_reserved,".0")# #numberFormat(vm_ghz_promised,".0")# @@ -438,5 +444,79 @@ from qRead ---> + +

Техническая утилизация

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
RAM allloc вкл. ВМ %
#cluster_v1##cluster_v2##commercial_name##hosts_total##numberFormat(ghz,".0")##numberFormat(vms,"0")##numberFormat(vms_on,"0")##numberFormat(cpu_usage_perc,"0")##numberFormat(vm_cpu_usage_perc,"0")##oversubscription##cores_total##numberFormat(ghz_provisioned,".0")##numberFormat(vm_ghz_reserved,".0")##numberFormat(vm_ghz_usage,".0")##vm_cores##numberFormat(gb_provisioned,"0")##numberFormat(vm_ram_alloc,"0")##numberFormat(vm_ram_alloc_on,"0")##numberFormat(vm_ram_used,"0")##numberFormat(vm_ram_alloc/ram_in_service*100,"0")##numberFormat(vm_ram_alloc_on/ram_in_service*100,"0")##numberFormat(vm_ram_used/ram_in_service*100,"0")#
+ + + diff --git a/crm2cloud.cfm b/crm2cloud.cfm index 1def5d3..21aea00 100644 --- a/crm2cloud.cfm +++ b/crm2cloud.cfm @@ -111,10 +111,10 @@ AS ( ,round(sum(CASE WHEN "VM_is_ON" > 0 THEN c."VM_RAM_Allocated" ELSE 0 END)) AS ram_on ,round(sum(c."VM_vCPU_count")) AS cpu ,round(sum(CASE WHEN "VM_is_ON" > 0 THEN c."VM_vCPU_count" ELSE 0 END)) AS cpu_on - FROM vmreports.COMPUTE c + FROM vmreports.compute c WHERE ts = ( SELECT max(ts) - FROM vmreports.COMPUTE + FROM vmreports.compute ) GROUP BY c."WZ" ) @@ -124,7 +124,7 @@ AS ( FROM vmreports.storage c WHERE ts = ( SELECT max(ts) - FROM vmreports.COMPUTE + FROM vmreports.storage ) GROUP BY c."WZ" ) @@ -399,7 +399,7 @@ S3 операции и трафик: #dateFormat(qS3OpsTrfAge.dt_load,'YYYY-M #line_pricing_model_ids# #cpu_codes# - style="background:lightgreen;">#cpu_sold# + style="background:lightgreen;">#cpu_sold# style="background:lightcoral;">#cpu_alloc# style="background:lightcoral;">#cpu_alloc_on# diff --git a/etc/billing.txt b/etc/billing.txt new file mode 100644 index 0000000..d7c0032 --- /dev/null +++ b/etc/billing.txt @@ -0,0 +1,19 @@ +Все верно, это сам отчет по вм, чтобы он работал нужно еще передать ему resourceId= objUUID +его можно взять из отчета https://vao.mgmt.nubes.ru/suite-api/internal/views/d5bce32a-65c0-490b-87e2-835211697e59/data/export?resourceId=6f1e652e-cbb5-4940-bb07-e30805b9c992 поле objUUID + + +С уважением, +Крипитула Антон +Старший инженер +Моб. +7 (985) 418-55-64 +akripitula@nubes.ru +@KripitulaAnton + +nubes.ru + + + + +9 июня 2026 г., в 18:13, Мищук Сергей написал(а): + +вроде нашел этот https://vao.mgmt.nubes.ru/suite-api/internal/views/89a1dded-e7d5-45ff-bd19-020991951d9a/data/export?resourceId=