如何从Grafana中的Influxdb正确转换和显示严格增加的值?

时间:2016-12-16 16:22:19

标签: influxdb grafana

我在Influxdb中有一些时间序列,这些时间序列是从Linux /proc文件系统每10秒收集的 - 例如硬盘上的I / O操作。

这些值根据定义严格增加,我想将它们转换为I / O操作每秒(iops)并在Grafana中显示它们。

这是我到目前为止最接近的:

SELECT difference(last("value")) / 10 FROM "disk_write" [WHERE <stuff>] GROUP BY time(10s)

我无法找到一种方法来在Grafana中使用变量组按时间间隔定义此查询。

问题是,我无法将/ 10块中的SELECT替换为/ $interval(包含10s),这使得此查询非常慢,如果我显示一个巨大的时间窗口。

如何正确定义?

1 个答案:

答案 0 :(得分:2)

您想要使用DERIVATIVE()

这样的事情:

    public function getPeopleVisits($id)
{
  $host = "localhost";
  $user = "root";
  $password = "root";
  $database = "myDB";
  $connection = mysqli_connect($host, $user, $password);
  if(!$connection){
  die("Could not connect: " . mysqli_connect_error());}
  $connection->select_db($database);
  $sql = "SELECT p.id, p.firstname, p.lastname, s.statename, p.food, v.date_visited
    FROM Visits v
    INNER JOIN People p ON v.p_id = p.id
    INNER JOIN States s ON v.s_id = s.id
    WHERE v.p_id =" . $id;
  $query = mysqli_query ($connection, $sql) or die(mysqli_error($connection));
    $row = mysqli_fetch_array($query);

  $id = $row["id"];
  $firstName = $row["firstname"];
  $lastName = $row["lastname"];
  $foodName = $row["food"];
  $stateName = $row["statename"];
  $dateVisit = $row["date_visited"];
  $resultArray[] =
  [
      'id'            => $id,
      'firstname'     => $firstName,
      'lastname'      => $lastName,
      'food'          => $foodName,
      'statename'     => $stateName,
      'date_visited'  => $dateVisit
  ];
  echo json_encode($resultArray, JSON_PRETTY_PRINT);
}