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