-1

誰かが、異なるサーバー上の各jenkinsジョブの状態をチェックするperlスクリプトを作成するのを手伝ってくれませんか。プラグインの作成に使用する手順は次のとおりです。

  1. jenkins REST APIを使用して、jenkinsジョブを見つけて配列に保存したいと思います。

    http://my-host:8080/api/xml

    Test_Job1 http:// jenkins-host:8080 / job / Test_job1 / red Test_job2 http:// jenkins-host:8080 / job / Test_job2 / red Test_View http:// jenkins-host:8080 /

  2. 配列に格納されている各jenkinsジョブについて、RESTAPIを使用して各ジョブのHealthReportを監視したいと思います。

    http://my-host:8080/Job_name/api/xml

    テスト結果:合計78回のテストのうち1回のテストが失敗しました。
    health-80plus.png 98

  3. jenkinsの仕事によると、<score>98</score>nagios GUIにOK、CRITICAL、WARNINGを表示したいと思います。

  4. が50未満の場合<score>98</score>、nagiosGUIにCRITICALと表示されます。

4

2 に答える 2

1

これはまだかなり曖昧で広いです..しかし、基本的にあなたは私が期待する必要があることを知っていますか?XMLパーサーを入手し(XML :: Simpleをお勧めします)、Nagios::Pluginを使用してプラグインを作成します。また、REST :: Clientを取得して、jenkinsの残りのAPIを簡単に使用できるようにすることもできます。

psこれはperlでの最初の試みですか?

于 2013-01-02T08:52:02.147 に答える
0

これが私が書いたコードです。

#!/usr/bin/perl
use strict;
use warnings;
use LWP::UserAgent;
use XML::Twig;
use HTTP::Request;
use Getopt::Long;
use Nagios::Plugin;
#use File::stat;

use File::Basename;
my $PROGNAME = basename($0);

my $p = Nagios::Plugin->new(
    usage => "Usage: %s [ -H|--host ] [ -p|--port ]",
    extra => "
    Examples:
    $PROGNAME --host myhost -port 8080
    Check Host name and port.
");

$p->add_arg(
    spec => 'host|f=s',
    required => 1,
    help => "-H, --host=Hostname. REQUIRED.");

$p->add_arg(
    spec => 'port|a=i',
    default => 8080,
    help => "-p, --port=Portnumber. Default 8080.");

$p->getopts;

my $o_host = $p->opts->host ;
my $o_port = $p->opts->port;
my $protocol = 'http';
my $o_url = '/api/xml';
my @jobs;

my $url = $protocol . "://" . $o_host . ":" . $o_port . $o_url ;
#print $url,"\n";
my $ua = LWP::UserAgent->new;
$ua->timeout(10);
$ua->env_proxy;
my $response = $ua->get($url);
if ($response->is_success) {
    my $content = $response->decoded_content;  # or whatever
    XML::Twig->new( twig_roots => { 'job/name' => sub { push @jobs, $_->text; } }) ->parseurl( $url);
}
else {
    $p->nagios_die( CRITICAL, "Bad page found" );
}
#print @jobs;
foreach my $job_name (@jobs) {
        #print $job_name;
        my $job_url = $protocol . "://" . $o_host . ":" . $o_port . "/" . "job" . "/" . $job_name . $o_url ;
        #print $job_url;
        my $response2 = $ua->get($job_url);
        #print $job_url;
        if ($response2->is_success) {
            $p->nagios_die( OK, "Job link valid" );
        }
        else {
            $p->nagios_die( CRITICAL, "Bad page found" );
        }
}
于 2013-01-02T11:47:48.883 に答える