系统资源使用监控

系统资源使用监控

我想制作一份报告,其中给出了某个特定日期或一周每台服务器的 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 '%/'

相关内容