diff --git a/Application.cfc b/Application.cfc index 92ab2f6..3485898 100644 --- a/Application.cfc +++ b/Application.cfc @@ -76,7 +76,7 @@ - + diff --git a/cloud_capacity.cfm b/cloud_capacity.cfm index a3b1154..17eebcc 100644 --- a/cloud_capacity.cfm +++ b/cloud_capacity.cfm @@ -30,14 +30,15 @@ group by "Cluster"), usage as ( select "Cluster" as cluster ,count("UUID_VM") as vms -, sum("VM_vCPU_count") as vm_cores -, round(sum("VM_vCPU_count"*"VDC_CPU_Speed")) as vm_ghz -, round(sum("VM_CPU_Reserv_GHz")) as vm_ghz_reserved -, round(sum("VM_vCPU_count"*"VDC_CPU_Speed"*"VM_CPU_Reserv_perc"/100)) as vm_ghz_reserved_c -, round(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 +,sum("VM_vCPU_count") as vm_cores +,(sum("VM_vCPU_count"*"VDC_CPU_Speed")) as vm_ghz +,(sum("VM_CPU_Reserv_GHz")) as vm_ghz_reserved +,(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 - зарезервированные ГГц, если включить минимальное согласованное резервирование -, round(sum("VM_RAM_Allocated")) as vm_ram_alloc -, round(sum("VM_RAM_Used")) as vm_ram_used +,(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 from vmreports.compute where ts=(select max(ts) from vmreports.compute) group by "Cluster"), @@ -48,14 +49,16 @@ SELECT ,h."Cluster_v2" as cluster_v2 ,m.models ,COUNT(*) as hosts_total +,COUNT(*)-1 as hosts_ha /*не вполне корректно, хосты разного размера, отказ по-разному влияет*/ ,sum(CASE WHEN "Maintenance"='inMaintenance' THEN 1 ELSE 0 END) as hosts_in_maintenance ,sum(CASE WHEN "Maintenance"='notInMaintenance' THEN 1 ELSE 0 END) as hosts_in_service ,sum("CPU_Cores"*"CPU_Sockets") as cores ,sum(CASE WHEN "Maintenance"='notInMaintenance' THEN "CPU_Cores"*"CPU_Sockets" ELSE 0 END) as cores_in_service -,round(sum(CASE WHEN "Maintenance"='notInMaintenance' THEN "CPU_Cores"*"CPU_Sockets"*"CPU_Speed" ELSE 0 END)::numeric,1) as ghz_in_service -,round(sum(CASE WHEN "Maintenance"='notInMaintenance' THEN "RAM_Total" ELSE 0 END)::numeric,0) as ram_in_service -,round(avg(CASE WHEN "Maintenance"='notInMaintenance' THEN "CPU_Speed" ELSE 0 END)::numeric,1) as ghz -,CASE WHEN sum("CPU_Cores"*"CPU_Sockets") > 0 THEN round((sum("CPU_Used_AVG"*"CPU_Cores"*"CPU_Sockets")/sum("CPU_Cores"*"CPU_Sockets"))::numeric,0) ELSE NULL END as cpu_usage_perc +,sum(CASE WHEN "Maintenance"='notInMaintenance' THEN "CPU_Cores"*"CPU_Sockets"*"CPU_Speed" ELSE 0 END) as ghz_in_service +,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 +,CASE WHEN sum("CPU_Cores"*"CPU_Sockets"*"CPU_Speed") > 0 THEN sum("CPU_Used_AVG")/sum("CPU_Cores"*"CPU_Sockets"*"CPU_Speed")*100 ELSE NULL END as cpu_usage_perc FROM vmreports.host h LEFT OUTER JOIN ( SELECT hi."Cluster", STRING_AGG(DISTINCT hi."Model" || ' [' || (hi.cnt::text) || '] ',', ') as models @@ -88,14 +91,17 @@ select n.commercial_name h.models h.hosts_total + h.hosts_ha h.hosts_in_maintenance h.hosts_in_service h.cores h.cores_in_service h.ghz_in_service + h.host_ghz_usage + u.vm_ghz_usage h.ghz h.ram_in_service - h.cpu_usage_perc + h.cpu_usage_perc c.hosts c.cores as Cores_Capacity c.ghz as GHz_Capacity @@ -108,8 +114,9 @@ select round((u.vm_ram_alloc/c.ram)::numeric,2)*100 as GB_alloc_perc round((u.vm_ram_used/c.ram)::numeric,2)*100 as GB_usage_perc round((u.vm_cores/c.cores)::numeric,1) as oversubscription - u.vm_cores - u.vms + u.vm_cores + u.vms + u.vm_ghz_usage/h.ghz_in_service*100 as vm_cpu_usage_perc from cluster_stat h left outer join usage u on (h.cluster=u.cluster) @@ -122,6 +129,7 @@ order by select sum(hosts_total) as hosts_total + ,sum(hosts_ha) as hosts_ha ,sum(cores_in_service) as cores_in_service ,sum(ghz_in_service) as ghz_in_service ,sum(GHz_Capacity) as GHz_Capacity @@ -176,15 +184,20 @@ from qRead - + + + - + - - + + + + + @@ -209,15 +222,19 @@ from qRead #cluster_v1# #cluster_v2# #commercial_name# - #models# + #models# + #numberFormat(ghz,".0")# #hosts_total# + #hosts_ha# #hosts_in_maintenance# #hosts_in_service# #cores_in_service# #numberFormat(ghz_in_service,".0")# - #numberFormat(ghz,".0")# - #ram_in_service# - #cpu_usage_perc# + #numberFormat(host_ghz_usage,".0")# + #numberFormat(vm_ghz_usage,".0")# + #numberFormat(ram_in_service,"0")# + #numberFormat(cpu_usage_perc,"0")# + #numberFormat(vm_cpu_usage_perc,"0")# #oversubscription# #hosts# @@ -226,12 +243,12 @@ from qRead #numberFormat(vm_ghz_reserved,".0")# #numberFormat(vm_ghz_promised,".0")# #vm_cores# - #GHz_provision_rate# - #RAM_Capacity# - #vm_ram_alloc# - #vm_ram_used# - #GB_alloc_perc# - #GB_usage_perc# + #numberFormat(GHz_provision_rate,"0")# + #numberFormat(RAM_Capacity,"0")# + #numberFormat(vm_ram_alloc,"0")# + #numberFormat(vm_ram_used,"0")# + #numberFormat(GB_alloc_perc,"0")# + #numberFormat(GB_usage_perc,"0")# #vms# #numberFormat(vm_cores/vms,".0")# #numberFormat(vm_ram_alloc/vms,".0")# @@ -240,12 +257,16 @@ from qRead Итого #hosts_total# + #hosts_ha# + #cores_in_service# #numberFormat(ghz_in_service,".0")# + - #ram_in_service# + #numberFormat(ram_in_service,"0")# + #numberFormat(vm_cores/cores_in_service,".0")# @@ -256,9 +277,9 @@ from qRead #numberFormat(vm_ghz_promised,".0")# #vm_cores# - #RAM_Capacity# - #vm_ram_alloc# - #vm_ram_used# + #numberFormat(RAM_Capacity,"0")# + #numberFormat(vm_ram_alloc,"0")# + #numberFormat(vm_ram_used,"0")# #numberFormat(vm_ram_alloc/ram_in_service*100,"0")# #numberFormat(vm_ram_used/ram_in_service*100,"0")# #vms# @@ -273,6 +294,31 @@ from qRead * CPU GHz provision rate % - отношение зарезервированной частоты (с учетом 20% резерва по умолчанию) к наличной частоте процессоров
* Расхождения в оценке объема RAM частично связаны с разной оценкой затрат памяти на собственные нужды гипервизора +
+ + + + + + + + + + + + + + --->