如何计算ip地址的使用寿命?

时间:2018-11-22 06:00:05

标签: influxdb

现在,我修改crontab的外壳,每10分钟运行一次,仅更改ip,将其写入influxdb,数据库如下所示:

我可以计算无NULL数据的ELAPSED时间吗?

> select * from "exec_wanip"
name: exec_wanip
time                host    value
----                ----    -----
1542951090000000000 monitor
1542951140000000000 monitor
1542951150000000000 monitor 118.114.187.199
1542951160000000000 monitor
1542951170000000000 monitor
1542951180000000000 monitor
1542951190000000000 monitor
1542951200000000000 monitor
1542951210000000000 monitor
1542951810000000000 monitor
1542952410000000000 monitor
1542953010000000000 monitor

我通过crontab记录了WAN ip,这是influxdb中的数据,并且ip地址是可变的。

我该如何计算每个IP地址的寿命?

> select * from exec_wanip
name: exec_wanip
time                host    value
----                ----    -----
1542856250000000000 monitor 118.114.187.208
1542856850000000000 monitor 118.114.187.208
1542857450000000000 monitor 118.114.187.208
1542858050000000000 monitor 118.114.187.208
1542858650000000000 monitor 118.114.187.208
1542859250000000000 monitor 118.114.187.208
1542859850000000000 monitor 118.114.187.208
1542860450000000000 monitor 118.114.187.208
1542861050000000000 monitor 118.114.187.208
1542861650000000000 monitor 118.114.187.208
1542862250000000000 monitor 118.114.187.208
1542862850000000000 monitor 118.114.187.208
1542863450000000000 monitor 118.114.187.208
1542864050000000000 monitor 118.114.187.208
1542864650000000000 monitor 118.114.187.208
1542865250000000000 monitor 118.114.187.208

1 个答案:

答案 0 :(得分:2)

您修改后的脚本仍未将ip设置为标记。
我的猜测是您实际上将空字符串存储为值-而不是NULL。 查询此数据:

  

从exec_wanip WHERE值中选择600个*计数(值)AS生存时间秒<>''

通常,对WHERE子句中的值进行过滤不利于InfluxDB性能。我建议更改cron脚本,以将具有这样的行协议行的数据放入您的数据库:

  

exec_wanip,host = monitor,ip = 118.114.187.208 value = 118.114.187.208   exec_wanip,主机=监视器,ip = 118.114.187.199值= 118.114.187.199   ...

使用curl POST或cli INSERT等效。

  

curl -XPOST“ http://localhost:8086/write?db=mydb”-数据二进制文件'exec_wanip,host = monitor,ip = 118.114.187.208 value = 118.114.187.208'

     

curl -XPOST“ http://localhost:8086/write?db=mydb” --data-binary'exec_wanip,host = monitor,ip = 118.114.187.199 value = 118.114.187.199'

完成此操作后,您将可以通过如下查询来计算ip寿命:

  

从exec_wanip GROUP BY ip中选择600 *计数(值)AS生存时间秒

添加WHERE子句以根据需要选择时间范围进行查询。 注意:此处可以使用任何值作为值,而不必是IP地址,例如“ up” /“ down”等。

相关问题