mirror of
https://github.com/pandorafms/pandorafms.git
synced 2025-07-31 01:35:36 +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
|
# Stop the netflow daemon
|
||||||
pandora_stop_netflow_daemon ();
|
pandora_stop_netflow_daemon ();
|
||||||
|
|
||||||
|
# Stop the sflow daemon
|
||||||
|
pandora_stop_sflow_daemon ();
|
||||||
|
|
||||||
# Stop server threads.
|
# Stop server threads.
|
||||||
stop_server_threads();
|
stop_server_threads();
|
||||||
|
|
||||||
@ -167,6 +170,9 @@ sub pandora_startup () {
|
|||||||
|
|
||||||
# Start the netflow daemon if necessary
|
# Start the netflow daemon if necessary
|
||||||
pandora_start_netflow_daemon ();
|
pandora_start_netflow_daemon ();
|
||||||
|
|
||||||
|
# Start the sflow daemon if necessary
|
||||||
|
pandora_start_sflow_daemon ();
|
||||||
|
|
||||||
# Remove disabled servers
|
# Remove disabled servers
|
||||||
@Servers = grep { defined ($_) } @Servers;
|
@Servers = grep { defined ($_) } @Servers;
|
||||||
@ -310,6 +316,62 @@ sub pandora_stop_netflow_daemon () {
|
|||||||
return 0;
|
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($) {
|
sub pandora_agent_autoconfiguration_scheduled($) {
|
||||||
my $pa_config = shift;
|
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_interval"} = pandora_get_tconfig_token ($dbh, 'netflow_interval', 300);
|
||||||
$pa_config->{"netflow_daemon"} = pandora_get_tconfig_token ($dbh, 'netflow_daemon', '/usr/bin/nfcapd');
|
$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
|
# Log module configuration
|
||||||
$pa_config->{"log_dir"} = pandora_get_tconfig_token ($dbh, 'log_dir', '/var/spool/pandora/data_in/log');
|
$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);
|
$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/md5
|
||||||
mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/spool/pandora/data_in/collections
|
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/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/trans
|
||||||
mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/spool/pandora/data_in/commands
|
mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/spool/pandora/data_in/commands
|
||||||
mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/log/pandora/
|
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/collections
|
||||||
%{_localstatedir}/spool/pandora/data_in/conf
|
%{_localstatedir}/spool/pandora/data_in/conf
|
||||||
%{_localstatedir}/spool/pandora/data_in/netflow
|
%{_localstatedir}/spool/pandora/data_in/netflow
|
||||||
|
%{_localstatedir}/spool/pandora/data_in/sflow
|
||||||
%{_localstatedir}/spool/pandora/data_in/trans
|
%{_localstatedir}/spool/pandora/data_in/trans
|
||||||
%{_localstatedir}/spool/pandora/data_in/commands
|
%{_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/md5
|
||||||
mkdir -p $RPM_BUILD_ROOT/var/spool/pandora/data_in/collections
|
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/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/trans
|
||||||
mkdir -p $RPM_BUILD_ROOT/var/spool/pandora/data_in/commands
|
mkdir -p $RPM_BUILD_ROOT/var/spool/pandora/data_in/commands
|
||||||
mkdir -p $RPM_BUILD_ROOT/var/log/pandora/
|
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/md5
|
||||||
/var/spool/pandora/data_in/collections
|
/var/spool/pandora/data_in/collections
|
||||||
/var/spool/pandora/data_in/netflow
|
/var/spool/pandora/data_in/netflow
|
||||||
|
/var/spool/pandora/data_in/sflow
|
||||||
/var/spool/pandora/data_in/conf
|
/var/spool/pandora/data_in/conf
|
||||||
/var/spool/pandora/data_in/trans
|
/var/spool/pandora/data_in/trans
|
||||||
/var/spool/pandora/data_in/commands
|
/var/spool/pandora/data_in/commands
|
||||||
|
@ -308,6 +308,8 @@ install () {
|
|||||||
chmod 2770 $DESTDIR$PANDORA_SPOOL/data_in/collections
|
chmod 2770 $DESTDIR$PANDORA_SPOOL/data_in/collections
|
||||||
mkdir $DESTDIR$PANDORA_SPOOL/data_in/netflow 2> /dev/null
|
mkdir $DESTDIR$PANDORA_SPOOL/data_in/netflow 2> /dev/null
|
||||||
chmod 2770 $DESTDIR$PANDORA_SPOOL/data_in/netflow
|
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
|
mkdir $DESTDIR$PANDORA_SPOOL/data_in/trans 2> /dev/null
|
||||||
chmod 2770 $DESTDIR$PANDORA_SPOOL/data_in/trans
|
chmod 2770 $DESTDIR$PANDORA_SPOOL/data_in/trans
|
||||||
mkdir $DESTDIR$PANDORA_SPOOL/data_in/commands 2> /dev/null
|
mkdir $DESTDIR$PANDORA_SPOOL/data_in/commands 2> /dev/null
|
||||||
|
@ -353,6 +353,23 @@ sub pandora_purgedb ($$$) {
|
|||||||
else {
|
else {
|
||||||
log_message ('PURGE', 'netflow_max_lifetime is set to 0. Old netflow data will not be deleted.');
|
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
|
# Delete old log data
|
||||||
log_message ('PURGE', "Deleting old log data.");
|
log_message ('PURGE', "Deleting old log data.");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user