我想制作一份报告,其中给出了某个特定日期或一周每台服务器的 ram cpu 内存使用情况的每周使用情况。
RHEL 盒子上有评论或任何可能的方法吗?
答案1
sar -u -f /var/log/sa/sa15
将给出该月 15 日的日志。
Sadf 是使用此数据的另一个实用程序。这是一个示例:
START_TIME=$( date +%s --date 'yesterday 8am' )
END_TIME=$( date +%s --date 'yesterday 5pm' )
sadf -p /var/log/sa/sa15 -- -n DEV -q -w -b -u -r |
awk -v start_time=$START_TIME -v end_time=$END_TIME -v get_latest=$GET_LATEST '
BEGIN {
wanted_fields="%user %idle %system %iowait ldavg-1 ldavg-5 ldavg-15 cswch/s kbmemfree kbbuffers kbcached kbswpfree kbswpused bread/s bwrtn/s rxbyt/s txbyt/s"
num_fields=split(wanted_fields, fields)
for (i in fields) {
fieldname = fields[i]
value[fieldname] = 0.0
number[fieldname] = 0
}
}
! /\t(sit0|lo)\t/ {
if ($3 > start_time && $3 <= end_time) {
if (number[$5] < 1) {
number[$5] = 0
value[$5] = 0.0
}
if (get_latest) {
value[$5] = $6
} else {
value[$5] += $6
}
number[$5] += 1
}
}
END {
"hostname" | getline hostname
printf("%d hostname=%s start=%d end=%d ", end_time, hostname, start_time, end_time)
for (i=1; i <= num_fields; i++) {
fieldname = fields[i]
printf("%s=", fieldname)
if (number[fieldname] > 0) {
if (get_latest) {
v=value[fieldname]
} else {
v=value[fieldname]/number[fieldname]
}
printf("%f ", v)
} else {
printf("- ")
}
}
}
' | tr -d '%/'