시간이 지남에 따라 프로세스의 메모리 / CPU 사용량을 모니터링하고 기록하는 방법은 무엇입니까? [닫은]


30

balooning 메모리 프로세스가 스왑을 채우고 전체 시스템 (예 : 아파치)을 죽이는 스왑 사망과 같은 문제를 진단하는 방법을 찾고 있습니다.

나는 이미 선인장을 사용하고 있으며 nagios (물론 그렇지는 않지만) 또는 munin을 설정할 수 있지만 개별 프로그램 사용을 기록 할 수없는 한 전체 상태 만 알 수 있습니다.

30 초마다 >>의 파일로 스크립트를 롤링 할 수 있지만 기존의 성숙한 솔루션이 이미 존재하는지 확인하고 싶습니다.

다시 말하지만 이상적으로는 다음과 같습니다.

  • N 초마다 프로세스의 메모리 사용량 기록
  • N 초마다 프로세스의 CPU 사용량 기록
  • 지원 차트 및 기록
  • 지원 평균-mysqld가 마지막 날에 43 %의 CPU를 사용했으며 평균 400MB 메모리
  • 자유롭고 오픈 소스입니다

프로세스 이름은 미리 알 수 없으며 미리 알려서는 안됩니다. 아이디어는 프로세스를 모니터링 한 다음 최상위 위반자를 살펴 보는 것입니다.

내 시스템은 Linux (OpenSUSE)입니다.


모니터 하시겠습니까 어떤 메모리 누수가있을 수 있습니다 과정 (상단의 N 메모리 돼지는) 또는 프로세스의 정의 세트를 모니터하기 위해 찾고있다 (예를 들어, 아파치 웹 서버와 톰캣 과정)? 후자는 간단한 Nagios 또는 Cacti 플러그인으로 수행 할 수 있습니다. 전자는 더 어렵다. 이것을 명확히해야합니다.
Stefan Lasiewski

나는 이미 포스트에서 그것을 명확히했지만 다시 명확히하기 위해 : 스왑 죽음으로 인해 시스템이 다운 될 때 시스템의 상태를 알고 싶습니다. 최악의 범죄자가 누구인지 알고 싶습니다. 그리고 btw, 그것은 메모리 누수 일 필요가 없습니다-단지 트래픽의 유입 또는 높은 메모리 사용을 유발하는 모든 것. 따라서 이진 이름에 대한 사전 지식을 구성하지 않아야합니다.
Artem Russakovskii


워렌, 그것은 완전히 다른 질문입니다.
Artem Russakovskii

8
좋은 품질의 게시물을 닫는 것은 특히 소급 적으로 4 년 후에 나쁜 일이었습니다.
peterh는 모니카 복원

답변:


16

최고의 가해자 만 원한다면 top배치 모드에서 비교적 긴 간격 (60 초 플러스)으로 실행 하는 것을 고려 하십시오. top여러 리소스에서 최고 위반자를 캡처 하려면 둘 이상의 실행 이 필요할 수 있습니다 . top리소스를 과도하게 사용했을 때 몇주기 동안 시스템이 실행되도록 구성했습니다 .

sar리소스 사용률을 캡처하려면 배치 모드로 실행하는 것이 좋습니다. 나는 이것이 서버 기반이라는 것을 알고 있지만 문제가 발생하는 시간을 결정하는 것이 유용합니다.

munin알림을 실행 하고 활성화합니다. 그러면 서버가 다운되는 것을 볼 수 있습니다. 다운되기 전에 문제점을 정정 할 수 있습니다.

메모리 누수의 경우 스왑 사용량이 꾸준히 증가하면 문제가 있음을 나타냅니다. 한때 서버가 며칠 동안 천천히 죽는 것을 보았습니다. 문제 서비스는 메모리 누수에 대한 다른 프로세스를 모니터링하는 프로그램이었습니다. 시스템 관리자는 서버가 응답을 멈출 때까지 스왑 사용량 증가가 문제가되지 않았다고 계속 주장했습니다.

당신은 찾을 수 cfengine의 이상 탐지하는 일이 잘못되면 시스템 상태를 캡처하는 스크립트를 실행하는 데 사용할 수 있습니다. 가장 많은 리소스를 사용하는 프로세스 외에 많은 정보가 필요할 수 있습니다. 갑작스런 사용으로 인해 이름이 아닌 주소별로 네트워크 연결 목록이 필요할 수 있습니다. 메모리 사용량도 유용합니다.


12

sysstat 는 당신의 목적을 위해 거의 정확하게 만들어졌습니다.


여기서 시작해야합니다. 가장 좋은 기회가있는 곳을 알기 전까지는 어디서 시험을 시작할 수 있는지 알 수 없습니다. Sysstat는 당신이 찾고있는 것입니다 (또한 예쁜 그래프가 있습니다). 더 많은 것을 알고 나면 systemtap을 사용하십시오.
Allen

9

나는 전에 꼭대기에 사용했다 :

http://freshmeat.net/projects/atop/

"맨 위에는 모든 프로세스의 활동 (간격 동안 프로세스가 완료된 경우에도), 시스템의 매일 로깅 및 장기 분석을위한 프로세스 활동을보고 할 수있는 ASCII 전체 화면 성능 모니터가 있습니다. 색상, 등. 정기적으로 CPU, 메모리, 스왑, 디스크 및 네트워크 계층과 관련된 시스템 수준의 활동을 보여 주며 모든 활성 프로세스에 대해 CPU 사용률, 메모리 증가, 우선 순위, 사용자 이름, 상태, 코드를 종료합니다. "


꼭대기에 내가 원하는 것을 제공 할 보고서가없는 것 같습니다. 내가 틀렸다면 정정 해주세요.
Artem Russakovskii

처음 두 개의 글 머리 기호 (프로세스 별 메모리 / CPU)를 처리합니다. 라이브러리를 사용하여 이러한 통계를 수집 한 다음 데이터를 기반으로 히스토리 / 그래프를 수행 할 수 있습니다.
NinjaCat

4
@ artem-russakovskii-기본적으로 atop은 10 분마다 파일에 데이터를 기록합니다. 서버가 3:45에 충돌 한 경우으로 시작하여을 atop -r log_filename눌러 m프로세스 별 메모리 사용량보기 t로 전환 한 다음을 눌러 3:40까지 10 분씩 앞으로 이동하십시오. 당신은에서 꼭대기의 기본적인 사용 방법에 대한 자세한 읽을 수 lwn.net/Articles/387202 과에서 메모리 누수를 식별하는 예를 볼 atoptool.nl/download/case_leakage.pdf
청서 속

6

당신은 수집을 시도 했습니까?
매우 강력하고 사용자 정의 할 수 있습니다.
많은 플러그인이 있으며 nagios와 통합 될 수 있습니다.

http://collectd.org/features.shtml


수집은 매우 가볍고 설정하기가 어렵지 않으며 시간이 지남에 따라 메모리 / 스왑 증가를 볼 수 있습니다. 그래도 문제가되는 프로세스를 정확히 파악하지는 못하지만 시간이 지남에 따라 메모리 증가를 파악하고 수동으로 상황을 검사 할 수 있습니다 top.
Marius Gedminas

1
나는 그 플러그인을 시도하지는 않았지만 프로세스 플러그인의 매뉴얼을 읽어서 수집했다 : "프로세스가 선택되면 다음 정보가 수집된다.이 모든 정보는 프로세스 이름에 의해 집계된다. 그 상주 세그먼트 크기, 사용 된 사용자 및 시스템 시간, 해당 이름 별 프로세스 수, 스레드 수 (모든 프로세스에 합산), 주요 및 부 페이지 오류 수 거친 I / O 수 (쓰기 및 읽기 바이트 수) )
PiL

프로세스 나 이름 또는 정규식으로 프로세스를 선택할 수 있습니다.
PiL

2

Nagios 상단의 Centreon, Nagios는 NRPE와 결합되었습니다. 그런 다음 NRPE에 원하는 형식으로 데이터를보고하는 사용자 지정 스크립트를 작성할 수 있습니다. 그런 다음 Nagios는 NRPE를 사용하여 원격 서버의 데이터를 폴링하고 Centreon은 예쁜 그래프를 만들고 많은 사용자 유연성을 추가합니다. 우리는 http://beyondhosting.net 에서 그것을 사용 합니다. 원한다면 centeron + nagios 설정이있는 VZ 컨테이너 템플릿이 있습니다.

그래프 centeron은 hostthenpost.org/tyler/2010-07-23_1719.png를 빌드합니다.


언급 한 것을보고 할 수있는 준비된 솔루션을 원합니다. 가장 중요한 것은 가장 많은 메모리를 소비하는 프로세스입니다. 또한 VZ가 무엇인지 잘 모르겠습니다.
Artem Russakovskii

2

nmon 은 당신이 찾고있는 것을하는 훌륭한 도구입니다. AIX 및 Linux 용으로 개발되었습니다. 많은 상세 출력을 생성하고 보고서에 쉽게 넣을 수 있습니다. Google을 사용하는 경우 데이터 구문 분석을위한 많은 문서 및 추가 유틸리티가있는 IBM 위키가 있습니다.


2

서버 밀도 는 사용자가 설명한대로 정확하게 수행합니다.

프로덕션 서버 중 하나에서 사용하고 매우 기쁘게 생각합니다. 가장 큰 특징은 차트를보고, 피크를 클릭하고, 실행중인 모든 프로세스를 포함하여 현재 시간에 서버 CPU / 메모리 소비를 볼 수있는 기능입니다. 그들은 그것을 스냅 샷 이라고 부릅니다 .

끊임없이 개선되고 있습니다. 최신 기능 중 하나는 이상 감지로 , 이상 을 쉽게 감지 할 수 있습니다. 다양한 트레스 홀드를 설정할 수도 있습니다


1
아, 나는 무료로 선호하는 작은 부분과 가능한 경우 오픈 소스를 언급하는 것을 잊었습니다. 서버 당 100 달러 이상이 실제로 지출하려는 것은 아닙니다 (5 개가 아닌 1 개 서버 만 있음). serverdensity.com/pricing
Artem Russakovskii 3


2

비슷한 질문을 했을 때 제안 된 답변 :

이카 판 은 말했다 :

Munin 은 설치 및 구성에 최소한의 노력으로 가동 시간 그래프를 얻는 가장 쉬운 방법입니다. 또한 일부 프로세스에서 집계 CPU 사용량에 꼭대기를 사용하지만 그것은 당신이 요청한 것이 아닙니다.

데이비드 Spillet는 말했다 :

수집 된 다른 매개 변수 중 시스템로드를 기록하기 위해 사용 합니다. 사용 가능한 많은 도구와 스크립트를 사용하여 그래프로 작성하고 분석 할 수있는 RRD 저장소에 데이터를 저장합니다. 그래프 작성 을 위해이 스크립트 의 수정 된 버전을 사용합니다 ( sample output ).

Collected에는 많은 것들 (일반적으로 요청되는 모든 것들과 상단에있는 것들)을 모니터링하기위한 플러그인이 있으며, 특별한 것을 필요로하는 경우 나만의 것을 만드는 것이 어렵지 않으므로 매우 유연한 도구가됩니다. rrd.cgi에서 그래프를 구성하는 것은 매우 수동적 인 프로세스이지만 어렵지는 않지만 수집 된 데이터를 유지 관리하는 RRD 파일 작업을위한보다 편리한 도구를 찾을 수 있습니다.

Nagios 또는 OpenNMS 도 확인할 수 있습니다 .


1

Munin 은 Nagios 또는 다른 도구 없이도 필요한 모든 작업을 즉시 수행합니다. OpenSUSE에 사용 가능한 RPM이 있습니다.


플러그인으로합니까? 그렇다면 어느 것입니까? 모니터 할 사전 구성된 프로세스 목록이 필요없는 것을 찾을 수 없었습니다.
Artem Russakovskii

미리 구성된 프로세스 목록을 모니터링하고 싶지 않다는 원래의 질문에서 명확하지 않았습니다. 요구 사항에 대해 더 자세히 설명해 주시겠습니까?
gareth_bowles

설명 : 프로세스 이름은 미리 알 수 없으며 미리 알려서는 안됩니다. 아이디어는 프로세스를 모니터링 한 다음 최상위 위반자를 살펴 보는 것입니다.
Artem Russakovskii

1

어쩌면 좋은 오래된 OProfile 이 필요한 것입니까? 커널 기반의 시스템 수준 프로파일 러로 약간 (백분율의) 오버 헤드 만 있습니다.

그런 다음 훌륭한 Perl 스크립트 PSMon 이 있으며 모든 종류의 CPU / 메모리 제한을 설정할 수 있습니다. 이를 초과하면 psmon은 오류를 기록하거나 문제가있는 프로세스를 종료시킵니다.

후자는 프로파일 링 보고서를 생성하지 않지만 동일한 프로세스를 반복해서 종료하기로 결정한 경우 아마도 찾고있는 불쾌한 놈을 발견했을 것입니다. :-)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.