LINUX.ORG.RU

Подсчет памяти в LXC контейнере на Proxmox через Zabbix

 , , ,


0

1

Проблема такая. Дергаю через zabbix_get элемент данных с полным объёмом памяти в LXC контейнере на Proxmox и получаю в ответ объём ОЗУ на хосте:

zabbix_get -s 1.2.3.4 -p 10050 -k vm.memory.size[total] 16817287168

В то же время в самом контейнере память отображается правильно:

free -m
             total       used       free     shared    buffers     cached
Mem:          3048       2886        161        130          0       2855
-/+ buffers/cache:         31       3016
Swap:          512         58        453


cat /proc/meminfo 

MemTotal:        3121152 kB
MemFree:          165212 kB
MemAvailable:     165212 kB
Buffers:               0 kB
Cached:          2923976 kB
SwapCached:            0 kB
Active:          1533892 kB
Inactive:        1421804 kB
Active(anon):       2528 kB
Inactive(anon):    29580 kB
Active(file):    1531364 kB
Inactive(file):  1392224 kB
Unevictable:           0 kB
Mlocked:            3520 kB
SwapTotal:        524288 kB
SwapFree:         464312 kB
Dirty:               192 kB
Writeback:             0 kB
AnonPages:       1040420 kB
Mapped:           133368 kB
Shmem:            133868 kB
Slab:               0 kB
SReclaimable:          0 kB
SUnreclaim:            0 kB
KernelStack:        8608 kB
PageTables:        39736 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     8734824 kB
Committed_AS:    5306856 kB
VmallocTotal:   34359738367 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
CmaTotal:              0 kB
CmaFree:               0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      159296 kB
DirectMap2M:    16609280 kB

Версия zabbix-agent: 3.0.9 (jessie)
Версия zabbix-server: 3.2.6 (jessie)
Версия proxmox: pve-manager/4.4-13/7ea56165 (running kernel: 4.4.59-1-pve)

Как получить total memory в контейнере? И в общем, как лучше мониторить память через заббикс, чтобы получать вывод близкий к free -m? Я так понимаю, элемент vm.memory.size[available] не учитывает buffers память. Из документации: «available = inactive + cached + free память.» И часто результат, возвращаемый этим элементом отличается от free -m.



Последнее исправление: Stoner (всего исправлений: 1)

Ответ на: комментарий от anonymous

lxc-info -n 100

Name:           100
State:          RUNNING
PID:            5904
IP:             192.168.100.2
CPU use:        20559.97 seconds
BlkIO use:      404.00 KiB
Memory use:     295.94 MiB
KMem use:       0 bytes
Link:           veth100i0
 TX bytes:      2.50 GiB
 RX bytes:      115.42 GiB
 Total bytes:   117.92 GiB
[\code]

Вроде не то, не? 
И опять же, хочу тягать инфу через стандартные элементы заббикс. Можно, конечно, парсить /proc/meminfo или вывод free, но хотелось бы человеческого решения
Stoner
() автор топика
Ответ на: комментарий от vel

Спасибо, но я все же хотел бы мониторить это дело через zabbix-agent установленный в контейнере. Без вариантов? И судя по выводу, это значение учитывает page cache. Не вижу смысла его мониторить

cat /sys/fs/cgroup/memory/lxc/100/memory.usage_in_bytes
2953195520

pct enter 100

free -m
             total       used       free     shared    buffers     cached
Mem:          3048       2816        231        147          0       2772
-/+ buffers/cache:         44       3003
Swap:          512         54        457

Stoner
() автор топика

Отвечу сам себе про vm.memory.size[available], может кому пригодится. На странице оф документации устаревшая инфа. А вот здесь вполне доходчиво описано:

Элемент данных vm.memory.size[available] на Linux теперь читает MemAvailable (родная оценка системы) из /proc/meminfo на Linux ядрах 3.14 и выше. В зависимости от состояния системы (наподобие количества распределения slab) новое значение может значительно отличаться от старой версии и, таким образом, может вызвать триггеры изменить свои значения. До Zabbix 3.0 значением всегда была сумма свободной, буферизованной и кэшируемой памяти.

MemAvailable для LXC контейнеров почему-то равен MemFree на моей версии Proxmox. От того и разница в vm.memory.size[available] и free -m.

Stoner
() автор топика
29 ноября 2017 г.
Ответ на: комментарий от Stoner

параметр vm.memory.size[availablоe] в zabbix, это всегда было:

Available memory is defined as free+cached+buffers memory.

Похоже что проблема в том, что неправильно считается cached+buffers

У zabbix есть баг-репорт по этой проблеме https://support.zabbix.com/browse/ZBX-12164

kvaps
()
28 февраля 2018 г.

Стандартные заббикс метрики стягивают инфу хоста, а не контейнера. Эта проблема есть только в виртуализации под LXC.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.