initial commit
This commit is contained in:
104
api/perl/examples/dump.pl
Executable file
104
api/perl/examples/dump.pl
Executable file
@@ -0,0 +1,104 @@
|
||||
#!/usr/bin/env perl
|
||||
|
||||
=head1 NAME
|
||||
|
||||
dump.pl - print some information from a socket
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
./dump.pl [ -h ] [ -v ] <socket|server>
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
this script print some information from a given livestatus socket or server
|
||||
|
||||
=head1 ARGUMENTS
|
||||
|
||||
script has the following arguments
|
||||
|
||||
=over 4
|
||||
|
||||
=item help
|
||||
|
||||
-h
|
||||
|
||||
print help and exit
|
||||
|
||||
=item verbose
|
||||
|
||||
-v
|
||||
|
||||
verbose output
|
||||
|
||||
=item socket/server
|
||||
|
||||
server local socket file or
|
||||
|
||||
server remote address of livestatus
|
||||
|
||||
=back
|
||||
|
||||
=head1 EXAMPLE
|
||||
|
||||
./dump.pl /tmp/live.sock
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
2009, Sven Nierlein, <nierlein@cpan.org>
|
||||
|
||||
=cut
|
||||
|
||||
use warnings;
|
||||
use strict;
|
||||
use Data::Dumper;
|
||||
use Getopt::Long;
|
||||
use Pod::Usage;
|
||||
use lib 'lib';
|
||||
use lib '../lib';
|
||||
use Monitoring::Livestatus;
|
||||
|
||||
$Data::Dumper::Sortkeys = 1;
|
||||
|
||||
#########################################################################
|
||||
# parse and check cmd line arguments
|
||||
my ($opt_h, $opt_v, $opt_f);
|
||||
Getopt::Long::Configure('no_ignore_case');
|
||||
if(!GetOptions (
|
||||
"h" => \$opt_h,
|
||||
"v" => \$opt_v,
|
||||
"<>" => \&add_file,
|
||||
)) {
|
||||
pod2usage( { -verbose => 1, -message => 'error in options' } );
|
||||
exit 3;
|
||||
}
|
||||
|
||||
if(defined $opt_h) {
|
||||
pod2usage( { -verbose => 1 } );
|
||||
exit 3;
|
||||
}
|
||||
my $verbose = 0;
|
||||
if(defined $opt_v) {
|
||||
$verbose = 1;
|
||||
}
|
||||
|
||||
if(!defined $opt_f) {
|
||||
pod2usage( { -verbose => 1, -message => 'socket/server is a required option' } );
|
||||
exit 3;
|
||||
}
|
||||
|
||||
#########################################################################
|
||||
my $nl = Monitoring::Livestatus->new( peer => $opt_f, verbose => $opt_v );
|
||||
|
||||
#########################################################################
|
||||
#my $hosts = $nl->selectall_hashref('GET hosts', 'name');
|
||||
#print Dumper($hosts);
|
||||
|
||||
#########################################################################
|
||||
my $services = $nl->selectall_arrayref("GET services\nColumns: description host_name state\nLimit: 2", { Slice => {}});
|
||||
print Dumper($services);
|
||||
|
||||
#########################################################################
|
||||
sub add_file {
|
||||
my $file = shift;
|
||||
$opt_f = $file;
|
||||
}
|
||||
143
api/perl/examples/test.pl
Executable file
143
api/perl/examples/test.pl
Executable file
@@ -0,0 +1,143 @@
|
||||
#!/usr/bin/env perl
|
||||
|
||||
=head1 NAME
|
||||
|
||||
test.pl - print some information from a socket
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
./test.pl [ -h ] [ -v ] <socket|server>
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
this script print some information from a given livestatus socket or server
|
||||
|
||||
=head1 ARGUMENTS
|
||||
|
||||
script has the following arguments
|
||||
|
||||
=over 4
|
||||
|
||||
=item help
|
||||
|
||||
-h
|
||||
|
||||
print help and exit
|
||||
|
||||
=item verbose
|
||||
|
||||
-v
|
||||
|
||||
verbose output
|
||||
|
||||
=item socket/server
|
||||
|
||||
server local socket file or
|
||||
|
||||
server remote address of livestatus
|
||||
|
||||
=back
|
||||
|
||||
=head1 EXAMPLE
|
||||
|
||||
./test.pl /tmp/live.sock
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
2009, Sven Nierlein, <nierlein@cpan.org>
|
||||
|
||||
=cut
|
||||
|
||||
use warnings;
|
||||
use strict;
|
||||
use Data::Dumper;
|
||||
use Getopt::Long;
|
||||
use Pod::Usage;
|
||||
use Time::HiRes qw( gettimeofday tv_interval );
|
||||
use Log::Log4perl qw(:easy);
|
||||
use lib 'lib';
|
||||
use lib '../lib';
|
||||
use Monitoring::Livestatus;
|
||||
|
||||
$Data::Dumper::Sortkeys = 1;
|
||||
|
||||
#########################################################################
|
||||
# parse and check cmd line arguments
|
||||
my ($opt_h, $opt_v, @opt_f);
|
||||
Getopt::Long::Configure('no_ignore_case');
|
||||
if(!GetOptions (
|
||||
"h" => \$opt_h,
|
||||
"v" => \$opt_v,
|
||||
"<>" => \&add_file,
|
||||
)) {
|
||||
pod2usage( { -verbose => 1, -message => 'error in options' } );
|
||||
exit 3;
|
||||
}
|
||||
|
||||
if(defined $opt_h) {
|
||||
pod2usage( { -verbose => 1 } );
|
||||
exit 3;
|
||||
}
|
||||
my $verbose = 0;
|
||||
if(defined $opt_v) {
|
||||
$verbose = 1;
|
||||
}
|
||||
|
||||
if(scalar @opt_f == 0) {
|
||||
pod2usage( { -verbose => 1, -message => 'socket/server is a required option' } );
|
||||
exit 3;
|
||||
}
|
||||
|
||||
#########################################################################
|
||||
Log::Log4perl->easy_init($DEBUG);
|
||||
my $nl = Monitoring::Livestatus->new(
|
||||
peer => \@opt_f,
|
||||
verbose => $opt_v,
|
||||
timeout => 5,
|
||||
keepalive => 1,
|
||||
logger => get_logger(),
|
||||
);
|
||||
my $log = get_logger();
|
||||
|
||||
#########################################################################
|
||||
my $querys = [
|
||||
{ 'query' => "GET hostgroups\nColumns: members\nFilter: name = flap\nFilter: name = down\nOr: 2",
|
||||
'sub' => "selectall_arrayref",
|
||||
'opt' => {Slice => 1 }
|
||||
},
|
||||
# { 'query' => "GET comments",
|
||||
# 'sub' => "selectall_arrayref",
|
||||
# 'opt' => {Slice => 1 }
|
||||
# },
|
||||
# { 'query' => "GET downtimes",
|
||||
# 'sub' => "selectall_arrayref",
|
||||
# 'opt' => {Slice => 1, Sum => 1}
|
||||
# },
|
||||
# { 'query' => "GET log\nFilter: time > ".(time() - 600)."\nLimit: 1",
|
||||
# 'sub' => "selectall_arrayref",
|
||||
# 'opt' => {Slice => 1, AddPeer => 1}
|
||||
# },
|
||||
# { 'query' => "GET services\nFilter: contacts >= test\nFilter: host_contacts >= test\nOr: 2\nColumns: host_name description contacts host_contacts",
|
||||
# 'sub' => "selectall_arrayref",
|
||||
# 'opt' => {Slice => 1, AddPeer => 0}
|
||||
# },
|
||||
# { 'query' => "GET services\nFilter: host_name = test_host_00\nFilter: description = test_flap_02\nOr: 2\nColumns: host_name description contacts host_contacts",
|
||||
# 'sub' => "selectall_arrayref",
|
||||
# 'opt' => {Slice => 1, AddPeer => 0}
|
||||
# },
|
||||
];
|
||||
for my $query (@{$querys}) {
|
||||
my $sub = $query->{'sub'};
|
||||
my $t0 = [gettimeofday];
|
||||
my $stats = $nl->$sub($query->{'query'}, $query->{'opt'});
|
||||
my $elapsed = tv_interval($t0);
|
||||
print Dumper($stats);
|
||||
print "Query took ".($elapsed)." seconds\n";
|
||||
}
|
||||
|
||||
|
||||
#########################################################################
|
||||
sub add_file {
|
||||
my $file = shift;
|
||||
push @opt_f, $file;
|
||||
}
|
||||
Reference in New Issue
Block a user