首页 文章

如何计算ip地址的生命周期?

提问于
浏览
-1

现在我修改了crontab的shell,它每隔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 回答

  • 2

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

    SELECT 600 * count(value)AS Lifetime_seconds FROM exec_wanip WHERE value <>''

    对WHx子句中的值进行过滤通常不利于InfluxDB性能 . 我建议更改cron脚本,将带有这些行协议行的数据放入db:

    exec_wanip,host = monitor,ip = 118.114.187.208 value = 118.114.187.208 exec_wanip,host = monitor,ip = 118.114.187.199 value = 118.114.187.199 ...

    使用curl POST或cli INSERT等效 .

    curl -XPOST“http:// localhost:8086 / write?db = mydb”--data-binary'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生存时间:

    SELECT 600 * count(value)AS Lifetime_seconds FROM exec_wanip GROUP BY ip

    根据需要,使用时间范围选择添加WHERE子句进行查询 . 注意:任何东西都可以在这里用作值,不一定是ip地址,例如'up'/'down'等 .

相关问题