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

Обзор

Можно обнаруживать смонтированные файловые системы и их свойства:

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

Для этого можно использовать сочетание следующих элементов:

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

Статистика файловой системы возвращается только в том случае, если пользователь агента Zabbix имеет право на проход (traverse) по каждому каталогу в пути к точке монтирования; в противном случае затронутая файловая система не включается в вывод 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

Создайте правило обнаружения на низком уровне типа Зависимый элемент данных:

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

На вкладке LLD macros задайте пользовательские макросы с соответствующим JSONPath:

На вкладке Filters можно добавить регулярное выражение, которое отфильтрует только файловые системы с чтением и записью:

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

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

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

  • Name: Free disk space on {#FSNAME}, type: {#FSTYPE}
  • Key: Free[{#FSNAME}]

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

  • Numeric (unsigned) для метрик вроде 'free', 'total', 'used'
  • Numeric (float) для метрик вроде 'pfree', 'pused' (percentage)

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

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

Когда обнаружение начнется, для каждой точки монтирования будет создан один элемент данных. Этот элемент данных будет возвращать количество свободных байтов для указанной точки монтирования.