시스템 자원 사용량 모니터링

시스템 자원 사용량 모니터링

특정 날짜 또는 주 동안 각 서버의 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 '%/'

관련 정보