mirror of
https://github.com/pandorafms/pandorafms.git
synced 2025-07-30 17:25:26 +02:00
Manage the sflow daemon.
This commit is contained in:
parent
5ff56ff7e8
commit
8f393cea12
@ -76,6 +76,9 @@ sub pandora_shutdown () {
|
||||
# Stop the netflow daemon
|
||||
pandora_stop_netflow_daemon ();
|
||||
|
||||
# Stop the sflow daemon
|
||||
pandora_stop_sflow_daemon ();
|
||||
|
||||
# Stop server threads.
|
||||
stop_server_threads();
|
||||
|
||||
@ -167,6 +170,9 @@ sub pandora_startup () {
|
||||
|
||||
# Start the netflow daemon if necessary
|
||||
pandora_start_netflow_daemon ();
|
||||
|
||||
# Start the sflow daemon if necessary
|
||||
pandora_start_sflow_daemon ();
|
||||
|
||||
# Remove disabled servers
|
||||
@Servers = grep { defined ($_) } @Servers;
|
||||
@ -310,6 +316,62 @@ sub pandora_stop_netflow_daemon () {
|
||||
return 0;
|
||||
}
|
||||
|
||||
########################################################################################
|
||||
# Start the sflow daemon if necessary.
|
||||
########################################################################################
|
||||
sub pandora_start_sflow_daemon () {
|
||||
my $pid_file = '/var/run/pandora_sfcapd.pid';
|
||||
|
||||
# Check if sflow is enabled
|
||||
if ($Config{'activate_sflow'} != 1) {
|
||||
logger (\%Config, " [*] sflow daemon disabled.", 1);
|
||||
print_message (\%Config, " [*] sflow daemon disabled.", 1);
|
||||
return;
|
||||
}
|
||||
|
||||
# Stop sfcapd if it's already running
|
||||
my $pid = pandora_stop_sflow_daemon ();
|
||||
if (pandora_stop_sflow_daemon () != 0) {
|
||||
logger (\%Config, "sfcapd (pid $pid) is already running, attempting to kill it...", 1);
|
||||
print_message (\%Config, "sfcapd (pid $pid) is already running, attempting to kill it...", 1);
|
||||
}
|
||||
|
||||
# Start sfcapd
|
||||
my $command = $Config{'sflow_daemon'} . ' -D -T all -w -t ' . $Config{'sflow_interval'} . ' -P ' . $pid_file . ' -l ' . $Config{'sflow_path'};
|
||||
if (system ("$command >/dev/null 2>&1") != 0) {
|
||||
logger (\%Config, " [E] Could not start sfcapd: $command", 1);
|
||||
print_message (\%Config, " [E] Could not start sfcapd: $command", 1);
|
||||
return;
|
||||
}
|
||||
|
||||
logger (\%Config, "[*] sflow daemon started.", 1);
|
||||
print_message (\%Config, "[*] sflow daemon started.", 1);
|
||||
}
|
||||
|
||||
########################################################################################
|
||||
# Stop the sflow daemon if it's running.
|
||||
########################################################################################
|
||||
sub pandora_stop_sflow_daemon () {
|
||||
|
||||
my $pid_file = '/var/run/pandora_sfcapd.pid';
|
||||
|
||||
# Open the pid file
|
||||
if ( ! (-e $pid_file && open (PIDFILE, $pid_file))) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
my $pid = <PIDFILE>;
|
||||
close PIDFILE;
|
||||
|
||||
# Check if sfcapd is running
|
||||
if (kill (0, $pid) > 0) {
|
||||
kill (9, $pid);
|
||||
return $pid;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
sub pandora_agent_autoconfiguration_scheduled($) {
|
||||
my $pa_config = shift;
|
||||
|
||||
|
@ -144,6 +144,12 @@ sub pandora_get_sharedconfig ($$) {
|
||||
$pa_config->{"netflow_interval"} = pandora_get_tconfig_token ($dbh, 'netflow_interval', 300);
|
||||
$pa_config->{"netflow_daemon"} = pandora_get_tconfig_token ($dbh, 'netflow_daemon', '/usr/bin/nfcapd');
|
||||
|
||||
# Sflow configuration options
|
||||
$pa_config->{"activate_sflow"} = pandora_get_tconfig_token ($dbh, 'activate_sflow', 0);
|
||||
$pa_config->{"sflow_path"} = pandora_get_tconfig_token ($dbh, 'sflow_path', '/var/spool/pandora/data_in/sflow');
|
||||
$pa_config->{"sflow_interval"} = pandora_get_tconfig_token ($dbh, 'sflow_interval', 300);
|
||||
$pa_config->{"sflow_daemon"} = pandora_get_tconfig_token ($dbh, 'sflow_daemon', '/usr/bin/nfcapd');
|
||||
|
||||
# Log module configuration
|
||||
$pa_config->{"log_dir"} = pandora_get_tconfig_token ($dbh, 'log_dir', '/var/spool/pandora/data_in/log');
|
||||
$pa_config->{"log_interval"} = pandora_get_tconfig_token ($dbh, 'log_interval', 3600);
|
||||
|
@ -55,6 +55,7 @@ mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/spool/pandora/data_in/conf
|
||||
mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/spool/pandora/data_in/md5
|
||||
mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/spool/pandora/data_in/collections
|
||||
mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/spool/pandora/data_in/netflow
|
||||
mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/spool/pandora/data_in/sflow
|
||||
mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/spool/pandora/data_in/trans
|
||||
mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/spool/pandora/data_in/commands
|
||||
mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/log/pandora/
|
||||
@ -237,5 +238,6 @@ exit 0
|
||||
%{_localstatedir}/spool/pandora/data_in/collections
|
||||
%{_localstatedir}/spool/pandora/data_in/conf
|
||||
%{_localstatedir}/spool/pandora/data_in/netflow
|
||||
%{_localstatedir}/spool/pandora/data_in/sflow
|
||||
%{_localstatedir}/spool/pandora/data_in/trans
|
||||
%{_localstatedir}/spool/pandora/data_in/commands
|
||||
|
@ -62,6 +62,7 @@ mkdir -p $RPM_BUILD_ROOT/var/spool/pandora/data_in/conf
|
||||
mkdir -p $RPM_BUILD_ROOT/var/spool/pandora/data_in/md5
|
||||
mkdir -p $RPM_BUILD_ROOT/var/spool/pandora/data_in/collections
|
||||
mkdir -p $RPM_BUILD_ROOT/var/spool/pandora/data_in/netflow
|
||||
mkdir -p $RPM_BUILD_ROOT/var/spool/pandora/data_in/sflow
|
||||
mkdir -p $RPM_BUILD_ROOT/var/spool/pandora/data_in/trans
|
||||
mkdir -p $RPM_BUILD_ROOT/var/spool/pandora/data_in/commands
|
||||
mkdir -p $RPM_BUILD_ROOT/var/log/pandora/
|
||||
@ -235,6 +236,7 @@ rm -Rf /usr/share/man/man1/tentacle_server.1.gz
|
||||
/var/spool/pandora/data_in/md5
|
||||
/var/spool/pandora/data_in/collections
|
||||
/var/spool/pandora/data_in/netflow
|
||||
/var/spool/pandora/data_in/sflow
|
||||
/var/spool/pandora/data_in/conf
|
||||
/var/spool/pandora/data_in/trans
|
||||
/var/spool/pandora/data_in/commands
|
||||
|
@ -308,6 +308,8 @@ install () {
|
||||
chmod 2770 $DESTDIR$PANDORA_SPOOL/data_in/collections
|
||||
mkdir $DESTDIR$PANDORA_SPOOL/data_in/netflow 2> /dev/null
|
||||
chmod 2770 $DESTDIR$PANDORA_SPOOL/data_in/netflow
|
||||
mkdir $DESTDIR$PANDORA_SPOOL/data_in/sflow 2> /dev/null
|
||||
chmod 2770 $DESTDIR$PANDORA_SPOOL/data_in/sflow
|
||||
mkdir $DESTDIR$PANDORA_SPOOL/data_in/trans 2> /dev/null
|
||||
chmod 2770 $DESTDIR$PANDORA_SPOOL/data_in/trans
|
||||
mkdir $DESTDIR$PANDORA_SPOOL/data_in/commands 2> /dev/null
|
||||
|
@ -353,6 +353,23 @@ sub pandora_purgedb ($$$) {
|
||||
else {
|
||||
log_message ('PURGE', 'netflow_max_lifetime is set to 0. Old netflow data will not be deleted.');
|
||||
}
|
||||
|
||||
# Delete old sflow data
|
||||
if ($conf->{'_sflow_max_lifetime'} > 0) {
|
||||
log_message ('PURGE', "Deleting old sflow data.");
|
||||
if (! defined ($conf->{'_sflow_path'}) || ! -d $conf->{'_sflow_path'}) {
|
||||
log_message ('!', "sflow data directory does not exist, skipping.");
|
||||
}
|
||||
elsif (! -x $conf->{'_sflow_nfexpire'}) {
|
||||
log_message ('!', "Cannot execute " . $conf->{'_sflow_nfexpire'} . ", skipping.");
|
||||
}
|
||||
else {
|
||||
`yes 2>/dev/null | $conf->{'_sflow_nfexpire'} -r "$conf->{'_sflow_path'}" -t $conf->{'_sflow_max_lifetime'}d`;
|
||||
}
|
||||
}
|
||||
else {
|
||||
log_message ('PURGE', 'sflow_max_lifetime is set to 0. Old sflow data will not be deleted.');
|
||||
}
|
||||
|
||||
# Delete old log data
|
||||
log_message ('PURGE', "Deleting old log data.");
|
||||
|
Loading…
x
Reference in New Issue
Block a user