도용 시간 모니터링 도구 (st)


12

우리는 가상의 "전용"서버에서 실행하고 있습니다. 이론 상으로는 우리가 서버에서 유일한 사람임을 의미해야합니다. 실제로 .... 우리가 아닐 수도 있다고 생각합니다.

여기에 이미지 설명을 입력하십시오

기계를 죽이는 것처럼 보이지만 "Steal time"은 71 %입니다.

나는로드에 대한 통계를 가져 가고 있으며이 통계가 내 그래프에 표시되지 않은 것에 실망했습니다. 이를 모니터링 할 수있는 도구가 있습니까?


추가 정보:

우리는 4 개의 코어를 실행하고 있습니다 :

# grep "model name" /proc/cpuinfo | sort -u
model name  : Intel(R) Core(TM)2 Duo CPU     E7500  @ 2.93GHz

1
가상 전용? XEN의 경우 VM에서 전용으로 사용하기 위해 전용 코어를 고정해야합니다. 공급자가 불공정 한 amout으로 CPU를 초과 예약 한 것 같습니다. 그는 이것에 대해 무엇을 말합니까?
Nils

1
vCPU 수는 몇 개이며 어떤 유형의 CPU가보고 grep "model name" /proc/cpuinfo|sort -u됩니까? 이것이 실제로 전용 서버라면 Dom0에서 CPU 시간을 소모하는 것이 있습니다. 또는 Dom0에서 사용할 수있는 것보다 많은 vCPU를 제공했습니다.
Nils

1
이것이 일시적인 이상 치가 아닌 한, isp가 당신에게 거짓말을하고 실제로이 컴퓨터에서 다른 CPU 무거운 vms를 실행하거나 dom0이 많은 CPU 시간을 낭비하게하는 매우 잘못 구성된 것이있는 것처럼 보입니다. .
psusi

1
SuSE는 Dom0 전용으로 두 개의 코어를 예약하여 다른 VM을 방해하지 않고 모든 IO 처리를 수행 할 것을 권장합니다. 내 눈에는 DomU에서 시간이 오래 걸리고 IO 트래픽이 많은 시스템에만 필요합니다. 제공자가 논리 코어보다 더 많은 vCPU를 할당했는지 알고 싶었습니다. Dom0에는 4 개의 vCPU를 할당하고 2 개의 논리 CPU 만 사용할 수 있습니다. "도난"도 설명 할 수 있습니다. .
Nils

1
이것의 근본 원인은 ISP가 VM을 잘못 구성했기 때문입니다. 손님은 실제보다 더 많은 코어를 가지고 있다고 들었습니다. 이로 인해 일정이 혼란스러워졌습니다. ISP는 지능적인 기술 지원을 제공 할 수 없었지만 / proc에서 홀수 개의 코어를 비활성화하여 문제를 "증명"할 수있었습니다. 이후 문제가 없습니다.
mgjk

답변:


12

질문은 잘 정의되어 있지만 환경, ​​현재 모니터링 방법 또는 사용중인 그래프 도구에 대한 많은 정보를 제공하지 않습니다. 그러나 SNMP가 거의 보편적으로 사용된다는 점을 감안할 때 SNMP를 사용하고 있으며 적어도 친숙하다고 가정합니다.

CPU Steal 시간은 현재 snmpd에서 사용할 수 없지만 UCD-SNMP-MIB::extOutput객체와 exec명령으로 직접 확장 할 수 있습니다 .

도둑질 시간을 얻는 가장 쉬운 방법은입니다 iostat. 우리가 얻을 다음과 같은 구조를 할 수 있습니다 사용하여 단지 시간을 훔치는 :

$ iostat -c | awk 'NR==4 {print $5}'
0.00

따라서 snmpd.conf에 다음을 추가하십시오.

exec cpu_steal_time /usr/bin/iostat -c | /usr/bin/awk 'NR==4 {print $5}'

(또는 래퍼 스크립트에 명령을 넣고 내부에서 래퍼를 호출 할 수도 있습니다 snmpd.conf.)

exec호출 snmpd.conf은 1부터 시작하여 인덱싱됩니다. 따라서 하나의 exec 문만있는 경우을 폴링하려고합니다 UCD-SNMP-MIB::extOutput.1. 이것이 5 번째 exec 문이면 poll UCD-SNMP-MIB::extOutput.5등을 수행하십시오.

의 숫자 OID는 UCD-SNMP-MIB::extOutput것입니다 .1.3.6.1.4.1.2021.8.1.101당신이 될 것 인덱스 1에 있다면 그래서 .1.3.6.1.4.1.2021.8.1.101.1, 인덱스 5는 것 .1.3.6.1.4.1.2021.8.1.101.5

그런 다음 게이지 유형의 SNMPD OID를 0-100 범위로 폴링하는 그래프를 만듭니다. 이것은 당신에게 예쁜 그래프를 줄 것입니다.


좋은 대답입니다. 이 정적 정보는 얼마나 자주 수집됩니까? 폴링 중이거나 외부 폴링없이 값을 기록하는 RMON-MIB와 같은 방법이 있습니까?
Nils

snmpd해당 OID를 쿼리 할 때마다이 옵션을 사용 한다고 생각합니다 .
bahamat

iostat가 설치되지 않은 경우 : top -bn1 | 나오지도 -nr '3S /.*,// GP'
다비드

9

sar -u귀하의 경우에 도움이 될 수 있습니다. sar은 일반적으로 sysstat -package의 일부입니다 .


하나 이상의 답변을 허용되는 답변으로 설정할 수 있기를 바랍니다. 두 답변 모두 매우 유용했습니다 :-) 감사합니다!
mgjk

0

가장 많이 답한 답변은 훌륭하지만 현재는 제대로 작동하지 않습니다. net-snmp 는 파이프를 잃어 버렸exec 으므로 다음과 같이 보입니다.

extend-sh cpu_steal_time /usr/bin/iostat -c 1 1 | /usr/bin/awk '!/%user|Linux|^$/ {print $5}'

결과는 nsExtendOutput1Table다음과 같습니다.

# snmpwalk localhost NET-SNMP-EXTEND-MIB::nsExtendOutput1Table
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."cpu_steal_time" = STRING: 0.60
NET-SNMP-EXTEND-MIB::nsExtendOutputFull."cpu_steal_time" = STRING: 0.60
NET-SNMP-EXTEND-MIB::nsExtendOutNumLines."cpu_steal_time" = INTEGER: 1
NET-SNMP-EXTEND-MIB::nsExtendResult."cpu_steal_time" = INTEGER: 0

여기서 nsExtendOutput1Lineoid는 .1.3.6.1.4.1.8072.1.3.2.3.1.1입니다.

snmpwalk localhost .1.3.6.1.4.1.8072.1.3.2.3.1.1
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."cpu_steal_time" = STRING: 0.60
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.