Merge branch 'ent-9624-meter-soporte-a-sflow-en-nuestro-gestor-de-flujos' into 'develop'
Ent 9624 meter soporte a sflow en nuestro gestor de flujos See merge request artica/pandorafms!5587
This commit is contained in:
commit
a30ba4cf27
|
@ -364,6 +364,11 @@ if ($access_console_node === true) {
|
|||
$sub2['godmode/setup/setup§ion=net']['text'] = __('Netflow');
|
||||
$sub2['godmode/setup/setup§ion=net']['refr'] = 0;
|
||||
}
|
||||
|
||||
if ((bool) $config['activate_sflow'] === true) {
|
||||
$sub2['godmode/setup/setup§ion=sflow']['text'] = __('Sflow');
|
||||
$sub2['godmode/setup/setup§ion=sflow']['refr'] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
$sub2['godmode/setup/setup§ion=ehorus']['text'] = __('eHorus');
|
||||
|
|
|
@ -154,6 +154,20 @@ if (check_acl($config['id_user'], 0, 'AW')) {
|
|||
).'</a>',
|
||||
];
|
||||
}
|
||||
|
||||
if ($config['activate_sflow']) {
|
||||
$buttons['sflow'] = [
|
||||
'active' => false,
|
||||
'text' => '<a href="'.ui_get_full_url('index.php?sec=gsetup&sec2=godmode/setup/setup&section=sflow').'">'.html_print_image(
|
||||
'images/op_recon.png',
|
||||
true,
|
||||
[
|
||||
'title' => __('Sflow'),
|
||||
'class' => 'invert_filter',
|
||||
]
|
||||
).'</a>',
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
$buttons['integria'] = [
|
||||
|
@ -277,6 +291,12 @@ switch ($section) {
|
|||
$help_header = 'setup_netflow_tab';
|
||||
break;
|
||||
|
||||
case 'sflow':
|
||||
$buttons['sflow']['active'] = true;
|
||||
$subpage = __('Sflow');
|
||||
$help_header = 'setup_flow_tab';
|
||||
break;
|
||||
|
||||
case 'ehorus':
|
||||
$buttons['ehorus']['active'] = true;
|
||||
$subpage = __('eHorus');
|
||||
|
@ -410,6 +430,10 @@ switch ($section) {
|
|||
include_once $config['homedir'].'/godmode/setup/setup_netflow.php';
|
||||
break;
|
||||
|
||||
case 'sflow':
|
||||
include_once $config['homedir'].'/godmode/setup/setup_sflow.php';
|
||||
break;
|
||||
|
||||
case 'vis':
|
||||
include_once $config['homedir'].'/godmode/setup/setup_visuals.php';
|
||||
break;
|
||||
|
|
|
@ -403,6 +403,32 @@ $table->data[$i++][] = html_print_label_input_block(
|
|||
)
|
||||
);
|
||||
|
||||
|
||||
$table->data[$i][] = html_print_label_input_block(
|
||||
__('Enable Sflow'),
|
||||
html_print_checkbox_switch_extended(
|
||||
'activate_sflow',
|
||||
1,
|
||||
$config['activate_sflow'],
|
||||
$rbt_disabled,
|
||||
'',
|
||||
'',
|
||||
true
|
||||
),
|
||||
);
|
||||
|
||||
$table->data[$i++][] = html_print_label_input_block(
|
||||
__('General network path'),
|
||||
html_print_input_text(
|
||||
'general_network_path',
|
||||
$config['general_network_path'],
|
||||
'',
|
||||
40,
|
||||
255,
|
||||
true
|
||||
)
|
||||
);
|
||||
|
||||
$table->colspan[$i][] = 2;
|
||||
$table->data[$i++][] = html_print_label_input_block(
|
||||
__('Timezone setup'),
|
||||
|
|
|
@ -43,7 +43,7 @@ $table->data = [];
|
|||
|
||||
$table->data[0][] = html_print_label_input_block(
|
||||
__('Data storage path'),
|
||||
html_print_input_text('netflow_path', $config['netflow_path'], false, 50, 200, true)
|
||||
html_print_input_text('netflow_name_dir', $config['netflow_name_dir'], false, 50, 200, true)
|
||||
);
|
||||
|
||||
$table->data[0][] = html_print_label_input_block(
|
||||
|
@ -100,3 +100,9 @@ html_print_action_buttons(
|
|||
)
|
||||
);
|
||||
echo '</form>';
|
||||
?>
|
||||
<script>
|
||||
$("input[name=netflow_name_dir]").on("input", function() {
|
||||
$(this).val($(this).val().replace(/[^a-z0-9]/gi, ""));
|
||||
});
|
||||
</script>
|
|
@ -0,0 +1,108 @@
|
|||
<?php
|
||||
/**
|
||||
* Setup view for sflow
|
||||
*
|
||||
* @category Setup
|
||||
* @package Pandora FMS
|
||||
* @subpackage Configuration
|
||||
* @version 1.0.0
|
||||
* @license See below
|
||||
*
|
||||
* ______ ___ _______ _______ ________
|
||||
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
|
||||
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
|
||||
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
|
||||
*
|
||||
* ============================================================================
|
||||
* Copyright (c) 2005-2022 Artica Soluciones Tecnologicas
|
||||
* Please see http://pandorafms.org for full contribution list
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation for version 2.
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
* ============================================================================
|
||||
*/
|
||||
|
||||
// Begin.
|
||||
global $config;
|
||||
|
||||
require_once 'include/functions_ui.php';
|
||||
|
||||
check_login();
|
||||
|
||||
$update = (bool) get_parameter('update');
|
||||
|
||||
$table = new stdClass();
|
||||
$table->width = '100%';
|
||||
$table->class = 'databox filter-table-adv';
|
||||
|
||||
$table->data = [];
|
||||
|
||||
$table->data[0][] = html_print_label_input_block(
|
||||
__('Data storage path'),
|
||||
html_print_input_text('sflow_name_dir', $config['sflow_name_dir'], false, 50, 200, true)
|
||||
);
|
||||
|
||||
$table->data[0][] = html_print_label_input_block(
|
||||
__('Daemon interval'),
|
||||
html_print_input_text('sflow_interval', $config['sflow_interval'], false, 50, 200, true)
|
||||
);
|
||||
|
||||
$table->data[1][] = html_print_label_input_block(
|
||||
__('Daemon binary path'),
|
||||
html_print_input_text('sflow_daemon', $config['sflow_daemon'], false, 50, 200, true)
|
||||
);
|
||||
|
||||
$table->data[1][] = html_print_label_input_block(
|
||||
__('Nfdump binary path'),
|
||||
html_print_input_text('sflow_nfdump', $config['sflow_nfdump'], false, 50, 200, true)
|
||||
);
|
||||
|
||||
$table->data[2][] = html_print_label_input_block(
|
||||
__('Nfexpire binary path'),
|
||||
html_print_input_text('sflow_nfexpire', $config['sflow_nfexpire'], false, 50, 200, true)
|
||||
);
|
||||
|
||||
$table->data[2][] = html_print_label_input_block(
|
||||
__('Maximum chart resolution'),
|
||||
html_print_input_text('sflow_max_resolution', $config['sflow_max_resolution'], false, 50, 200, true)
|
||||
);
|
||||
|
||||
$table->data[3][] = html_print_label_input_block(
|
||||
__('Disable custom live view filters'),
|
||||
html_print_checkbox_switch('sflow_disable_custom_lvfilters', 1, $config['sflow_disable_custom_lvfilters'], true)
|
||||
);
|
||||
|
||||
$table->data[3][] = html_print_label_input_block(
|
||||
__('Sflow max lifetime'),
|
||||
html_print_input_text('sflow_max_lifetime', $config['sflow_max_lifetime'], false, 50, 200, true)
|
||||
);
|
||||
|
||||
$onclick = "if (!confirm('".__('Warning').'. '.__('IP address resolution can take a lot of time')."')) return false;";
|
||||
$table->data[4][] = html_print_label_input_block(
|
||||
__('Name resolution for IP address'),
|
||||
html_print_checkbox_switch_extended('sflow_get_ip_hostname', 1, $config['sflow_get_ip_hostname'], false, $onclick, '', true)
|
||||
);
|
||||
|
||||
echo '<form class="max_floating_element_size" id="sflow_setup" method="post">';
|
||||
html_print_table($table);
|
||||
html_print_input_hidden('update_config', 1);
|
||||
html_print_action_buttons(
|
||||
html_print_submit_button(
|
||||
__('Update'),
|
||||
'upd_button',
|
||||
false,
|
||||
['icon' => 'update'],
|
||||
true
|
||||
)
|
||||
);
|
||||
echo '</form>';
|
||||
?>
|
||||
<script>
|
||||
$("input[name=sflow_name_dir]").on("input", function() {
|
||||
$(this).val($(this).val().replace(/[^a-z0-9]/gi, ""));
|
||||
});
|
||||
</script>
|
|
@ -260,6 +260,24 @@ function config_update_config()
|
|||
$error_update[] = __('Enable Netflow');
|
||||
}
|
||||
|
||||
if (config_update_value('activate_sflow', (bool) get_parameter('activate_sflow'), true) === false) {
|
||||
$error_update[] = __('Enable Sflow');
|
||||
}
|
||||
|
||||
if (config_update_value('general_network_path', get_parameter('general_network_path'), true) === false) {
|
||||
$error_update[] = __('General network path');
|
||||
} else {
|
||||
if (empty($config['netflow_name_dir']) === false && $config['netflow_name_dir'] !== '') {
|
||||
$path = get_parameter('general_network_path');
|
||||
config_update_value('netflow_path', $path.$config['netflow_name_dir']);
|
||||
}
|
||||
|
||||
if (empty($config['sflow_name_dir']) === false && $config['sflow_name_dir'] !== '') {
|
||||
$path = get_parameter('general_network_path');
|
||||
config_update_value('sflow_path', $path.$config['sflow_name_dir']);
|
||||
}
|
||||
}
|
||||
|
||||
$timezone = (string) get_parameter('timezone');
|
||||
if (empty($timezone) === true || config_update_value('timezone', $timezone, true) === false) {
|
||||
$error_update[] = __('Timezone setup');
|
||||
|
@ -1505,8 +1523,13 @@ function config_update_config()
|
|||
break;
|
||||
|
||||
case 'net':
|
||||
if (config_update_value('netflow_path', get_parameter('netflow_path'), true) === false) {
|
||||
$error_update[] = __('Data storage path');
|
||||
if (config_update_value('netflow_name_dir', get_parameter('netflow_name_dir'), true) === false) {
|
||||
$error_update[] = __('Name storage path');
|
||||
} else {
|
||||
if (empty($config['general_network_path']) === false && $config['general_network_path'] !== '') {
|
||||
$name = get_parameter('netflow_name_dir');
|
||||
config_update_value('netflow_path', $config['general_network_path'].$name);
|
||||
}
|
||||
}
|
||||
|
||||
if (config_update_value('netflow_interval', (int) get_parameter('netflow_interval'), true) === false) {
|
||||
|
@ -1542,6 +1565,49 @@ function config_update_config()
|
|||
}
|
||||
break;
|
||||
|
||||
case 'sflow':
|
||||
if (config_update_value('sflow_name_dir', get_parameter('sflow_name_dir'), true) === false) {
|
||||
$error_update[] = __('Sflow name dir');
|
||||
} else {
|
||||
if (empty($config['general_network_path']) === false && $config['general_network_path'] !== '') {
|
||||
$name = get_parameter('sflow_name_dir');
|
||||
config_update_value('sflow_path', $config['general_network_path'].$name);
|
||||
}
|
||||
}
|
||||
|
||||
if (config_update_value('sflow_interval', (int) get_parameter('sflow_interval'), true) === false) {
|
||||
$error_update[] = __('Daemon interval');
|
||||
}
|
||||
|
||||
if (config_update_value('sflow_daemon', get_parameter('sflow_daemon'), true) === false) {
|
||||
$error_update[] = __('Daemon binary path');
|
||||
}
|
||||
|
||||
if (config_update_value('sflow_nfdump', get_parameter('sflow_nfdump'), true) === false) {
|
||||
$error_update[] = __('Nfdump binary path');
|
||||
}
|
||||
|
||||
if (config_update_value('sflow_nfexpire', get_parameter('sflow_nfexpire'), true) === false) {
|
||||
$error_update[] = __('Nfexpire binary path');
|
||||
}
|
||||
|
||||
if (config_update_value('sflow_max_resolution', (int) get_parameter('sflow_max_resolution'), true) === false) {
|
||||
$error_update[] = __('Maximum chart resolution');
|
||||
}
|
||||
|
||||
if (config_update_value('sflow_disable_custom_lvfilters', get_parameter('sflow_disable_custom_lvfilters'), true) === false) {
|
||||
$error_update[] = __('Disable custom live view filters');
|
||||
}
|
||||
|
||||
if (config_update_value('sflow_max_lifetime', (int) get_parameter('sflow_max_lifetime'), true) === false) {
|
||||
$error_update[] = __('Sflow max lifetime');
|
||||
}
|
||||
|
||||
if (config_update_value('sflow_get_ip_hostname', (int) get_parameter('sflow_get_ip_hostname'), true) === false) {
|
||||
$error_update[] = __('Name resolution for IP address');
|
||||
}
|
||||
break;
|
||||
|
||||
case 'log':
|
||||
if (config_update_value('elasticsearch_ip', get_parameter('elasticsearch_ip'), true) === false) {
|
||||
$error_update[] = __('IP ElasticSearch server');
|
||||
|
@ -2776,6 +2842,28 @@ function config_process_config()
|
|||
config_update_value('activate_netflow', 0);
|
||||
}
|
||||
|
||||
if (!isset($config['activate_sflow'])) {
|
||||
config_update_value('activate_sflow', 0);
|
||||
}
|
||||
|
||||
if (!isset($config['general_network_path'])) {
|
||||
if ($is_windows) {
|
||||
$default = 'C:\PandoraFMS\Pandora_Server\data_in\\';
|
||||
} else {
|
||||
$default = '/var/spool/pandora/data_in/';
|
||||
}
|
||||
|
||||
config_update_value('general_network_path', $default);
|
||||
}
|
||||
|
||||
if (!isset($config['netflow_name_dir'])) {
|
||||
config_update_value('netflow_name_dir', 'netflow');
|
||||
}
|
||||
|
||||
if (!isset($config['sflow_name_dir'])) {
|
||||
config_update_value('sflow_name_dir', 'sflow');
|
||||
}
|
||||
|
||||
if (!isset($config['netflow_path'])) {
|
||||
if ($is_windows) {
|
||||
$default = 'C:\PandoraFMS\Pandora_Server\data_in\netflow';
|
||||
|
@ -2814,6 +2902,48 @@ function config_process_config()
|
|||
config_update_value('netflow_max_lifetime', '5');
|
||||
}
|
||||
|
||||
if (!isset($config['sflow_interval'])) {
|
||||
config_update_value('sflow_interval', SECONDS_10MINUTES);
|
||||
}
|
||||
|
||||
if (!isset($config['sflow_daemon'])) {
|
||||
config_update_value('sflow_daemon', '/usr/bin/sfcapd');
|
||||
}
|
||||
|
||||
if (!isset($config['sflow_nfdump'])) {
|
||||
config_update_value('sflow_nfdump', '/usr/bin/nfdump');
|
||||
}
|
||||
|
||||
if (!isset($config['sflow_nfexpire'])) {
|
||||
config_update_value('sflow_nfexpire', '/usr/bin/nfexpire');
|
||||
}
|
||||
|
||||
if (!isset($config['sflow_max_resolution'])) {
|
||||
config_update_value('sflow_max_resolution', '50');
|
||||
}
|
||||
|
||||
if (!isset($config['sflow_disable_custom_lvfilters'])) {
|
||||
config_update_value('sflow_disable_custom_lvfilters', 0);
|
||||
}
|
||||
|
||||
if (!isset($config['sflow_max_lifetime'])) {
|
||||
config_update_value('sflow_max_lifetime', '5');
|
||||
}
|
||||
|
||||
if (!isset($config['sflow_name_dir'])) {
|
||||
config_update_value('sflow_name_dir', 'sflow');
|
||||
}
|
||||
|
||||
if (!isset($config['sflow_path'])) {
|
||||
if ($is_windows) {
|
||||
$default = 'C:\PandoraFMS\Pandora_Server\data_in\sflow';
|
||||
} else {
|
||||
$default = '/var/spool/pandora/data_in/sflow';
|
||||
}
|
||||
|
||||
config_update_value('sflow_path', $default);
|
||||
}
|
||||
|
||||
if (!isset($config['auth'])) {
|
||||
config_update_value('auth', 'mysql');
|
||||
}
|
||||
|
|
|
@ -1025,9 +1025,29 @@ function netflow_get_command($options, $filter)
|
|||
// Build command.
|
||||
$command = io_safe_output($config['netflow_nfdump']).' -N';
|
||||
|
||||
// Netflow data path.
|
||||
if (isset($config['netflow_path']) && $config['netflow_path'] != '') {
|
||||
$command .= ' -R. -M '.$config['netflow_path'];
|
||||
if ($config['activate_sflow'] && $config['activate_netflow']) {
|
||||
if (isset($config['sflow_name_dir']) && $config['sflow_name_dir'] !== ''
|
||||
&& isset($config['netflow_name_dir']) && $config['netflow_name_dir'] !== ''
|
||||
&& isset($config['general_network_path']) && $config['general_network_path'] !== ''
|
||||
) {
|
||||
$command .= ' -R. -M '.$config['general_network_path'].$config['netflow_name_dir'].':'.$config['sflow_name_dir'];
|
||||
}
|
||||
} else {
|
||||
if ($config['activate_sflow']) {
|
||||
if (isset($config['sflow_name_dir']) && $config['sflow_name_dir'] !== ''
|
||||
&& isset($config['general_network_path']) && $config['general_network_path'] !== ''
|
||||
) {
|
||||
$command .= ' -R. -M '.$config['general_network_path'].$config['sflow_name_dir'];
|
||||
}
|
||||
}
|
||||
|
||||
if ($config['activate_netflow']) {
|
||||
if (isset($config['netflow_name_dir']) && $config['netflow_name_dir'] !== ''
|
||||
&& isset($config['general_network_path']) && $config['general_network_path'] !== ''
|
||||
) {
|
||||
$command .= ' -R. -M '.$config['general_network_path'].$config['netflow_name_dir'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Add options.
|
||||
|
@ -1035,7 +1055,6 @@ function netflow_get_command($options, $filter)
|
|||
|
||||
// Filter options.
|
||||
$command .= ' '.netflow_get_filter_arguments($filter);
|
||||
|
||||
return $command;
|
||||
}
|
||||
|
||||
|
|
|
@ -205,7 +205,7 @@ if ($access_console_node === true) {
|
|||
$sub['operation/inventory/inventory']['refr'] = 0;
|
||||
}
|
||||
|
||||
if ($config['activate_netflow']) {
|
||||
if ($config['activate_netflow'] || $config['activate_sflow']) {
|
||||
$sub['network_traffic'] = [
|
||||
'text' => __('Network'),
|
||||
'id' => 'Network',
|
||||
|
@ -213,34 +213,20 @@ if ($access_console_node === true) {
|
|||
'subtype' => 'nolink',
|
||||
'refr' => 0,
|
||||
];
|
||||
|
||||
// Initialize the submenu.
|
||||
$netflow_sub = [];
|
||||
|
||||
$netflow_sub = array_merge(
|
||||
$netflow_sub,
|
||||
[
|
||||
'operation/netflow/netflow_explorer' => [
|
||||
'text' => __('Netflow explorer'),
|
||||
'id' => 'Netflow explorer',
|
||||
],
|
||||
'operation/netflow/nf_live_view' => [
|
||||
'text' => __('Netflow Live View'),
|
||||
'id' => 'Netflow Live View',
|
||||
],
|
||||
]
|
||||
);
|
||||
|
||||
$netflow_sub = array_merge(
|
||||
$netflow_sub,
|
||||
[
|
||||
'operation/network/network_usage_map' => [
|
||||
'text' => __('Network usage map'),
|
||||
'id' => 'Network usage map',
|
||||
],
|
||||
]
|
||||
);
|
||||
|
||||
$netflow_sub = [
|
||||
'operation/netflow/netflow_explorer' => [
|
||||
'text' => __('Netflow explorer'),
|
||||
'id' => 'Netflow explorer',
|
||||
],
|
||||
'operation/netflow/nf_live_view' => [
|
||||
'text' => __('Netflow Live View'),
|
||||
'id' => 'Netflow Live View',
|
||||
],
|
||||
'operation/network/network_usage_map' => [
|
||||
'text' => __('Network usage map'),
|
||||
'id' => 'Network usage map',
|
||||
],
|
||||
];
|
||||
$sub['network_traffic']['sub2'] = $netflow_sub;
|
||||
}
|
||||
|
||||
|
|
|
@ -72,6 +72,7 @@ INSERT INTO `tconfig` (`token`, `value`) VALUES
|
|||
('stats_interval', '60'),
|
||||
('activate_gis', '0'),
|
||||
('activate_netflow', '0'),
|
||||
('activate_sflow', '0'),
|
||||
('timezone', 'Europe/Berlin'),
|
||||
('string_purge', 7),
|
||||
('audit_purge', 15),
|
||||
|
@ -87,6 +88,10 @@ INSERT INTO `tconfig` (`token`, `value`) VALUES
|
|||
('netflow_daemon', '/usr/bin/nfcapd'),
|
||||
('netflow_nfdump', '/usr/bin/nfdump'),
|
||||
('netflow_max_resolution', '50'),
|
||||
('sflow_interval', '3600'),
|
||||
('sflow_daemon', '/usr/bin/sfcapd'),
|
||||
('sflow_nfdump', '/usr/bin/nfdump'),
|
||||
('sflow_max_resolution', '50'),
|
||||
('event_fields', 'mini_severity,evento,estado,agent_name,timestamp'),
|
||||
('status_monitor_fields', 'policy,agent,data_type,module_name,server_type,interval,status,last_status_change,graph,warn,data,timestamp'),
|
||||
('list_ACL_IPs_for_API', '127.0.0.1'),
|
||||
|
|
|
@ -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;
|
||||
|
@ -262,8 +268,8 @@ sub pandora_start_netflow_daemon () {
|
|||
|
||||
# Check if netflow is enabled
|
||||
if ($Config{'activate_netflow'} != 1) {
|
||||
logger (\%Config, " [*] Netflow daemon disabled.", 1);
|
||||
print_message (\%Config, " [*] Netflow daemon disabled.", 1);
|
||||
logger (\%Config, " [*] NetFlow daemon disabled.", 1);
|
||||
print_message (\%Config, " [*] NetFlow daemon disabled.", 1);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -282,8 +288,8 @@ sub pandora_start_netflow_daemon () {
|
|||
return;
|
||||
}
|
||||
|
||||
logger (\%Config, "[*] Netflow daemon started.", 1);
|
||||
print_message (\%Config, "[*] Netflow daemon started.", 1);
|
||||
logger (\%Config, "[*] NetFlow daemon started.", 1);
|
||||
print_message (\%Config, "[*] NetFlow daemon started.", 1);
|
||||
}
|
||||
|
||||
########################################################################################
|
||||
|
@ -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…
Reference in New Issue