2012-12-06 15 views
1

任何人都知道或已經使用Monit :: HTTP模塊通過HTTP爲perit守護進程進行perl連接?從Monit :: HTTP perl模塊獲取的未獲取數據和進程/系統狀態

我想爲perl使用Monit :: HTTP模塊,我有一些麻煩。 我無法檢索狀態變量,例如,monit status命令給我Status =正在爲我在系統中運行的某些服務運行,但所有時間爲Monit :: HTTP都給我Status = 0。 我嘗試用monit stop命令停止服務,並且我知道該進程已被殺死,但Monit :: HTTP以相同的方式爲此給出Status = 0。 在最後一種情況下,狀態= 0意味着「服務停止」或「服務正在運行」?

我的代碼摘錄從我的monit的後臺監控系統檢索性能數據:

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

在這最後一種情況下,我無法從monit的檢索好的數據(尋找其轉化爲在未來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 

我的代碼摘錄檢索從我的過程中的性能數據(例如,Apache進程)的守護進程的monit監測:

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

感謝您的支持。

+0

你能傾倒哈希作爲哈希參考嗎? 'Data :: Dumper :: Dump'獲取標量值列表,而不是散列值。這將使查找鍵值對更容易,謝謝。 – amon

回答

0

Monit :: HTTP通過HTTP協議連接到Monit。你是否檢查過Monit是否接受HTTP連接,並且你的腳本連接了正確的參數?

的wget -nd -v -O - --user用戶名密碼 - 密碼 - 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);