Init
This commit is contained in:
parent
d7b9c40c07
commit
0e7f26f7e8
63
promPHPWeathermap.php
Normal file
63
promPHPWeathermap.php
Normal file
|
@ -0,0 +1,63 @@
|
|||
<?php
|
||||
// Pluggable datasource for PHP Weathermap 0.9
|
||||
// - return a static value
|
||||
|
||||
// TARGET static:10M
|
||||
// TARGET static:2M:256K
|
||||
|
||||
class WeatherMapDataSource_prometheus extends WeatherMapDataSource {
|
||||
|
||||
function Recognise($targetstring)
|
||||
{
|
||||
if( preg_match("/^prometheus:.*$/", $targetstring) )
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
function ReadData($targetstring, &$map, &$item)
|
||||
{
|
||||
$parts = explode(':', $targetstring);
|
||||
$router = $parts[1];
|
||||
$device = $parts[2];
|
||||
|
||||
$query_rx = "irate(node_network_receive_bytes{instance='$router:9100',device='$device'}[5m])";
|
||||
$query_tx = "irate(node_network_transmit_bytes{instance='$router:9100',device='$device'}[5m])";
|
||||
|
||||
$rx_rate = $this->prometheus_query($query_rx) * 8;
|
||||
$tx_rate = $this->prometheus_query($query_tx) * 8;
|
||||
|
||||
return ( array($rx_rate, $tx_rate, 0) );
|
||||
}
|
||||
|
||||
function prometheus_query($query)
|
||||
{
|
||||
$time = time();
|
||||
$query = urlencode($query);
|
||||
$url = "http://localhost:9090/api/v1/query?time=$time&query=$query";
|
||||
$ch = curl_init();
|
||||
curl_setopt($ch, CURLOPT_URL, $url);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
|
||||
$content = curl_exec($ch);
|
||||
$data = json_decode($content, true);
|
||||
|
||||
if ($data['status'] != "success")
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
if ($data['data']['resultType'] != "vector")
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
return $data['data']['result'][0]['value'][1];
|
||||
}
|
||||
}
|
||||
|
||||
// vim:ts=4:sw=4:
|
||||
?>
|
Loading…
Reference in a new issue