%PDF- %PDF-
Direktori : /usr/share/munin/ |
Current File : //usr/share/munin/munin-update |
#!/usr/bin/perl # -*- cperl -*- use warnings; use strict; # $Id$ use English qw(-no_match_vars); use Getopt::Long; use Pod::Usage; use Log::Log4perl qw(:easy); use Munin::Master::Update; use Munin::Master::Logger; use Munin::Master::Config; use Munin::Master::Utils; # TODO # # - Include data from Munin::Master::Config in config dump? # - nested groups Getopt::Long::Configure(qw(auto_help)); my $globconfig = Munin::Master::Config->instance(); my $config = $globconfig->{'config'}; sub main { exit_if_run_by_super_user(); configure(); logger_open($config->{'logdir'}); logger_debug() if $config->{debug}; my $update = Munin::Master::Update->new(); $update->run(); return 0; } sub configure { my %args = parse_args(); # Uses default file if config_file is not defined by arguments. $config->parse_config_from_file($args{config_file}); if (defined $config->{'includedir'}) { my $dirname = $config->{'includedir'}; my $DIR; opendir($DIR, $dirname) or WARN "[Warning] Could not open includedir directory $dirname: $OS_ERROR\n"; my @files = grep { ! /^\.|~$/ } readdir($DIR); closedir($DIR); @files = map { $_ = $dirname.'/'.$_; } (sort @files); foreach my $f (@files) { $config->parse_config_from_file($f); } } # Arguments overrides settings from config file. Note that # this only handles settings that are on the base level, not # anything within groups or hosts. $config->set(\%args); } sub parse_args { my $do_usage = 0; my $do_version = 0; my %args = ( "version" => \&print_version_and_exit, ); GetOptions ( \%args, "config_file=s", "debug!", "fork!", "host=s@", "service=s@", "timeout=s", "version!", ) or pod2usage(1); delete $args{version}; $args{limit_hosts} = { map { $_ => 1 } @{$args{host}} }; delete $args{host}; $args{limit_services} = { map { $_ => 1 } @{$args{service}} };; delete $args{service}; return %args; } exit main() unless caller; 1; __END__ =encoding utf8 =head1 NAME munin-update - A program to gather data from machines running munin-node =head1 SYNOPSIS munin-update [options] Options: --config_file=<file> Use <file> as configuration file. --[no]debug Enable [or disable] debug messages. [--nodebug] --[no]fork Query hosts in parallel (--fork), or sequentially (--nofork). [--fork] --host <host> Limit graphed hosts to <host>. Multiple --host options may be supplied. --service <service> Limit graphed services to <service>. Multiple --service options may be supplied. --timeout=<seconds> TCP timeout when talking to clients. [$timeout] --help View this message. --version View version information. =head1 OPTIONS =over 5 =item B<< --config_file=<file> >> Use E<lt>fileE<gt> as the configuration file. [/etc/munin/munin.conf] =item B<< --[no]debug >> If set, log debug messages. [--nodebug] =item B<< --[no]fork >> If set, will fork off one process for each host. [--fork] =item B<< --host <host> >> Limit fetched data to those from E<lt>host<gt>. Multiple --host options may be supplied. [unset] =item B<< --service <service> >> Limit fetched data to those of E<lt>serviceE<gt>. Multiple --service options may be supplied. [unset] =item B<< --timeout <seconds> >> Set the network timeout to <seconds>. [180] =item B<< --help >> Print the help message then exit. =item B<< --version >> Print version information then exit. =back =head1 DESCRIPTION Munin-update is a part of the package Munin, which is used in combination with Munin's node. Munin is a group of programs to gather data from Munin's nodes, graph them, create html-pages, and optionally warn Nagios about any off-limit values. Munin-update does the gathering. It is usually only used from within munin-cron. It contacts each host's munin-node in turn, gathers data from it, and stores them in .rrd-files. If necessary, it will create the rrd-files and the directories to store them in. =head1 FILES /etc/munin/munin.conf /var/lib/munin/* /var/log/munin/munin-update /var/run/munin/* =head1 BUGS For a list of bugs concerning munin-update, see FIX<point to right ticket report>. Please report bugs in the bug tracker at L<http://munin-monitoring.org/>. =head1 AUTHORS The Munin Team. FIX =head1 COPYRIGHT Copyright © 2002-2009 Jimmy Olsen, Audun Ytterdal, Tore Andersson, Kjell-Magne Øierud, Linpro AS, Redpill Linpro AS This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. This program is released under the GNU General Public License.