with
capacity as (
select "Cluster" as cluster, count(*) as hosts, sum(cores) as cores, round(sum(ghz)) as ghz, round(sum(ram)) as ram
from (
select "Cluster", "Host"
, avg("Host_CPU_Cores") as cores, avg("Host_CPU_Cores"*"Host_CPU_Speed") as ghz, avg("Host_RAM"*.85) as ram
from vmreports.compute
where ts=(select max(ts) from vmreports.compute)
group by "Cluster","Host"
order by "Cluster","Host"
) host
group by "Cluster"),
usage as (
select "Cluster" as cluster
, 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
-- promised - зарезервированные ГГц, если включить минимальное согласованное резервирование
, round(sum("VM_RAM_Allocated")) as vm_ram_alloc
, round(sum("VM_RAM_Used")) as vm_ram_used
from vmreports.compute
where ts=(select max(ts) from vmreports.compute)
group by "Cluster"),
cluster_stat as (
SELECT
h."Cluster" as cluster
,h."Cluster_v2" as cluster_v2
,m.models
,COUNT(*) as hosts_total
,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(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
FROM vmreports.host h
LEFT OUTER JOIN (
SELECT hi."Cluster", STRING_AGG(DISTINCT hi."Model" || ' [' || (hi.cnt::text) || '] ',', ') as models
FROM (
SELECT hii."Cluster", hii."Model", count(hii."Model") as cnt
FROM vmreports.host hii
WHERE hii.ts=(SELECT max(ts) FROM vmreports.host)
GROUP BY hii."Cluster", hii."Model"
) hi GROUP BY hi."Cluster"
) m ON (h."Cluster"=m."Cluster")
WHERE ts=(SELECT max(ts) FROM vmreports.host)
GROUP BY h."Cluster", h."Cluster_v2", m.models
ORDER BY h."Cluster"
)
select
h.cluster as cluster_v1
h.cluster_v2
h.models
h.hosts_total
h.hosts_in_maintenance
h.hosts_in_service
h.cores
h.cores_in_service
h.ghz_in_service
h.ghz
h.cpu_usage_perc
c.hosts
c.cores as Cores_Capacity
c.ghz as GHz_Capacity
u.vm_ghz_reserved
u.vm_ghz_promised
round((u.vm_ghz_promised/c.ghz)::numeric,2) as GHz_provision_rate
c.ram as RAM_Capacity
u.vm_ram_alloc
u.vm_ram_used
round((u.vm_ram_alloc/c.ram)::numeric,2) as GB_provision_rate
from cluster_stat h
left outer join usage u on (h.cluster=u.cluster)
left outer join capacity c on (h.cluster=c.cluster)
order by
Сверка CRM - Cloud
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| #cluster_v1# |
#cluster_v2# |
#models# |
#hosts_total# |
#hosts_in_maintenance# |
#hosts_in_service# |
#cores_in_service# |
#ghz_in_service# |
#ghz# |
#cpu_usage_perc# |
|
#hosts# |
#Cores_Capacity# |
#GHz_Capacity# |
#vm_ghz_reserved# |
#vm_ghz_promised# |
#GHz_provision_rate# |
#RAM_Capacity# |
#vm_ram_alloc# |
#vm_ram_used# |
#GB_provision_rate# |