Ad Widget

Collapse

Как в zabbix получить цифру used из free -m ?

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Daikazahn
    Member
    • Nov 2016
    • 69

    #1

    Как в zabbix получить цифру used из free -m ?

    Добрый день!
    Как в zabbix получить цифру used из free -m ?

    Например:
    free -m
    total used free shared buff/cache available
    Mem: 5966 431 2191 25 3343 5182
    Swap: 0 0 0

    Я попробовал использовать функцию
    last("vm.memory.size[used]")-last("vm.memory.size[buffers]")-last("vm.memory.size[cached]")
    но она показывает не те цифры
    Attached Files
  • DmitryL
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • May 2016
    • 278

    #2
    Used memory (calculated as total - free - buffers - cache)

    Comment

    • Daikazahn
      Member
      • Nov 2016
      • 69

      #3
      Сделал, но результат не как в free -m
      Кто-нибудь вычислял значение used из free -m?


      free -m
      total used free shared buff/cache available
      Mem: 5966 432 2032 25 3501 5182
      Swap: 0 0 0

      last("vm.memory.size[total]")-last("vm.memory.size[free]")-last("vm.memory.size[buffers]")-last("vm.memory.size[cached]")
      Attached Files
      Last edited by Daikazahn; 21-08-2018, 16:45.

      Comment


      • Kos
        Kos commented
        Editing a comment
        Извините, что прокомментирую немного не по теме.
        Daikazahn, форум позволяет форматировать свои сообщения. В частности, при редактировании можно нажать кнопочку "жирная подчёркнутая A" справа вверху (чуть выше того поля, где пишете своё сообщение), это включает/выключает тулбар - панель инструментов для редактирования. А далее текст, который нужно отображать моноширинным шритом, можно выделить, а затем нажать в этом тулбаре кнопочку "#" (решётка), это вставит тэг "CODE". Тогда Ваши примеры команд станут более читабельными - не нужно гадать, какие цифры какому заголовку в выводе команды соответствуют.
    • Kos
      Senior Member
      Zabbix Certified SpecialistZabbix Certified Professional
      • Aug 2015
      • 3404

      #4
      Наверное, надо почитать "man free" в вашей конкретной системе, и сопоставить это с тем, как вычисляет значения агент Zabbix.
      Например, у меня (SLES12sp3) команда "free -m" показывает такие значения:
      Code:
                   total       used       free     shared    buffers     cached
      Mem:         63898      62946        952      15331        113      60472
      -/+ buffers/cache:       2361      61537
      Swap:         2054       1127        927
      При этом "man free" пишет, в частности, что графа "used" - это:
      Used memory (calculated as total - free)
      Легко видеть, что это и вправду так (62946 = 63898 - 952).
      И это примерно соответствует тому, что отдаёт агент метрикой "vm.memory.size[used]" (с точностью до перевода байт в мегабайты).

      Однако, в вашем случае, очевидно, команда free cчитает по какому-то другому алгоритму. И мы тут можем только гадать, по какому именно.

      Comment

      • Daikazahn
        Member
        • Nov 2016
        • 69

        #5
        Спасибо. Лучше бы эта панель была бы по умолчанию.
        Предлагаю взять другой сервер с большим количеством памяти.
        Там установлен tarantool
        сервер
        CentOS Linux release 7.4.1708 (Core)

        Code:
        free -m
                      total      used     free     shared    buff/cache   available
        Mem:          16046      629      6395       837        9021        14214
        Swap:           0         0         0
        Code:
        python ps_mem.py
         Private  +   Shared  =  RAM used    Program
        
        ---------------------------------
                                549.6 MiB
        Почему то used далеко не совпадает с "used Used memory (calculated as total - free - buffers - cache)"

        Вот выдержка из man free

        Code:
        DESCRIPTION
               free  displays the total amount of free and used physical and swap memory in the system, as well as the buffers and caches used by the
               kernel. The information is gathered by parsing /proc/meminfo. The displayed columns are:
        
               total  Total installed memory (MemTotal and SwapTotal in /proc/meminfo)
        
               used   Used memory (calculated as total - free - buffers - cache)
        
               free   Unused memory (MemFree and SwapFree in /proc/meminfo)
        
               shared Memory used (mostly) by tmpfs (Shmem in /proc/meminfo, available on kernels 2.6.32, displayed as zero if not available)
        
               buffers
                      Memory used by kernel buffers (Buffers in /proc/meminfo)
        
               cache  Memory used by the page cache and slabs (Cached and Slab in /proc/meminfo)
        
               buff/cache
                      Sum of buffers and cache
        
               available
                      Estimation of how much memory is available for starting new applications, without swapping. Unlike the  data  provided  by  the
                      cache or free fields, this field takes into account page cache and also that not all reclaimable memory slabs will be reclaimed
                      due to items being in use (MemAvailable in /proc/meminfo, available on kernels 3.14, emulated on kernels 2.6.27+, otherwise the
                      same as free)
        Attached Files
        Last edited by Daikazahn; 22-08-2018, 05:32.

        Comment

        • Kos
          Senior Member
          Zabbix Certified SpecialistZabbix Certified Professional
          • Aug 2015
          • 3404

          #6
          Ну вот, стало немного понятнее. По крайней мере, видно, что Total и Free команда free и Zabbix-агент отображают одинаково, разница в Used образуется за счёт учёта/неучёта суммы (Buffers + Cache), а при этом сама эта сумма оказывается различной: команда free показывает около 9 GB, а агент Zabbix отображает их по отдельности, но в сумме получается меньше двух GB.

          Если глянуть в исходниках на то, как Zabbix-ом вычисляются соответствующие метрики в Linux-е (файл src/libs/zbxsysinfo/linux/memory.c), то можно увидеть, что для Cached учитывается только значение строки "Cached:" из файла /proc/meminfo (в то время как free, судя по процитированному man-у, ещё и добавляет значение для "Slab:"). Большинство остальных значений, включая Buffers, честно забираются при помощи системного вызова sysinfo() - полагаю, что они наверняка совпадают с теми значениями, которые отдаются через /proc/meminfo.

          Таким образом, для получения тех значений, которые Вы хотите, нужно найти способ забирать из /proc/meminfo значение параметра "Slab:", и вычитать его из результата (Total - Free - Buffers - Cache).
          В качестве способа можно, например, использовать метрику:
          Code:
          vfs.file.regexp[/proc/meminfo,"^Slab: *([0-9]+)",,,,\1]
          только нужно домножать её на размер представляемых единиц измерения, чтобы приводить к байтам (у меня, скажем, /proc/meminfo отображает в килобайтах, так что надо домножать на 1024).

          Comment

          • Daikazahn
            Member
            • Nov 2016
            • 69

            #7
            Спасибо. Буду тестировать

            Comment

            • Victor Vislobokov
              Senior Member
              • Aug 2018
              • 298

              #8
              Я посмотрел на ту информацию, которую предоставляет Zabbix о памяти и понял, что на Linux'е надо писать свой шаблон, а информацию брать напрямую из /proc/meminfo. Там куда больше информации.

              Comment

              Working...