2017-07-15 11:28:27 +02:00
|
|
|
<?php
|
|
|
|
/*
|
|
|
|
* LibreNMS
|
|
|
|
*
|
2017-07-27 21:09:31 +02:00
|
|
|
* Copyright (c) 2017 Yacine Benamsili <https://github.com/yac01/librenms.git >
|
2017-07-15 11:28:27 +02:00
|
|
|
*
|
|
|
|
* 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, either version 3 of the License, or (at your
|
|
|
|
* option) any later version. Please see LICENSE.txt at the top level of
|
|
|
|
* the source code distribution for details.
|
|
|
|
*/
|
|
|
|
|
|
|
|
function opentsdb_update($device, $measurement, $tags, $fields)
|
|
|
|
{
|
|
|
|
|
|
|
|
global $config, $opentsdb;
|
|
|
|
if ($config['opentsdb']['enable'] == true) {
|
|
|
|
if ($opentsdb != true) {
|
|
|
|
$opentsdb = fsockopen($config['opentsdb']['host'], $config['opentsdb']['port']);
|
2017-07-27 21:09:31 +02:00
|
|
|
}
|
|
|
|
if ($opentsdb == true) {
|
|
|
|
d_echo("Connection to OpenTSDB is done\n");
|
2017-07-15 11:28:27 +02:00
|
|
|
} else {
|
2017-07-27 21:09:31 +02:00
|
|
|
d_echo("Connection to OpenTSDB has failed\n");
|
2017-07-15 11:28:27 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
$flag=$config['opentsdb']['co'];
|
|
|
|
$timestamp = time();
|
|
|
|
$tmp_tags = "hostname=".$device['hostname'];
|
|
|
|
|
|
|
|
foreach ($tags as $k => $v) {
|
|
|
|
$v = str_replace(array(' ',',','='), '_', $v);
|
|
|
|
if (!empty($v)) {
|
|
|
|
$tmp_tags = $tmp_tags ." ". $k ."=".$v;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if ($measurement == 'port') {
|
|
|
|
foreach ($fields as $k => $v) {
|
|
|
|
$measurement = $k;
|
|
|
|
if ($flag == true) {
|
|
|
|
$measurement = $measurement.".".$device['co'];
|
|
|
|
}
|
|
|
|
$line = sprintf('put net.port.%s %d %f %s', strtolower($measurement), $timestamp, $v, $tmp_tags);
|
|
|
|
d_echo("Sending to OPenTSDB: $line\n");
|
|
|
|
fwrite($opentsdb, $line . "\n"); // send $line into OpenTSDB
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
if ($flag == true) {
|
|
|
|
$measurement = $measurement.'.'.$device['co'];
|
|
|
|
}
|
|
|
|
|
|
|
|
foreach ($fields as $k => $v) {
|
|
|
|
$tmp_tags_key = $tmp_tags ." ". "key" ."=".$k;
|
|
|
|
$line = sprintf('put net.%s %d %f %s', strtolower($measurement), $timestamp, $v, $tmp_tags_key);
|
|
|
|
d_echo("Sending to OPenTSDB: $line\n");
|
|
|
|
fwrite($opentsdb, $line . "\n"); // send $line into OpenTSDB
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|