2012-12-06 19 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);