Как получить использование памяти в процентах - PullRequest
0 голосов
/ 07 мая 2018

Я использую собранный плагин памяти для получения метрик с веб-сервера каждую минуту Interval 60 и удаленного хранения их на influenxdb сервере 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

Но все же, теперь нужно найти, как собрать все воедино, чтобы вычислить процент.

...