[英]R CPU Utilisation Heat map in data center
我從數據中心的100台服務器中讀取了數據。 讀數采用時間的數據幀格式,具有3列Time
, host name
, CPU Utilization
。 監測系統每10分鍾產生一次讀數。 我需要繪制CPU使用率的熱圖,在X軸上顯示time
,在Y軸上% of servers
並在Heat map中繪制CPU utilization
范圍。
例如:如果服務器總數為5
。 輸入數據如下
Time CPU Hostname
1/25/2015 10:15 19% H1
1/25/2015 10:15 90% H2
1/25/2015 10:15 90% H3
1/25/2015 10:15 50% H4
1/25/2015 10:15 25% H5
1/25/2015 10:25 30% H1
1/25/2015 10:25 85% H2
1/25/2015 10:25 30% H3
1/25/2015 10:25 21% H4
1/25/2015 10:25 21% H5
所需的輸出是一個堆疊圖,以熱圖顯示以下圖形。
例如,在10:15
,有2
台服務器的利用率為80-100%
,因此價值為40%
Range 10:15 10:25
0-20 20% 0%
20-40 20% 80%
40-60 20% 0%
60-80 0% 0%
80-100 40% 20%
在R中的功能上需要幫助以繪制此類熱圖。 曾嘗試使用xts
但在此應用案例中我不清楚如何應用xts
包。
您只需要:
cut
價值分成所需的組 expand
缺少的條目 geom_tile
作為您的熱圖 以下代碼的許多組件都在許多SO帖子中:
library(dplyr)
library(ggplot2)
library(tidyr)
library(scales)
dat <- read.table(text="Time,CPU,Hostname
1/25/2015 10:15,19%,H1
1/25/2015 10:15,90%,H2
1/25/2015 10:15,90%,H3
1/25/2015 10:15,50%,H4
1/25/2015 10:15,25%,H5
1/25/2015 10:25,30%,H1
1/25/2015 10:25,85%,H2
1/25/2015 10:25,30%,H3
1/25/2015 10:25,21%,H4
1/25/2015 10:25,21%,H5", header=TRUE, sep=",", stringsAs=FALSE)
total_hosts <-length(unique(dat$Hostname))
dat %>%
mutate(Time=as.POSIXct(Time, format="%m/%d/%Y %H:%M"),
Day=format(Time, format="%Y-%m-%d"),
HM=format(Time, format="%H:%M"),
CPU=as.numeric(gsub("%", "", CPU)),
`CPU Range`=as.character(cut(CPU,
breaks=c(0,20,40,60,80,100),
labels=c("0-20", "20-40", "40-60",
"60-80", "80-100")))) %>%
group_by(Day, `CPU Range`, HM) %>%
summarise(Pct=n()/total_hosts) %>%
merge(expand(., `CPU Range`, HM, Day), all.y=TRUE) -> dat
gg <- ggplot(dat, aes(x=HM, y=`CPU Range`))
gg <- gg + geom_tile(aes(fill=Pct), color="#7f7f7f")
gg <- gg + scale_fill_distiller(palette="RdPu", na.value="white",
label=percent, name="% Hosts")
gg <- gg + coord_equal()
gg <- gg + labs(x=NULL)
gg <- gg + theme_bw()
gg <- gg + theme(panel.border=element_blank())
gg <- gg + theme(panel.grid=element_blank())
gg
我將“ Day
保留在數據框中,以防您需要/需要進行facet_wrap
或進行匯總。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.