Проверка-Копии-VM Zabbix agent-mnt

Шаблоны заббикс мониторинг связанный с файлами и директориями
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 914
Стаж: 5 лет 11 месяцев
Откуда: Вологодская область
Благодарил (а): 1 раз
Поблагодарили: 42 раза
Контактная информация:

Проверка-Копии-VM Zabbix agent-mnt

Сообщение Артём Мамзиков »

Пример шаблона проверки файлов копий Виртуальных машин, можно аналогично проверять любые файлы

Шаблон
Проверка-Копии-VM Zabbix agent-mnt.zip
Проверка-Копии-VM Zabbix agent-mnt.zip
(4.46 КБ) 0 скачиваний
Например возьмем такие данные:

через Zabbix agent проверка копий
Проверка локально: /mnt/Nas/Proxmox/dump/

Пускай виртуальные машины будут например с 101 по 106

VM101ВКС vzdump-qemu-101-2024_07_10-11_10_56.vma.lzo
VM102Тест vzdump-qemu-102-2024_07_16-12_58_06.vma.lzo
VM103Тикет vzdump-qemu-103-2024_07_10-10_41_06.vma.lzo
VM104cloud vzdump-qemu-104-2024_07_18-13_36_55.vma.lzo
VM105office vzdump-qemu-105-2024_07_15-12_30_15.vma.lzo
каждую неделю в среду в 7утра проверка до 7:10
VM106WEB vzdump-qemu-106-2024_08_14-01_00_03.vma.lzo

В макросе шаблона прописываем путь {$BAKVMDIR} /mnt/Nas/Proxmox/dump/

Группы элементов данных
Проверка копий VM

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

Запрос содержимого папки /mnt/Nas/Proxmox/dump/ Триггеры 7 system.run[ls -aF "{$BAKVMDIR}"|grep -avE "/|\.log"] 0 90d Zabbix агент Проверка копий VM Активировано

system.run[ls -aF "/mnt/Nas/Proxmox/dump/"|grep -av "/"]
Запросим содержимое папки, исключим файлы log
предобработкой выберем только свежие файлы для каждой виртуальной машины если их несколько
пример
vzdump-qemu-102-2024_07_10-11_10_56.vma.lzo*
vzdump-qemu-105-2024_08_07-01_00_03.vma.lzo*
vzdump-qemu-105-2024_08_08-01_00_02.vma.lzo*
Предобработка
Показать

Код: Выделить всё

// Разбиваем входные данные на строки
    var lines = value.split('\n');

    // Объект для хранения самой свежей копии каждой VM
    var latestCopies = {};
    
    // Проходим по каждой строке в массиве
    for (var i = 0; i < lines.length; i++) {
        // Очищаем строку от лишних пробелов
        var line = lines[i].trim();

        // Пропускаем пустые строки
        if (line === '') continue;

        // Разбиваем строку на части по символу "-"
        var parts = line.split('-');

        // VM ID находится на третьем месте (индекс 2)
        var vmId = parts[2];

        // Объединяем дату и время из частей строки для создания временной метки
        var timestamp = parts[3] + parts[4];

        // Если для текущей VM еще нет записи или текущая копия новее, обновляем запись
        if (!latestCopies[vmId] || latestCopies[vmId].timestamp < timestamp) {
            latestCopies[vmId] = { line: line, timestamp: timestamp };
        }
    }

    // Создаем массив для хранения финальных строк с самыми свежими копиями
    var result = [];

    // Проходим по объекту latestCopies и добавляем строки в результат
    for (var key in latestCopies) {
        result.push(latestCopies[key].line);
    }

    // Возвращаем результат, объединяя строки с переносами
    return result.join('\n');
Проверка-Копии-VM Zabbix agent-mnt Элементы данных
Проверка-Копии-VM Zabbix agent-mnt Элементы данных

Триггеры

Средняя Копия VM106WEB Отсутствует {check-VM-Backup:system.run[ls -aF "{$BAKVMDIR}"|grep -avE "/|\.log"].iregexp(vzdump-qemu-106)}=0 or {check-VM-Backup:system.run[ls -aF "{$BAKVMDIR}"|grep -avE "/|\.log"].nodata(25h)}=1 Активировано

Средняя Копия VM105office Отсутствует {$WEEK_DAY}=5 and ({check-VM-Backup:system.run[ls -aF "{$BAKVMDIR}"|grep -avE "/|\.log"].iregexp(vzdump-qemu-105-{$DATE_YYYY}_{$DATE_MM}_{$DATE_DD})}=0 or {check-VM-Backup:system.run[ls -aF "{$BAKVMDIR}"|grep -avE "/|\.log"].nodata(172h)}=1) Активировано

Средняя Копия VM105office Отсутствует {$WEEK_DAY}=3 and ({check-VM-Backup:system.run[ls -aF "{$BAKVMDIR}"|grep -avE "/|\.log"].iregexp(vzdump-qemu-105-{$DATE_YYYY}_{$DATE_MM}_{$DATE_DD})}=0 or {check-VM-Backup:system.run[ls -aF "{$BAKVMDIR}"|grep -avE "/|\.log"].nodata(172h)}=1) Активировано

Средняя Копия VM104cloud Отсутствует {check-VM-Backup:system.run[ls -aF "{$BAKVMDIR}"|grep -avE "/|\.log"].iregexp(vzdump-qemu-104)}=0 or {check-VM-Backup:system.run[ls -aF "{$BAKVMDIR}"|grep -avE "/|\.log"].nodata(25h)}=1 Активировано

Средняя Копия VM103Тикет Отсутствует {check-VM-Backup:system.run[ls -aF "{$BAKVMDIR}"|grep -avE "/|\.log"].iregexp(vzdump-qemu-103)}=0 or {check-VM-Backup:system.run[ls -aF "{$BAKVMDIR}"|grep -avE "/|\.log"].nodata(25h)}=1 Активировано

Средняя Копия VM102Тест Отсутствует {check-VM-Backup:system.run[ls -aF "{$BAKVMDIR}"|grep -avE "/|\.log"].iregexp(vzdump-qemu-102)}=0 or {check-VM-Backup:system.run[ls -aF "{$BAKVMDIR}"|grep -avE "/|\.log"].nodata(25h)}=1 Активировано

Средняя Копия VM101ВКС Отсутствует {check-VM-Backup:system.run[ls -aF "{$BAKVMDIR}"|grep -avE "/|\.log"].iregexp(vzdump-qemu-101)}=0 or {check-VM-Backup:system.run[ls -aF "{$BAKVMDIR}"|grep -avE "/|\.log"].nodata(25h)}=1 Активировано
Проверка-Копии-VM Zabbix agent-mnt Триггеры
Проверка-Копии-VM Zabbix agent-mnt Триггеры

Правила обнаружения
Запрос содержимого папки /mnt/Nas/Proxmox/dump/: Обнаружение копий VM Прототипы элементов данных 4 Прототипы триггеров 1 Прототипы графиков Прототипы узлов сети vm-discover Зависимый элемент данных Активировано

Запрос содержимого папки /mnt/Nas/Proxmox/dump/: Обнаружение копий VM Прототипы элементов данных 4 Прототипы триггеров 2 Прототипы графиков Прототипы узлов сети vm-discovery Зависимый элемент данных Активировано
Проверка-Копии-VM Zabbix agent-mnt Правила обнаружения
Проверка-Копии-VM Zabbix agent-mnt Правила обнаружения


Обнаружение копий VM
только 125 и 105 в фильтре обнаружения
Фильтры
{#VMFILES} совпадает (vzdump-qemu-125.*|vzdump-qemu-105.*)
Предобработка
Показать

Код: Выделить всё

    // Разбиваем входные данные на строки
    var lines = value.split('\n');

    // Массив для хранения объектов JSON
    var jsonArray = [];

    // Проходим по каждой строке в массиве
    for (var i = 0; i < lines.length; i++) {
        // Очищаем строку от лишних пробелов
        var line = lines[i].trim();

        // Пропускаем пустые строки
        if (line === '') continue;

        // Убираем символ '*' в конце строки, если он присутствует
        if (line.endsWith('*')) {
            line = line.slice(0, -1);
        }

        // Добавляем объект в массив JSON
        jsonArray.push({ "{#VMFILES}": line });
    }

    // Преобразуем массив в формат JSON и возвращаем
    return JSON.stringify(jsonArray, null, 4);
Прототипы элементов данных
Наличие файла {#VMFILES} vfs.file.exists["{$BAKVMDIR}{#VMFILES}"] 0 90d 90d Zabbix агент Проверка копий VM Да

Размер файла {#VMFILES} vfs.file.size["{$BAKVMDIR}{#VMFILES}"] 0 90d 90d Zabbix агент Проверка копий VM Да

Время изменения свойств файла {#VMFILES} vfs.file.time["{$BAKVMDIR}{#VMFILES}",change] 0 90d 90d Zabbix агент Проверка копий VM Да

Время изменения файла {#VMFILES} vfs.file.time["{$BAKVMDIR}{#VMFILES}",modify] 0 90d 90d Zabbix агент Проверка копий VM Да
Проверка-Копии-VM Zabbix agent-mnt Прототипы элементов
Проверка-Копии-VM Zabbix agent-mnt Прототипы элементов

Прототипы триггеров
Средняя Копия {#VMFILES} Отсутствует или старая ({$WEEK_DAY}=3 or {$WEEK_DAY}=5) and {$TIME_HH}>=08 and {$TIME_MM}>=10 and ({check-VM-Backup:vfs.file.exists["{$BAKVMDIR}{#VMFILES}"].last()}=0 or {check-VM-Backup:vfs.file.time["{$BAKVMDIR}{#VMFILES}",modify].fuzzytime(197h)}=0) Да
Проверка-Копии-VM Zabbix agent-mnt Прототипы триггеров
Проверка-Копии-VM Zabbix agent-mnt Прототипы триггеров

Обнаружение копий VM
исключены 125 и 105 в фильтре обнаружения
Фильтры
{#VMFILE} не соответствует (vzdump-qemu-125.*|vzdump-qemu-105.*)
Предобработка
Показать

Код: Выделить всё

    // Разбиваем входные данные на строки
    var lines = value.split('\n');

    // Массив для хранения объектов JSON
    var jsonArray = [];

    // Проходим по каждой строке в массиве
    for (var i = 0; i < lines.length; i++) {
        // Очищаем строку от лишних пробелов
        var line = lines[i].trim();

        // Пропускаем пустые строки
        if (line === '') continue;

        // Убираем символ '*' в конце строки, если он присутствует
        if (line.endsWith('*')) {
            line = line.slice(0, -1);
        }

        // Добавляем объект в массив JSON
        jsonArray.push({ "{#VMFILE}": line });
    }

    // Преобразуем массив в формат JSON и возвращаем
    return JSON.stringify(jsonArray, null, 4);

Прототипы элементов данных
Наличие файла {#VMFILE} vfs.file.exists["{$BAKVMDIR}{#VMFILE}"] 0 90d 90d Zabbix агент Проверка копий VM Да

Размер файла {#VMFILE} vfs.file.size["{$BAKVMDIR}{#VMFILE}"] 0 90d 90d Zabbix агент Проверка копий VM Да

Время изменения свойств файла {#VMFILE} vfs.file.time["{$BAKVMDIR}{#VMFILE}",change] 0 90d 90d Zabbix агент Проверка копий VM Да

Время изменения файла {#VMFILE} vfs.file.time["{$BAKVMDIR}{#VMFILE}",modify] 0 90d 90d Zabbix агент Проверка копий VM Да
Проверка-Копии-VM Zabbix agent-mnt Прототипы элементов2
Проверка-Копии-VM Zabbix agent-mnt Прототипы элементов2

Прототипы триггеров
Средняя Копия {#VMFILE} Отсутствует {check-VM-Backup:vfs.file.exists["{$BAKVMDIR}{#VMFILE}"].max(27h)}=0 Да

Информационная Старая копия {#VMFILE} {check-VM-Backup:vfs.file.time["{$BAKVMDIR}{#VMFILE}",modify].fuzzytime(92d)}=0 Да
Проверка-Копии-VM Zabbix agent-mnt Прототипы триггеров2
Проверка-Копии-VM Zabbix agent-mnt Прототипы триггеров2
количество слов: 792

Вернуться в «Файлы и Папки»