- 1 vm.memory.size parameters
- Parameters
- See also
- Русские Блоги
- Zabbix отслеживает использование памяти centos7 (запись мелкая, серый)
- Русские Блоги
- Настройте используемую память zabbix для более точного и доступного использования памяти
- Zabbix: Difference between «memory usage» and «memory utilization»
- 1 Answer 1
- Zabbix: Create custom process monitoring (CPU, MEM) with hysteresis
- 1. Create new Zabbix template
- 2. Add macros
- 3. Add items
- 4. Triggers with hysteresis
- 5. Configure host
1 vm.memory.size parameters
This section provides some parameter details for the vm.memory.size[ ] agent item.
Parameters
The following parameters are available for this item:
- active — memory currently in use or very recently used, and so it is in RAM
- anon — memory not associated with a file (cannot be re-read from it)
- available — available memory, calculated differently depending on the platform (see the table below)
- buffers — cache for things like file system metadata
- cached — cache for various things
- exec — executable code, typically from a (program) file
- file — cache for contents of recently accessed files
- free — memory that is readily available to any entity requesting memory
- inactive — memory that is marked as not used
- pavailable — ‘available’ memory as percentage of ‘total’ (calculated as available / total *100)
- pinned — same as ‘wired’
- pused — ‘used’ memory as percentage of ‘total’ (calculated as used / total *100)
- shared — memory that may be simultaneously accessed by multiple processes
- slab — total amount of memory used by the kernel to cache data structures for its own use
- total — total physical memory available
- used — used memory, calculated differently depending on the platform (see the table below)
- wired — memory that is marked to always stay in RAM. It is never moved to disk.
Some of these parameters are platform-specific and might not be available on your platform. See Zabbix agent items for details.
Platform-specific calculation of available and used:
Platform | «available» | «used» |
---|---|---|
AIX | free + cached | real memory in use |
FreeBSD | inactive + cached + free | active + wired + cached |
HP UX | free | total — free |
Linux | free + buffers + cached | total — free |
Linux 3.14+ (also backported to 3.10 on RHEL 7) | /proc/meminfo, see «MemAvailable» in Linux kernel documentation for details. Note that free + buffers + cached is no longer equal to ‘available’ due to not all the page cache can be freed and low watermark being used in calculation. | total — free |
NetBSD | inactive + execpages + file + free | total — free |
OpenBSD | inactive + free + cached | active + wired |
OSX | inactive + free | active + wired |
Solaris | free | total — free |
Win32 | free | total — free |
The sum of vm.memory.size[used] and vm.memory.size[available] does not necessarily equal total. For instance, on FreeBSD:
* Active, inactive, wired, cached memories are considered used, because they store some useful information.
* At the same time inactive, cached, free memories are considered available, because these kinds of memories can be given instantly to processes that request more memory.
So inactive memory is both used and available simultaneously. Because of this, the vm.memory.size[used] item is designed for informational purposes only, while vm.memory.size[available] is designed to be used in triggers.
See also
Русские Блоги
Zabbix отслеживает использование памяти centos7 (запись мелкая, серый)
Мониторинг памяти: мониторинг использования памяти
Тревога срабатывания: когда уровень использования превышает 95% Сообщение о тревоге
used : Память, используемая программой
free : Нераспределенная память
buff/cache : Системный кеш ( buff cache Блокировать кеш устройства) (page cache Файловый кеш )
[buff/cache Кэш можно освободить: /proc/sys/vm/drop_caches (По умолчанию 0 ) ]
echo 1 > /proc/sys/vm/drop_caches Очистить pagecache
echo 2 > /proc/sys/vm/drop_caches Чистая переработка slab Объекты в распределителе (включая кэш записей каталога и inode Кэш)
echo 3 > /proc/sys/vm/drop_caches Значит ясно pagecache с участием slab Кэшированные объекты в распределителе
available : Доступная память системы
available=free+buff/cache- Память, не подлежащая вторичной переработке (общая память, tmpfs 、 ramfs Подождите)
2 : Пользовательский шаблон
Имя Шаблона: Memory used percent
2.2 : Создание элементов мониторинга
Ключевое значение: vm.memory.size[usedpercent]
Тип информации: число (без положительного или отрицательного)
имя: Memory used percent too high
Пункты мониторинга: Memory used percent: Memory used percent
Особенности: avg()-Average value of a period T
Тест построителя выражений:
Максимальное значение: 100.0000
Пункты мониторинга: Memory used percent: Memory used percent
3 : Хост присоединяется к шаблону
Русские Блоги
Настройте используемую память zabbix для более точного и доступного использования памяти
[[email protected] ~]# free -m total used free shared buffers cached Mem: 995 785 209 0 6 92 -/+ buffers/cache: 686 308 Swap: 478 200 278
Доступная память: доступная память = свободная + буферы + кэшированные, т.е. 308 = 209 + 6 + 92
Используемая память: Used memory = used-buffers-cached, то есть 686 = 785-6-92
При использовании собственного шаблона Linux Template OS для zabbix для мониторинга сервера было обнаружено, что используемая память полностью заполнена. Это потому, что zabbix получает используемую память сервера через ключ vm.memory.size [used]. Но значение, полученное с помощью vm.memory.size [used] (используется 785, как показано ниже), также включает буферы и кэширование.
Буферы и кэширование также доступны серверу. Просто Linux сам использует как можно больше памяти и освобождает буферы и кешированное пространство только тогда, когда памяти недостаточно.
Доступная память, полученная с помощью vm.memory.size [available], довольно точна. Таким образом, мы изменим ключевое значение Используемой памяти, чтобы получить точное значение используемой памяти, вычтя доступную память из общей памяти.
конкретный:
1. Настроить | Шаблоны | Шаблон ОС Linux, выберите Элементы, щелкните Используемая память, чтобы ввести конфигурацию, как показано ниже, перед изменением.
2. Изменить тип и формулу
Тип выберите Расчетный # Тип расчета
Ввод формулы (last («vm.memory.size [total]») — last («vm.memory.size [available]»)), вычтите доступную память из общей памяти, чтобы получить точную используемую память.
Ввод формулы (100 * last («vm.memory.size [available]») / last («vm.memory.size [total]»)), разделите доступную память на общую память, чтобы получить коэффициент использования памяти.
спусковой крючок:
1. Configuration—>Templates—>Template OS Linux—>Triggers—>create trigger
Name: free mem less 10%
Expression:
Если состояние элементов или триггера не поддерживается, возможно, возникла проблема с выражением, и вам необходимо проверить и протестировать
Память меньше 10%. В настоящее время ресурсы памяти сервера фактически ограничены. Вы можете использовать этот триггер для запуска сценария для перезапуска служб, которые занимают больше памяти. Как правило, службы на сервере относительно фиксированы. Те, кто потребляет больше памяти, — это те , Вы можете выбрать несколько перезапусков (один экземпляр с осторожностью), и лучше всего контролировать службу, чтобы избежать сценария автоматического перезапуска службы, не запускающего службу.
Zabbix: Difference between «memory usage» and «memory utilization»
I recently started using Zabbix for monitoring, and there is a question I can’t figure out on my own. 🙂 Is «memory usage» kind of inverse function of the «memory utilization»? I have high percentage of the «utilization» and low count on the «usage». Thanks in advance.
1 Answer 1
Memory usage or utilization etc. are probably item names. You should look into the Template your are using and locate the corresponding key to understand the value.
For instance, in my Zabbix Server 4.4 the Template Module Linux memory by Zabbix agent template has a Memory utilization item with this key: vm.memory.size[pavailable]
pavailable — ‘available’ memory as percentage of ‘total’ (calculated as available/total*100)
Depending on the parameter key, you can extract various memory informations:
Parameters The following parameters are available for this item:
active — memory currently in use or very recently used, and so it is in RAM
anon — memory not associated with a file (cannot be re-read from it)
available — available memory, calculated differently depending on the platform (see the table below)
buffers — cache for things like file system metadata
cached — cache for various things
[cut]
See which one are you using and maybe try to implement additional items with these parameters to have a first hand experience.
Zabbix: Create custom process monitoring (CPU, MEM) with hysteresis
How to create universal Zabbix template to monitor custom Linux process defined by name.
1. Create new Zabbix template
Go to Configuration -> Templates -> Create template and add your template name, group and description.
2. Add macros
We want to monitor this three parameters:
- number of process, with alerting if it less than a certain value
- memory usage, with alerting on high usage
- cpu usage, with alerting on high load
So, let’s create default values for it. We can use macros as placeholders to be able re-define this values in host configuration.
In this example we created 6 macros:
=> 70 => 2000000000 => 1 => apache2 => 10 => 1000000000
Here you can see cpu max usage 70%, max memory limit 2G, minimum 1 process running and process name apache2 for example. But we should also define normal values for trigger hysteresis to avoid flapping state (see below). So we also defined as 10% and as 1G.
3. Add items
Now we need to add incoming data items. Go to Items menu under current template and click Create item button. Create 3 items:
You can use macros as placeholder of process name to be able to change it in host configuration. So add this 3 items with 3 Keys:
proc.num[] proc.cpu.util[] proc.mem[]
Be careful, some parameters have different value types. For example proc.num, proc.mem has Numeric (int), but proc.cpu.util has Numeric (float). You can check it in Key -> Select constructor or official Zabbix documentation.
4. Triggers with hysteresis
Now we need to create triggers. Let’s construct it. Go to template Triggers menu. You can use built-in Zabbix constructor by clicking Problem expression -> Add button, select item and function. For example last (most recent) T value. But it’s only one value. It can change every time. To detect hard status, when same value will repeat several times, it is better to use count function. You can get more information about functions on Zabbix official documentation.
So we want to create trigger problem expression which will be fired when memory usage will greater than 3 times in a row.
You can read this expression as: “count of last 3 values (#3) which greater (gt) than was >= 3 times”. This is means that last (most recent) 3 item values was greater then PROC_MEM_MAX 3 times in a row. So each of this three values was greater than the maximum. It is good solution to detect hard state of the problem.
But what about return to normal state? If we leave only one problem expression alone – we can get situation like this:
Every 5-10 minutes it’s flapping between greater and less than critical value! It get 3 overloaded values and fire a trigger, then it get 3 normal values and mark trigger as RESOLVED! What we shall do? We need to create hysteresis with normal value. Trigger will be in PROBLEM state till item value will decrease to $.
So click to OK event generation -> Recovery expression and add this expression:
You can read this expression like: count of last #3 item values which less or equivalent (le) than was >= 3 times.
Now you can add according expressions to other triggers (MEM and Number of process):
].count(#3,,gt)>>=3 ].count(#3,,le)>>=3 ].count(#3,,gt)>>=3 ].count(#3,,le)>>=3 ].count(#3,,lt)>>=3 ].count(#3,,ge)>>=3
5. Configure host
Now we can add this template into our host. Go to Configuration -> Hosts -> your server -> Templates. And add your brand new template into server. Then we need to add according macros.
For example we want to monitor node (node.js) process on server. Let’s look at one of my node server memory usage Graph.
In this Graph you can see that process require about 4Gb of RAM. It is normal usage (for my service). You can also see a flapping state around the red line. So in this example my hysteresis minimum should be less than red line, and maximum – greater than 4.20G, for example at 4,5G. Let’s set this values in host’s macros.
So, my trigger will fired PROBLEM state when node process will use greater than 4,5Gb RAM 3 times in a row. And return into normal state only when memory will return to less than 4Gb 3 times in a row.
All done! Congratulations! Now we can check our data in Monitoring -> Latest data menu.
You can also download ready to use template here : linux-process.zip