mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
Merge pull request #3354 from geordish/influxdb-incorect-storage-typesv2
Influxdb incorrect storage types
This commit is contained in:
@@ -1252,10 +1252,30 @@ function function_check($function) {
|
||||
return function_exists($function);
|
||||
}
|
||||
|
||||
function force_influx_data($type,$data) {
|
||||
if ($type == 'f' || $type == 'float') {
|
||||
return(sprintf("%.1f",$data));
|
||||
function force_influx_data($data) {
|
||||
/*
|
||||
* It is not trivial to detect if something is a float or an integer, and
|
||||
* therefore may cause breakages on inserts.
|
||||
* Just setting every number to a float gets around this, but may introduce
|
||||
* inefficiencies.
|
||||
* I've left the detection statement in there for a possible change in future,
|
||||
* but currently everything just gets set to a float.
|
||||
*/
|
||||
|
||||
if (is_numeric($data)) {
|
||||
// If it is an Integer
|
||||
if (ctype_digit($data)) {
|
||||
return floatval($data);
|
||||
// Else it is a float
|
||||
}
|
||||
else {
|
||||
return floatval($data);
|
||||
}
|
||||
}
|
||||
else {
|
||||
return $data;
|
||||
}
|
||||
|
||||
}// end force_influx_data
|
||||
|
||||
/**
|
||||
|
@@ -58,7 +58,10 @@ function influx_update($device,$measurement,$tags=array(),$fields) {
|
||||
$tmp_tags[$k] = $v;
|
||||
}
|
||||
foreach ($fields as $k => $v) {
|
||||
$tmp_fields[$k] = force_influx_data('f',$v);
|
||||
$tmp_fields[$k] = force_influx_data($v);
|
||||
if( $tmp_fields[$k] === null) {
|
||||
unset($tmp_fields[$k]);
|
||||
}
|
||||
}
|
||||
|
||||
d_echo("\nInfluxDB data:\n");
|
||||
@@ -76,7 +79,12 @@ function influx_update($device,$measurement,$tags=array(),$fields) {
|
||||
$tmp_fields // optional additional fields
|
||||
)
|
||||
);
|
||||
$result = $influxdb->writePoints($points);
|
||||
try {
|
||||
$result = $influxdb->writePoints($points);
|
||||
} catch (Exception $e) {
|
||||
d_echo("Caught exception: ", $e->getMessage(), "\n");
|
||||
d_echo($e->getTrace());
|
||||
}
|
||||
}
|
||||
else {
|
||||
print $console_color->convert('[%gInfluxDB Disabled%n] ', false);
|
||||
|
@@ -48,16 +48,7 @@ if ($device['os'] != 'Snom') {
|
||||
|
||||
$data_array = snmpwalk_cache_oid($device, 'snmp', array(), 'SNMPv2-MIB');
|
||||
|
||||
$fields = array();
|
||||
foreach ($oids as $oid) {
|
||||
if (is_numeric($data_array[0][$oid])) {
|
||||
$value = $data_array[0][$oid];
|
||||
}
|
||||
else {
|
||||
$value = 'U';
|
||||
}
|
||||
$fields[$oid] = $value;
|
||||
}
|
||||
$fields = $data_array[0];
|
||||
|
||||
if (isset($data_array[0]['snmpInPkts']) && isset($data_array[0]['snmpOutPkts'])) {
|
||||
if (!file_exists($rrd_file)) {
|
||||
|
Reference in New Issue
Block a user