Ubuntu 20.04 시스템에서 총 CPU 및 메모리 사용량을 추적하고 싶습니다. 이를 위해 sysstat 라이브러리를 설치하겠습니다. 관련 함수의 매뉴얼과 게시물을 읽었 sar
지만 여전히 구문에 대해 혼란스러워합니다.
내가 하고 싶은 것: 5초마다 총 CPU 및 메모리 사용량을 기록합니다. 데이터는 하루에 한 번 CSV로 내보내지고 바이너리 데이터는 제거됩니다.
무엇이 나를 혼란스럽게 하는가: 1. 시간 간격을 지정하는 데는 여러 가지 설정이 있습니다. sar -u %system -r %memused 5
CPU 및 메모리 사용량은 5초마다 기록됩니다. 또한 패키지는 5-55/10 * * * * root command -v debian-sa1 > /dev/null && debian-sa1 1 1
에 정의된 대로 10분마다 "활동 보고서"를 생성합니다 /etc/cron.d/sysstat
. 5초마다 무슨 일이 일어나는지, 10분마다 무슨 일이 일어나는지 혼란스럽습니다. 프로그램은 먼저 5초마다 데이터를 캐시한 다음 10분마다 파일에 기록합니까? 2. 다양한 기능이 디스크에 기록됩니다. 다음 중 어느 것이 필요합니까? sar -u %system -r %memused -o 5
, sadc -u %system -r %memused 5 -
, 또는 sa1
? 3. sadf -d /var/log/sysstat/sa$(date +%d -d yesterday) > /home/some_user/sar_data.csv
일일 CSV 파일( )을 생성하는 코드를 시간 지정 작업으로 실행 해야 합니까 ?
참고 사항: sysstat 방법보다 더 계산적으로 효율적인 솔루션을 알고 있는 사람이 있으면 언제든지 제안해 주세요.
답변1
5-55/10
5, 15, 25, 35, 45, 55초에 명령을 실행합니다.debian-sa1 1 1
따라서debian-sa1 [ interval [ count ] ]
한 번에 1초씩 수집됩니다.
당신의 명령에는 sar
당신이 없습니다계산따라서 멈출 때까지 5초 동안 누적됩니다.
로그 크기와 CPU 사용량이 크게 증가하지만 예약된 작업(8)1분마다 cron 항목을 확인하세요.
The time and date fields are:
field allowed values
----- --------------
minute 0-59
hour 0-23
day of month 1-31
month 1-12 (or names, see below)
day of week 0-7 (0 or 7 is Sunday, or use names)
작업이 시작 간격보다 오래 실행되면 cron에서 심각한 문제가 발생할 수 있으므로안전하지 않음cron 항목을 다음과 같이 조정하십시오.
*/1 * * * * root command -v debian-sa1 > /dev/null && debian-sa1 10 5
또는:
*/1 * * * * root for i in `seq 1 5` ; do debian-sa1 1 1 ; sleep 10 ; done
그러나 이것을 테스트로 수행하면 이 옵션이 얼마나 많은 CPU 시간과 디스크 공간을 차지하는지 확인할 수 있습니다. 그러나 두 번째 명령은 10초 중 1초만 수집하므로 영향이 약간 적습니다.
그러나 위 로그 파일의 크기는 비슷합니다.
둘 다 이 수집 빈도에 맞게 설계 systat
되지 않았으므로 cron
위의 입자 크기에 대해 높은 안정성을 기대하지 마십시오.