Пример #1
0
function api_data_preset_rra_item_friendly_name_get($consolidation_function, $steps, $rows) {
	require_once(CACTI_BASE_PATH . "/include/data_preset/data_preset_rra_constants.php");
	require_once(CACTI_BASE_PATH . "/lib/data_preset/data_preset_rra_info.php");

	$cf_types = api_data_preset_rra_cf_type_list();
	$step_types = api_data_preset_rra_step_type_list();
	$row_types = api_data_preset_rra_row_type_list();

	$friendly_name = $cf_types[$consolidation_function] . ": ";

	if (($consolidation_function == RRA_CF_TYPE_AVERAGE) || ($consolidation_function == RRA_CF_TYPE_MIN) || ($consolidation_function == RRA_CF_TYPE_MAX) || ($consolidation_function == RRA_CF_TYPE_LAST)) {
		$friendly_name .= "Update every " . strtolower($step_types[$steps]) . " for " . strtolower($row_types[$rows]);
	}

	return $friendly_name;
}
Пример #2
0
function _data_preset_rra_item__consolidation_function($field_name_base, $field_value = "", $field_id = 0) {
	require_once(CACTI_BASE_PATH . "/lib/sys/html_form.php");
	require_once(CACTI_BASE_PATH . "/lib/data_preset/data_preset_rra_info.php");

	?>
	<tr class="<?php echo field_get_row_style();?>" id="row_field_consolidation_function_<?php echo $field_id;?>">
		<td width="50%" class="field-row">
			<span class="textEditTitle"><?php echo _("Consolidation Function");?></span><br>
			<?php echo _("This function will be applied to a group of data points before they are entered into the RRA.");?>
		</td>
		<td colspan="2" class="field-row">
			<?php form_dropdown($field_name_base, api_data_preset_rra_cf_type_list(), "", "", $field_value, "", "86400", "", "", "update_consolidation_function(this.value, this.parentNode.parentNode.id.replace(\"row_field_consolidation_function_\", \"\"))");?>
		</td>
	</tr>
	<?php
}
Пример #3
0
function rrdtool_function_create($data_source_id, $show_source, $rrd_struc, $syslog_facility = FACIL_POLLER) {
	require_once(CACTI_BASE_PATH . "/include/data_preset/data_preset_rra_constants.php");
	require_once(CACTI_BASE_PATH . "/lib/data_source/data_source_info.php");
	require_once(CACTI_BASE_PATH . "/lib/data_preset/data_preset_rra_info.php");

	$data_source_path = api_data_source_path_get($data_source_id, true);

	/* make sure the RRD file does not already exist */
	if (($show_source != true) && (file_exists($data_source_path) == true)) {
		return;
	}

	/* get the current data source */
	$data_source = api_data_source_get($data_source_id);

	/* create the "--step" line */
	$create_ds = RRD_NL . "--step ". $data_source["polling_interval"] . " " . RRD_NL;

	/* get a list of valid data source types (COUNTER, GAUGE, etc) */
	$data_source_types = api_data_source_type_list();

	/* query the data sources to be used in this .rrd file */
	$data_source_items = api_data_source_item_list($data_source_id);

	if (is_array($data_source_items) > 0) {
		foreach ($data_source_items as $data_source_item) {
			$create_ds .= "DS:" . $data_source_item["data_source_name"] . ":" . $data_source_types{$data_source_item["data_source_type"]} . ":" . $data_source_item["rrd_heartbeat"] . ":" . $data_source_item["rrd_minimum"] . ":" . (empty($data_source_item["rrd_maximum"]) ? "U" : $data_source_item["rrd_maximum"]) . RRD_NL;
		}
	}

	/* get a list of valid consolidation functions (AVERAGE, MAX, etc) */
	$rra_cf_types = api_data_preset_rra_cf_type_list();

	/* get a list of RRA's that have been associated with this data source */
	$rra_items = api_data_source_rra_item_list($data_source_id);

	/* if we find that this data source has no RRA associated; get out */
	if ((!is_array($rra_items)) || (sizeof($rra_items) == 0)) {
		log_save(_("There are no RRA's assigned to data_source_id: ") . $data_source_id . ".", SEV_ERROR, FACIL_POLLER);
		return false;
	}

	$create_rra = "";
	/* loop through each available RRA for this data source */
	foreach ($rra_items as $rra_item) {
		/* calculate the correct number of steps based on the RRA steps and the polling interval */
		$rra_steps = ceil($rra_item["steps"] / $data_source["polling_interval"]);

		/* calculate the correct number of rows based on the polling interval and the RRA
		 * retention interval */
		$rra_rows = ceil($rra_item["rows"] / ($data_source["polling_interval"] * $rra_steps));

		if (($rra_item["consolidation_function"] == RRA_CF_TYPE_AVERAGE) || ($rra_item["consolidation_function"] == RRA_CF_TYPE_MIN) || ($rra_item["consolidation_function"] == RRA_CF_TYPE_MAX) || ($rra_item["consolidation_function"] == RRA_CF_TYPE_LAST)) {
			$create_rra .= "RRA:" . $rra_cf_types{$rra_item["consolidation_function"]} . ":" . $rra_item["x_files_factor"] . ":" . $rra_steps . ":" . $rra_rows . RRD_NL;
		}else if ($rra_item["consolidation_function"] == RRA_CF_TYPE_HWPREDICT) {
			$create_rra .= "RRA:" . $rra_cf_types{$rra_item["consolidation_function"]} . ":" . $rra_item["rows"] . ":" . $rra_item["hw_alpha"] . ":" . $rra_item["hw_beta"] . ":" . $rra_item["hw_seasonal_period"] . (empty($rra_item["hw_rra_num"]) ? "" : ":" . $rra_item["hw_rra_num"]) . RRD_NL;
		}else if (($rra_item["consolidation_function"] == RRA_CF_TYPE_SEASONAL) || ($rra_item["consolidation_function"] == RRA_CF_TYPE_DEVSEASONAL)) {
			$create_rra .= "RRA:" . $rra_cf_types{$rra_item["consolidation_function"]} . ":" . $rra_item["hw_seasonal_period"] . ":" . $rra_item["hw_gamma"] . ":" . $rra_item["hw_rra_num"] . RRD_NL;
		}else if ($rra_item["consolidation_function"] == RRA_CF_TYPE_DEVPREDICT) {
			$create_rra .= "RRA:" . $rra_cf_types{$rra_item["consolidation_function"]} . ":" . $rra_item["rows"] . ":" . $rra_item["hw_rra_num"] . RRD_NL;
		}else if ($rra_item["consolidation_function"] == RRA_CF_TYPE_FAILURES) {
			$create_rra .= "RRA:" . $rra_cf_types{$rra_item["consolidation_function"]} . ":" . $rra_item["rows"] . ":" . $rra_item["hw_threshold"] . ":" . $rra_item["hw_window_length"] . ":" . $rra_item["hw_rra_num"] . RRD_NL;
		}
	}

	if ($show_source == true) {
		return read_config_option("path_rrdtool") . " create" . RRD_NL . "$data_source_path$create_ds$create_rra";
	}else{
		rrdtool_execute("create $data_source_path $create_ds$create_rra", true, RRDTOOL_OUTPUT_STDOUT, $rrd_struc, $syslog_facility);
	}
}