1. Обнаружение примонтированных файловых систем

Обзор

Существует возможность обнаружения примонтированных файловых систем и их свойств:

  • имя точки монтирования
  • тип файловой системы
  • размер файловой системы
  • статистика по файловам дескрипторам — inode
  • опции монтирования

Чтобы это сделать, можно использовать комбинацию из:

  • элемента данных агента vfs.fs.get в качестве основного элемента данных
  • зависимых от него элемента данных для правила низкоуровневого обнаружения и прототипов элементов данных

Настройка

Основной элемент данных

Создайте элемент данных агента Zabbix, используя следующий ключ:

vfs.fs.get

Задайте тип информации как «Текст (Text)», чтобы иметь возможность обрабатывать большие данные в формате JSON.

Данные, возвращаемые этим элементом данных, будут содержать для примонтированных файловых систем что-то наподобие следующего:

[
         {
           "fsname": "/",
           "fstype": "ext4",
           "bytes": {
             "total": 249405239296,
             "free": 24069537792,
             "used": 212595294208,
             "pfree": 10.170306,
             "pused": 89.829694
           },
           "inodes": {
             "total": 15532032,
             "free": 12656665,
             "used": 2875367,
             "pfree": 81.487503,
             "pused": 18.512497
           },
           "options": "rw,noatime,errors=remount-ro"
         }
       ]
Зависимое правило LLD

Создайте правило низкоуровневого обнаружения с типом «Зависимый элемент данных (Dependent item)»:

В качестве основного элемента данных выберите элемент данных vfs.fs.get, созданный ранее.

На вкладке «LLD Макросы (LLD macros)» определите настраиваемые макросы с соответствующими путями JSONPath:

На вкладке «Фильтры (Filters)» можно добавить регулярное выражение, которое отфильтрует лишь файловые системы, доступные на чтение/запись (read-write):

Прототип зависимого элемента данных

Создайте в этом правиле LLD прототип элемента данных с типом «Зависимый элемент данных (Dependent item)». В качестве основного элемента данных для этого прототипа выберите созданный ранее элемент данных vfs.fs.get.

Обратите внимание на использование настраиваемых макросов в имени и ключе прототипа элемента данных:

  • Имя (Name): Free disk space on {#FSNAME}, type: {#FSTYPE}
  • Ключ (Key): Free[{#FSNAME}]

В качестве типа информации используйте:

  • Числовой (целое положительное) для метрик наподобие «free», «total», «used»
  • Числовой (с плавающей точной) для метрик наподобие «pfree», «pused» (проценты)

На вкладке «Предобработка (Preprocessing)» прототипа элемента данных выберите JSONPath и используйте следующее выражение JSONPath как параметр:

$.[?(@.fsname=='{#FSNAME}')].bytes.free.first()

При запуске обнаружения будет создано по одному элементу данных на каждую точку монтирования. Этот элемент данных вернёт для данной точки монтирования количество свободных байтов.