2012-12-06 5 views
1

HTTP를 통해 monit 데몬에 대한 perl 연결을 위해 Monit :: HTTP 모듈을 알고 있거나 사용하고 있습니까?Monit :: HTTP perl 모듈에서 얻은 undef 데이터 및 프로세스/시스템 상태

Perl 용 Monit :: HTTP 모듈을 사용하려고하는데 몇 가지 문제가 있습니다. 상태 변수를 검색 할 수 없습니다 (예 : monit status 명령). 상태 = 시스템에서 실행 중이지만 Monit :: HTTP를 통해 내게 상태 = 0을 제공하는 일부 서비스의 경우 실행 중입니다. 나는 monit stop 명령으로 서비스를 중단하려고 시도하지만 프로세스가 종료되었다는 것을 알지만 Monit :: HTTP는 상태 = 0을 제공합니다. 마지막 경우 Status = 0은 "서비스가 중지됨"또는 "서비스가 실행 중임"을 의미합니까?

MONIT 데몬에 의해 모니터링 내 시스템에서 성능 데이터를 검색하려면 코드 발췌 : 내가 MONIT에서 좋은 데이터를 검색 할 수 없습니다이 지난 경우

my @systems = $hd->get_services(TYPE_SYSTEM); 
foreach my $system (@systems) { 
    print "system: $system\n"; 
    my $hash_ref = $hd->service_status($system); 
... 

(얻은 다음 hash_ref 덤프의 미확정 데이터를 찾아 예를 MONIT에 대한 데이터 :: 덤퍼 모듈) : HTTP 반환과 :

system: xpto 
$VAR1 = { 
    'cpu' => { 
     'percent' => undef, 
     'percenttotal' => undef }, 
    'status' => '0', 
    'name' => 'xpto', 
    'children'=> undef, 
    'monitor' => '1', 
    'host' => 'localhost', 
    'memory'=> { 
     'percent' => undef, 
     'kilobytetotal' => undef, 
     'kilobyte' => undef, 
     'percenttotal' => undef }, 
    'group' => undef, 
    'pid' => undef; 
    'ppid' => undef; 
    'uptime' => undef; 
    'type'=> '5'; 
    'load' => { 
     'avg05' => undef, 
     'avg01' => undef, 
     'avg15' => undef }, 
    'pendingaction' => '0', 
}; 

그리고 MONIT 상태 명령을 리턴 :

System 'xpto' 
status    Running 
monitoring status  Monitored 
load average   [1.25] [1.16] [0.94] 
cpu     8.7%us 7.4%sy 
memory usage   3202164 kB [76.3%] 
swap usage   1589248 kB [75.7%] 
data collected  Thu, 06 Dec 2012 11:50:55 
모든 지원

my @systems = $hd->get_services(TYPE_PROCESS); 
foreach my $system (@systems) { 
    print "system: $system\n"; 
    my $hash_ref = $hd->service_status($system); 
... 

감사 :

내 코드 발췌 (예를 들어, 아파치 프로세스) MONIT 데몬에 의해 모니터링 내 공정에서 성능 데이터를 검색 할 수 있습니다.

+0

당신이 해시 기준으로 해시를 덤프 수하십시오 : 당신은 모든 종류의 필요한 경우

는 다음을 수행해야합니까? 'Data :: Dumper :: Dump'는 해시 값이 아닌 스칼라 값의리스트를 취합니다. 그러면 키 - 값 쌍을 쉽게 찾을 수 있습니다. 감사합니다. – amon

답변

0

Monit :: HTTP는 HTTP 프로토콜을 통해 Monit에 연결합니다. Monit이 HTTP 연결을 수락하고 스크립트가 올바른 매개 변수에 연결되어 있는지 확인 했습니까?

wget을 -ND -v -O - --user 이름 --password 비밀번호 - HTTP : // :/_status 형식 =

하지만 어쩌면 문제보다 사소한 XML

? TYPE_PROCESS를 요청했고 응답을 얻습니다 : 'type'=> '5'; (같은 moddule에서 contans TYPE_ALL = -1 친화적 인 이상의 사용자를 것)

my @systems = $hd->get_services(-1); 
foreach my $system (@systems) { 
    print "system: $system\n"; 
    my $hash_ref = $hd->service_status($system);