首页 > 解决方案 > 如何获取内存使用百分比

问题描述

我正在使用收集的内存插件每分钟从 Web 服务器获取指标Interval 60,并将它们远程存储到influxdb服务器version 1.5.1中。

这是我的系列:

> SHOW SERIES FROM memory_value WHERE host = 'webserver'

key
---
memory_value,host=webserver,type=memory,type_instance=buffered
memory_value,host=webserver,type=memory,type_instance=cached
memory_value,host=webserver,type=memory,type_instance=free
memory_value,host=webserver,type=memory,type_instance=slab_recl
memory_value,host=webserver,type=memory,type_instance=slab_unrecl
memory_value,host=webserver,type=memory,type_instance=used

这是一些价值观:

> SELECT * FROM memory_value WHERE host='webserver' AND time > now() -1m
name: memory_value
time                host      type   type_instance value
----                ----      ----   ------------- -----
1525704284702691476 webserver memory buffered      2138112
1525704284702691476 webserver memory cached        462839808
1525704284702691476 webserver memory free          1184563200
1525704284702691476 webserver memory slab_recl     45092864
1525704284702691476 webserver memory slab_unrecl   34017280
1525704284702691476 webserver memory used          199811072

要获得总内存,我需要求和free+ used,然后获得我需要做的百分比:

used * 100 / (free + used)

我可以free使用以下方法获取值:

> SELECT mean(value) FROM memory_value WHERE host='webserver' and "type_instance" = 'free' AND time > now() -1m
    name: memory_value
time                mean
----                ----
1525704816631763155 321410389.3333333

used

> SELECT mean(value) FROM memory_value WHERE host='webserver' and "type_instance" = 'used' AND time > now() -1m
name: memory_value
time                mean
----                ----
1525704846204790445 199811072

但想知道如何在同一个查询中获取值,以便我可以sum获取它们total available memory ,然后计算使用百分比。

我发现我可以使用以下方法对系列求和:

> SELECT SUM(value) FROM memory_value WHERE host='webserver' AND type_instance =~ /(free|used)/ AND time > NOW() -1m
name: memory_value
time                sum
----                ---
1525708703989094507 1384349696

但是,现在需要找到如何将所有内容放在一起以计算百分比。

标签: time-seriesmetricsinfluxdb

解决方案


推荐阅读