English Version of This Article

Vultr 提供了一套非常完善的API,其中涵盖了几乎所有你能在网页版管理面板使用的所有功能和查看的所有信息接口,详见Vultr API文档。于是我尝试用php做了一个通过API查询服务器流量的页面(因为我的服务器上挂着shadowsocksR服务,所以除了网站流量,VPN流量也是很大一笔)。

如果你看了Vultr的文档,你会发现里面只提供了curl的调用,比如基本的流量查询操作:

curl -H 'API-Key: YOURKEY' https://api.vultr.com/v1/server/bandwidth?SUBID=YOUR_SUBID

注意改操作只有被授权的IP下可以使用,可在这页下方添加授权的IP,不过不建议使用Allow All IP(这样任意IP都能通过你的API key对你的Vultr账号进行操作,很不安全。

稍微改进了一下Vultr的curl形式,发现可以这样将其变成普通url:

https://api.vultr.com/v1/server/bandwidth?SUBID=YOUR_SUBID&api_key=YOUR_API_KEY

于是就能简单通过url从服务器发起请求以获得一个吧包含查询信息的JSON返回。

以下是PHP调用Vultr API部分的源码(DEMO),如果需要完整的监控页面,你可以从文末下载:

<?php
error_reporting(E_ERROR); 
ini_set("display_errors","Off");
$request = "https://api.vultr.com/v1/server/bandwidth?SUBID=YOUR_SUBID&api_key=YOUR_API_KEY";
//使用时需替换你的服务器的SUBID和你的API key
$serviceInfo = json_decode(file_get_contents($request));
$income = $serviceInfo->incoming_bytes;
$outgo = $serviceInfo->outgoing_bytes;
$sumin = 0;
$sumout = 0;
foreach ($income as $invalue) {
  $sumin = $sumin + $invalue[1];
}
foreach ($outgo as $outvalue) {
  $sumout = $sumout + $outvalue[1];
}
$data = array(
    "plan_monthly_data" => 1073741824000,
    //这里是服务器流量,1073741824000 bits = 1000 Gbits,这是我的配置
    "data_counter" => $sumin + $sumout, 
    );
$json = json_encode($data);
file_put_contents("data.json", $json);
?>

下载完整源码,参考了Siphils的搬瓦工服务器监控代码。

Q.E.D.