mirror of https://github.com/mikaku/Monitorix.git
added a new option called 'include_dir' to be able to load configuration files from a specific directory
This commit is contained in:
parent
0c645d8a09
commit
1525d12534
63
monitorix
63
monitorix
|
@ -46,8 +46,8 @@ $SIG{'TERM'} = 'INT_handler';
|
|||
$SIG{'CHLD'} = 'CHLD_handler';
|
||||
$SIG{'HUP' } = 'HUP_handler';
|
||||
|
||||
use constant VERSION => "3.4.92";
|
||||
use constant RELDATE => "04-Mar-2014";
|
||||
use constant VERSION => "3.4.93";
|
||||
use constant RELDATE => "11-Mar-2014";
|
||||
|
||||
my @suppsys = ("Linux", "FreeBSD", "OpenBSD", "NetBSD");
|
||||
our %config;
|
||||
|
@ -92,7 +92,6 @@ sub HUP_handler {
|
|||
}
|
||||
|
||||
sub daemonize {
|
||||
chdir("/") || die "Can't chdir to /: $!";
|
||||
open(STDIN, "< /dev/null") || die "Can't read /dev/null: $!";
|
||||
open(STDOUT, ">> $config{log_file}") || die "Can't write to LOG: $!";
|
||||
umask(022) || die "Unable to umask 022: $!";
|
||||
|
@ -381,7 +380,7 @@ if(!stat($options{c})) {
|
|||
die "can't open file '$options{c}': $!";
|
||||
}
|
||||
|
||||
# load configuration file
|
||||
# load main configuration file
|
||||
my $conf = new Config::General(
|
||||
-ConfigFile => $options{c},
|
||||
);
|
||||
|
@ -412,7 +411,6 @@ $0 = sprintf("%s %s%s%s%s",
|
|||
$options{d} ? " -d $options{d}" : "",
|
||||
$options{v} ? " -v" : "");
|
||||
|
||||
daemonize();
|
||||
logger("Starting Monitorix version " . VERSION . " (pid $$).");
|
||||
|
||||
# save the pidfile
|
||||
|
@ -429,6 +427,7 @@ unless(chdir("/tmp")) {
|
|||
die "can't chdir to /tmp: $!";
|
||||
}
|
||||
|
||||
daemonize();
|
||||
if($options{d}) {
|
||||
if($options{d} ne "none" && $options{d} ne "all") {
|
||||
@{$config{debug}} = split(',', $options{d});
|
||||
|
@ -442,12 +441,60 @@ if($options{d}) {
|
|||
logger("Changed process name to '$0'.");
|
||||
}
|
||||
|
||||
# load additional configuration files
|
||||
if(opendir(DIR, $config{include_dir})) {
|
||||
my @files = grep { !/^[.]/ } readdir(DIR);
|
||||
close(DIR);
|
||||
foreach my $c (sort @files) {
|
||||
my $conf_inc = new Config::General(
|
||||
-ConfigFile => $config{include_dir} . "/$c",
|
||||
);
|
||||
my %config_inc = $conf_inc->getall;
|
||||
my $g = $config_inc{graph_name};
|
||||
if(!$g) {
|
||||
logger("ERROR: graph name not defined.");
|
||||
next;
|
||||
}
|
||||
if(grep {trim($_) eq $g} (split(',', $config{graph_name}))) {
|
||||
logger("ERROR: graph name '$config_inc{graph_name}' already exist.");
|
||||
next;
|
||||
}
|
||||
if(!$config_inc{graph_enable}->{$g}) {
|
||||
logger("ERROR: graph name '$config_inc{graph_name}' doesn't have a 'graph_enable' entry.");
|
||||
next;
|
||||
}
|
||||
if(!$config_inc{graph_title}->{$g}) {
|
||||
logger("ERROR: graph name '$config_inc{graph_name}' doesn't have a 'graph_title' entry.");
|
||||
next;
|
||||
}
|
||||
if(!$config_inc{$g}) {
|
||||
logger("ERROR: graph name '$config_inc{graph_name}' doesn't have its own '<block>'.");
|
||||
next;
|
||||
}
|
||||
$config{graph_enable}->{$g} = $config_inc{graph_enable}->{$g};
|
||||
$config{$g} = $config_inc{$g};
|
||||
$config{graph_title}->{$g} = $config_inc{graph_title}->{$g};
|
||||
$config{graph_name} .= ", $g";
|
||||
foreach my $k (sort keys %{$config_inc{graphs}}) {
|
||||
$config{graphs}->{$k} = $config_inc{graphs}->{$k};
|
||||
}
|
||||
delete $config_inc{graph_name};
|
||||
delete $config_inc{graph_enable};
|
||||
delete $config_inc{$g};
|
||||
delete $config_inc{graph_title};
|
||||
delete $config_inc{graphs};
|
||||
@config{keys %config_inc} = values %config_inc;
|
||||
}
|
||||
} else {
|
||||
logger("Can't read directory '$config{include_dir}'. $!");
|
||||
}
|
||||
|
||||
# save the path of the configuration file
|
||||
if(open(OUT, "> " . $config{base_dir} . "/cgi/monitorix.conf.path")) {
|
||||
print(OUT "$options{c}\n");
|
||||
close(OUT);
|
||||
} else {
|
||||
logger("Unable to create the file '$config{base_dir}/cgi/monitorix.conf.path'.");
|
||||
logger("Unable to create the file '$config{base_dir}/cgi/monitorix.conf.path'. $!");
|
||||
}
|
||||
|
||||
flush_accounting_rules(\%config, $options{d});
|
||||
|
@ -474,14 +521,14 @@ foreach (split(',', $config{graph_name} . ", traffacct")) {
|
|||
|
||||
eval "use $g qw(" . $init . " " . $g . "_update)";
|
||||
if($@) {
|
||||
logger("WARNING: unable to find module '$g'");
|
||||
logger("WARNING: unable to find module '$g'.");
|
||||
next;
|
||||
}
|
||||
{
|
||||
no strict "refs";
|
||||
eval { &$init($g, \%config, $d); };
|
||||
}
|
||||
logger("WARNING: unexpected errors in function $init()") if($@);
|
||||
logger("WARNING: unexpected errors in function $init().") if($@);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -16,6 +16,7 @@ show_gaps = n
|
|||
global_zoom = 1
|
||||
max_historic_years = 1
|
||||
accept_selfsigned_certs = y
|
||||
include_dir = /etc/monitorix/conf.d
|
||||
|
||||
base_dir = /var/lib/monitorix/www/
|
||||
base_lib = /var/lib/monitorix/
|
||||
|
|
Loading…
Reference in New Issue