问题
I am using check_http plugin for discovering jenkins service(Winstone hosted and Apache hosted) is running or not on hosts on which check_mk_agent is installed. And its been monitored on single ui that is nagios GUI, using following command.
./check_http -H Host_Name -u /api/xml?depth=0 -p 8080
Next step is to parse the jobs on specific jenkins master server using jenkins REST api and monitor each job's health in nagios GUI.
Could someone please give me any idea on this so that I can monitor the jenkins jobs on single GUI. Any script or plugin much appreciated.
回答1:
#!/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" );
}
}
来源:https://stackoverflow.com/questions/14036749/monitor-jenkins-jobs-health-using-nagios-gui