1

Perl 接続用の Monit::HTTP モジュールを知っているか、使用したことがある人はいますか? HTTP を介してデーモンを監視しますか?

Perl 用の Monit::HTTP モジュールを使用しようとしていますが、いくつかの問題があります。ステータス変数を取得できません。たとえば、システムで実行している一部のサービスでは、monit status コマンドで Status = Running が返されますが、Monit::HTTP では常に Status=0 が返されます。monit stop コマンドでサービスを停止しようとしましたが、プロセスが強制終了されたことはわかっていますが、Monit::HTTP は同じように Status = 0 を返します。その最後のケースでは、Status = 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 から適切なデータを取得できません (Data::Dumper モジュールで取得された次の hash_ref ダンプで undef データを探します)。たとえば、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',
};

そして、ステータスコマンドのリターンを監視します:

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

monit デーモンによって監視されているプロセス (Apache プロセスなど) からパフォーマンス データを取得するコードの抜粋:

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

ご支援いただきありがとうございます。

4

1 に答える 1

0

Monit::HTTP は、HTTP プロトコルを介して Monit に接続します。Monit が HTTP 接続を受け入れており、スクリプトが正しいパラメータに接続していることを確認しましたか?

wget -nd -v -O - --user ユーザー名 --password パスワード -- http://:/_status?format=xml

しかし、おそらく問題はもっと些細なことでしょうか?TYPE_PROCESS を要求すると、応答が返されます: 'type'=> '5';

すべてのタイプが必要な場合は、次のようにする必要があります: (TYPE_ALL=-1 のようなモジュール内のコンタンは、よりユーザーフレンドリーになります)

my @systems = $hd->get_services(-1);
foreach my $system (@systems) {
    print "system: $system\n";
    my $hash_ref = $hd->service_status($system);
于 2012-12-07T09:33:35.200 に答える