저는 Centos 6.3에서 Cacti를 사용하고 있으며 서버가 다운되면 그 뒤에 있는 프로세스를 쉽게 찾을 수 있도록 메모리 그래프를 통해 메모리를 많이 사용하는 상위 10개 프로세스 목록을 얻고 싶습니다.
플러그인이나 템플릿을 사용할 수 있나요?
답변1
첫째, 이러한 데이터는 비즈니스에 사용하기 어렵습니다.RRD 데이터베이스. 10개의 PID/프로세스가 변경되지만 RRD 데이터 소스는 정적이기 때문입니다. 1~10까지만 녹음할 수 있지만 더 이상 정보를 얻을 수 없습니다. 이름/PID를 데이터 소스에 매핑하면 이 문제를 해결할 수 있지만 필요한 이름을 모두 미리 준비해야 하므로 쉽지 않습니다. 또는 PID당 65536개의 데이터 소스를 생성할 수 있지만 그래프를 작성하는 것은 약간 까다롭습니다.
다음과 같이 좀 더 확장 가능한 것을 시도해 볼 때가 된 것 같습니다.TSDB 열기
둘째, Linux에서 실제 메모리 사용량을 모니터링하는 것은 쉽지 않습니다. ps
거짓말하다. Linux는 공유 메모리를 사용하며 프로세스별 수준 정보를 쿼리하는 간단한 인터페이스를 제공하지 않습니다. 머신의 메모리 성능에 영향을 미치는 커널 메모리와 캐시도 있습니다.
메모리 문제를 강조하는 데 도움이 되도록 추적할 수 있는 3가지 항목이 있습니다.
- 실행 파일당 공유 및 개인 메모리
- 프로세스당 개인 메모리
- 커널 메모리
실행 파일당 공유 및 개인 메모리
이것ps_mem.py 스크립트, 이는 제가 찾은 최고의 "기성" 추정치입니다.
노트"이러한 가치는 다음을 기반으로합니다.프로그램, 프로세스별이 아닌" 이는 공유 메모리 작동 방식과 커널에서 수행되는 계산의 부산물입니다.
프로세스당 개인 메모리
각 파일의 모든 값의 합을 계산하여 /proc/[0-9]*/smaps
각 프로세스의 전용 메모리를 얻을 수 있습니다. 프로세스 이름은 또는에서 얻을 수 있습니다.Private_Dirty
Private_Clean
/proc/[0-9]*/status
/proc/[0-9]*/stat
메모리 정보
전체 메모리 사용량 값은 다음에서 비롯됩니다./proc/meminfo
MemTotal
MemFree
Buffers
Cached
SwapTotal
SwapFree
AnonPages
Mapped
Dirty
Writeback
Shmem
Slab
KernelStack
PageTables
NFS_Unstable
Bounce
WritebackTmp
/proc/meminfo
이러한 모든 데이터 포인트만 사용하는 것보다 더 나은 그래프를 만들 수 있는 이러한 값으로부터 많은 정보를 추론할 수 있습니다 .
이 세 가지 영역에서 대부분의 기억 문제의 원인에 대해 좋은 아이디어를 얻을 수 있어야 합니다.
결국 나는 Linux 계정이 할당한 메모리에 여전히 "구멍"이 있다는 것을 발견했습니다. 구멍은 가상->물리적 메모리 매핑인 것으로 보입니다. 머신에 메모리가 많을수록 구멍이 더 커집니다.
답변2
snmp를 사용하여 proc을 사용하여 모니터링하고 cacti를 차트로 출력할 수 있는 템플릿이 있습니다.