Expand Russian setup documentation
This commit is contained in:
435
README.md
435
README.md
@@ -1,142 +1,426 @@
|
|||||||
# Veeam Backup Jobs for Zabbix
|
# Мониторинг Veeam Backup Jobs в Zabbix 7.0
|
||||||
|
|
||||||
This repository contains PowerShell scripts for Veeam Backup & Replication:
|
Репозиторий содержит готовый сборщик состояния заданий Veeam Backup & Replication
|
||||||
|
и шаблон Zabbix 7.0.
|
||||||
|
|
||||||
- `Monitor-VeeamJobs.ps1` collects job metrics for Zabbix.
|
## Что входит в проект
|
||||||
- `NotifyOfDisabledJobs.ps1` sends an email when disabled jobs are detected.
|
|
||||||
- `zabbix-templete-veeam-jobs.xml` imports the Zabbix 7.0 template.
|
|
||||||
|
|
||||||
## Zabbix collector output
|
| Файл | Назначение |
|
||||||
|
| --- | --- |
|
||||||
|
| `Monitor-VeeamJobs.ps1` | Основной скрипт для Zabbix. Собирает задания Veeam и отдает JSON. |
|
||||||
|
| `zabbix-templete-veeam-jobs.xml` | Шаблон Zabbix 7.0 с item-ами, discovery и триггерами. |
|
||||||
|
| `NotifyOfDisabledJobs.ps1` | Старый отдельный скрипт email-уведомлений о выключенных заданиях. Для Zabbix не нужен. |
|
||||||
|
|
||||||
`Monitor-VeeamJobs.ps1` prints one compressed JSON object by default:
|
Для мониторинга через Zabbix нужен именно:
|
||||||
|
|
||||||
|
```text
|
||||||
|
Monitor-VeeamJobs.ps1
|
||||||
|
```
|
||||||
|
|
||||||
|
## Что собирается
|
||||||
|
|
||||||
|
Скрипт собирает:
|
||||||
|
|
||||||
|
- общее количество заданий Veeam;
|
||||||
|
- количество выключенных заданий, с учетом файла исключений;
|
||||||
|
- количество успешно выполненных заданий;
|
||||||
|
- количество заданий с ошибкой;
|
||||||
|
- количество заданий с предупреждением;
|
||||||
|
- имена выключенных заданий;
|
||||||
|
- имена выключенных заданий, попавших в исключения;
|
||||||
|
- имена заданий с ошибками;
|
||||||
|
- имена заданий с предупреждениями;
|
||||||
|
- таблицу всех заданий;
|
||||||
|
- краткую сводку всех заданий для dashboard;
|
||||||
|
- discovered items по каждому заданию.
|
||||||
|
|
||||||
|
По каждому заданию собирается:
|
||||||
|
|
||||||
|
- имя;
|
||||||
|
- включено расписание или нет;
|
||||||
|
- время последнего запуска;
|
||||||
|
- время следующего запуска, если Veeam его отдает;
|
||||||
|
- последний результат;
|
||||||
|
- состояние последней сессии;
|
||||||
|
- количество restore points, если Veeam позволяет сопоставить job и backup.
|
||||||
|
|
||||||
|
Подсчет restore points работает по принципу best effort. Скрипт использует
|
||||||
|
`Get-VBRBackup` и `Get-VBRRestorePoint`. Если для конкретного типа задания Veeam
|
||||||
|
не позволяет надежно сопоставить backup с job, задание все равно будет показано,
|
||||||
|
а restore points будут отображены как `-`.
|
||||||
|
|
||||||
|
## Установка на Veeam-сервер
|
||||||
|
|
||||||
|
Создай папку для скриптов Zabbix Agent 2, если ее еще нет:
|
||||||
|
|
||||||
|
```text
|
||||||
|
C:\Program Files\Zabbix Agent 2\scripts
|
||||||
|
```
|
||||||
|
|
||||||
|
Скопируй туда файл:
|
||||||
|
|
||||||
|
```text
|
||||||
|
C:\Program Files\Zabbix Agent 2\scripts\Monitor-VeeamJobs.ps1
|
||||||
|
```
|
||||||
|
|
||||||
|
Проверь ручной запуск на Veeam-сервере:
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "C:\Program Files\Zabbix Agent 2\scripts\Monitor-VeeamJobs.ps1"
|
||||||
|
```
|
||||||
|
|
||||||
|
В ответ должен прийти JSON, примерно такой:
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"total": 10,
|
"total": 49,
|
||||||
"disabled": 1,
|
"disabled": 0,
|
||||||
"successful": 7,
|
"successful": 45,
|
||||||
"error": 1,
|
"error": 1,
|
||||||
"warning": 1,
|
"warning": 3,
|
||||||
"disabled_names": "Disabled job",
|
"disabled_names": "-",
|
||||||
"disabled_excluded_names": "Policy disabled by design",
|
"disabled_excluded_names": "D_Migratio_DRP",
|
||||||
"error_names": "Failed job",
|
"error_names": "Failed job",
|
||||||
"warning_names": "Warning job",
|
"warning_names": "Warning job",
|
||||||
"jobs_table": "Name | Enabled | Last run | Next run | Result | Restore points\n...",
|
"jobs_table": "Name | Enabled | Last run | Next run | Result | Restore points\n...",
|
||||||
"jobs_summary": "Job | Enabled | Last run | Next run | Result | Restore points\nDaily backup | yes | 2026-07-16 01:00:00 | 2026-07-17 01:00:00 | Success | 14",
|
"jobs_summary": "Job | Enabled | Last run | Next run | Result | Restore points\n...",
|
||||||
"jobs_lld": {
|
"jobs_lld": {
|
||||||
"data": [
|
"data": [
|
||||||
{
|
{
|
||||||
"{#VEEAMJOBKEY}": "RGFpbHkgYmFja3Vw",
|
"{#VEEAMJOBKEY}": "dm5hbXp0cjAwNA",
|
||||||
"{#VEEAMJOBNAME}": "Daily backup"
|
"{#VEEAMJOBNAME}": "vnamztr004"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"jobs": [
|
"jobs": [
|
||||||
{
|
{
|
||||||
"key": "RGFpbHkgYmFja3Vw",
|
"key": "dm5hbXp0cjAwNA",
|
||||||
"name": "Daily backup",
|
"name": "vnamztr004",
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"enabled_numeric": 1,
|
"enabled_numeric": 1,
|
||||||
"enabled_text": "yes",
|
"enabled_text": "yes",
|
||||||
"last_run": "2026-07-16 01:00:00",
|
"last_run": "2026-07-16 01:00:00",
|
||||||
"next_run": "2026-07-17 01:00:00",
|
"next_run": "-",
|
||||||
"last_result": "Success",
|
"last_result": "Success",
|
||||||
"last_state": "Stopped",
|
"last_state": "Stopped",
|
||||||
"result": "Success",
|
"result": "Success",
|
||||||
"restore_points": 14,
|
"restore_points": 19,
|
||||||
"restore_points_text": "14",
|
"restore_points_text": "19",
|
||||||
"summary": "Enabled: yes | Last: 2026-07-16 01:00:00 | Next: 2026-07-17 01:00:00 | Result: Success | Restore points: 14"
|
"summary": "Enabled: yes | Last: 2026-07-16 01:00:00 | Next: - | Result: Success | Restore points: 19"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
Restore point counting is best effort. The script uses `Get-VBRBackup` and
|
## Настройка Zabbix Agent 2
|
||||||
`Get-VBRRestorePoint` when both cmdlets are available; if Veeam cannot map a job
|
|
||||||
to backups in the current environment, the job remains visible and its restore
|
|
||||||
point count is shown as `-`.
|
|
||||||
|
|
||||||
## Discovered per-job items
|
В файл конфигурации агента:
|
||||||
|
|
||||||
The template uses a dependent low-level discovery rule:
|
|
||||||
|
|
||||||
```text
|
```text
|
||||||
veeam.jobs.discovery
|
C:\Program Files\Zabbix Agent 2\zabbix_agent2.conf
|
||||||
```
|
```
|
||||||
|
|
||||||
It creates one set of discovered items per Veeam job:
|
добавь строку:
|
||||||
|
|
||||||
|
```ini
|
||||||
|
UserParameter=veeam.scripts.monitor,powershell.exe -NoProfile -ExecutionPolicy Bypass -File "C:\Program Files\Zabbix Agent 2\scripts\Monitor-VeeamJobs.ps1"
|
||||||
|
```
|
||||||
|
|
||||||
|
Для Veeam-сервера обычно нужно увеличить timeout, потому что сбор restore points
|
||||||
|
и последних сессий может занимать больше стандартных 3 секунд:
|
||||||
|
|
||||||
|
```ini
|
||||||
|
Timeout=30
|
||||||
|
```
|
||||||
|
|
||||||
|
Перезапусти агент:
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
Restart-Service "Zabbix Agent 2"
|
||||||
|
```
|
||||||
|
|
||||||
|
Проверь выполнение через агент:
|
||||||
|
|
||||||
|
```cmd
|
||||||
|
"C:\Program Files\Zabbix Agent 2\zabbix_agent2.exe" -t veeam.scripts.monitor
|
||||||
|
```
|
||||||
|
|
||||||
|
Если команда возвращает JSON, агент настроен правильно.
|
||||||
|
|
||||||
|
## Импорт шаблона в Zabbix
|
||||||
|
|
||||||
|
В Zabbix открой:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
veeam.job.enabled[{#VEEAMJOBKEY}]
|
Data collection -> Templates -> Import
|
||||||
veeam.job.last_run[{#VEEAMJOBKEY}]
|
|
||||||
veeam.job.next_run[{#VEEAMJOBKEY}]
|
|
||||||
veeam.job.result[{#VEEAMJOBKEY}]
|
|
||||||
veeam.job.restore_points[{#VEEAMJOBKEY}]
|
|
||||||
veeam.job.summary[{#VEEAMJOBKEY}]
|
|
||||||
```
|
```
|
||||||
|
|
||||||
`{#VEEAMJOBNAME}` is stored as a tag named `veeam_job`, so Zabbix views and
|
Импортируй файл:
|
||||||
dashboard widgets can group or filter the discovered items by job name. The
|
|
||||||
legacy `veeam.jobs.table` item remains available as a quick text overview, but
|
|
||||||
the discovered items are the preferred way to build a dashboard.
|
|
||||||
|
|
||||||
If dashboard widgets cannot render discovered items as a table, use this single
|
```text
|
||||||
aggregate item instead:
|
zabbix-templete-veeam-jobs.xml
|
||||||
|
```
|
||||||
|
|
||||||
|
При повторном импорте включи обновление существующих объектов, чтобы обновились
|
||||||
|
items, triggers и discovery rule.
|
||||||
|
|
||||||
|
После импорта привяжи шаблон:
|
||||||
|
|
||||||
|
```text
|
||||||
|
Veeam Backup Jobs
|
||||||
|
```
|
||||||
|
|
||||||
|
к host, на котором установлен Zabbix Agent 2 и лежит `Monitor-VeeamJobs.ps1`.
|
||||||
|
|
||||||
|
## Основные items
|
||||||
|
|
||||||
|
| Item | Key | Описание |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| Veeam: Monitor | `veeam.scripts.monitor` | Master item. Сырой JSON от скрипта. |
|
||||||
|
| Veeam: Total jobs | `veeam.jobs.total` | Всего заданий Veeam. |
|
||||||
|
| Veeam: Successful jobs | `veeam.jobs.successful` | Задания, последняя сессия которых завершилась успешно. |
|
||||||
|
| Veeam: Disabled jobs | `veeam.jobs.disabled` | Выключенные задания после применения исключений. |
|
||||||
|
| Veeam: Error jobs | `veeam.jobs.error` | Задания с последним результатом `Failed`. |
|
||||||
|
| Veeam: Warning jobs | `veeam.jobs.warning` | Задания с последним результатом `Warning`. |
|
||||||
|
| Veeam: Disabled job names | `veeam.jobs.disabled.names` | Имена выключенных заданий после исключений. |
|
||||||
|
| Veeam: Excluded disabled job names | `veeam.jobs.disabled.excluded.names` | Выключенные задания, которые попали в исключения. |
|
||||||
|
| Veeam: Error job names | `veeam.jobs.error.names` | Имена заданий с ошибками. |
|
||||||
|
| Veeam: Warning job names | `veeam.jobs.warning.names` | Имена заданий с предупреждениями. |
|
||||||
|
| Veeam: Job details table | `veeam.jobs.table` | Текстовая таблица всех заданий. |
|
||||||
|
| Veeam: Jobs summary | `veeam.jobs.summary` | Многострочная сводка всех заданий для dashboard. |
|
||||||
|
|
||||||
|
## Discovered items по каждому заданию
|
||||||
|
|
||||||
|
Шаблон содержит low-level discovery rule:
|
||||||
|
|
||||||
|
```text
|
||||||
|
Veeam: Job discovery
|
||||||
|
key: veeam.jobs.discovery
|
||||||
|
```
|
||||||
|
|
||||||
|
Она создает items по каждому найденному заданию:
|
||||||
|
|
||||||
|
| Prototype | Key |
|
||||||
|
| --- | --- |
|
||||||
|
| Veeam job `[JOB_NAME]`: Enabled | `veeam.job.enabled[{#VEEAMJOBKEY}]` |
|
||||||
|
| Veeam job `[JOB_NAME]`: Last run | `veeam.job.last_run[{#VEEAMJOBKEY}]` |
|
||||||
|
| Veeam job `[JOB_NAME]`: Next run | `veeam.job.next_run[{#VEEAMJOBKEY}]` |
|
||||||
|
| Veeam job `[JOB_NAME]`: Result | `veeam.job.result[{#VEEAMJOBKEY}]` |
|
||||||
|
| Veeam job `[JOB_NAME]`: Restore points | `veeam.job.restore_points[{#VEEAMJOBKEY}]` |
|
||||||
|
| Veeam job `[JOB_NAME]`: Summary | `veeam.job.summary[{#VEEAMJOBKEY}]` |
|
||||||
|
|
||||||
|
`{#VEEAMJOBKEY}` - это безопасный ключ, сформированный из имени задания. Он нужен,
|
||||||
|
чтобы в item key не ломались пробелы, слеши и спецсимволы.
|
||||||
|
|
||||||
|
`{#VEEAMJOBNAME}` сохраняется в имени item-а и в теге:
|
||||||
|
|
||||||
|
```text
|
||||||
|
veeam_job
|
||||||
|
```
|
||||||
|
|
||||||
|
## Исключения для выключенных заданий
|
||||||
|
|
||||||
|
Если часть заданий специально выключена, их можно исключить из счетчика
|
||||||
|
`veeam.jobs.disabled`.
|
||||||
|
|
||||||
|
По умолчанию скрипт ищет файл:
|
||||||
|
|
||||||
|
```text
|
||||||
|
C:\Program Files\Zabbix Agent 2\scripts\NotifyOfDisabledJobs_EXCLUSIONS.IN
|
||||||
|
```
|
||||||
|
|
||||||
|
Формат файла простой: одна строка - один фрагмент имени задания.
|
||||||
|
|
||||||
|
Пример:
|
||||||
|
|
||||||
|
```text
|
||||||
|
D_Migratio_DRP
|
||||||
|
Test policy
|
||||||
|
Archive
|
||||||
|
```
|
||||||
|
|
||||||
|
Если имя выключенного задания содержит один из этих фрагментов, оно попадет в:
|
||||||
|
|
||||||
|
```text
|
||||||
|
veeam.jobs.disabled.excluded.names
|
||||||
|
```
|
||||||
|
|
||||||
|
и не будет учитываться в:
|
||||||
|
|
||||||
|
```text
|
||||||
|
veeam.jobs.disabled
|
||||||
|
veeam.jobs.disabled.names
|
||||||
|
```
|
||||||
|
|
||||||
|
## Триггеры
|
||||||
|
|
||||||
|
В шаблоне есть триггеры:
|
||||||
|
|
||||||
|
| Триггер | Условие | Severity |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| Disabled Veeam jobs detected | `veeam.jobs.disabled > 0` и есть имена выключенных заданий | High |
|
||||||
|
| More than 5 Veeam jobs in error state | `veeam.jobs.error > 5` и есть имена заданий с ошибкой | High |
|
||||||
|
| Veeam jobs in warning state | `veeam.jobs.warning > 0` и есть имена заданий с warning | Warning |
|
||||||
|
|
||||||
|
Логика `disabled.excluded.names` оставлена специально: она нужна для окружений,
|
||||||
|
где есть много намеренно выключенных политик.
|
||||||
|
|
||||||
|
## Dashboard в Zabbix 7.0
|
||||||
|
|
||||||
|
Самый надежный вариант для dashboard - использовать агрегированные items.
|
||||||
|
|
||||||
|
Рекомендуемая структура:
|
||||||
|
|
||||||
|
| Зона | Виджет | Item |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| Верхняя строка | Item value | `veeam.jobs.total` |
|
||||||
|
| Верхняя строка | Item value | `veeam.jobs.successful` |
|
||||||
|
| Верхняя строка | Item value | `veeam.jobs.disabled` |
|
||||||
|
| Верхняя строка | Item value | `veeam.jobs.error` |
|
||||||
|
| Верхняя строка | Item value | `veeam.jobs.warning` |
|
||||||
|
| Центр | Item value или Item history | `veeam.jobs.summary` |
|
||||||
|
| Низ | Item value или Item history | `veeam.jobs.error.names` |
|
||||||
|
| Низ | Item value или Item history | `veeam.jobs.warning.names` |
|
||||||
|
| Низ | Item value или Item history | `veeam.jobs.disabled.names` |
|
||||||
|
|
||||||
|
Для просмотра всех заданий одной строкой на задание используй:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
Veeam: Jobs summary
|
Veeam: Jobs summary
|
||||||
veeam.jobs.summary
|
veeam.jobs.summary
|
||||||
```
|
```
|
||||||
|
|
||||||
It contains all jobs in one multiline value and is the most compatible dashboard
|
Пример значения:
|
||||||
option for Zabbix 7.0.
|
|
||||||
|
|
||||||
For a compact dashboard list, use the discovered summary item:
|
|
||||||
|
|
||||||
```text
|
```text
|
||||||
Veeam job [JOB_NAME]: Summary
|
Job | Enabled | Last run | Next run | Result | Restore points
|
||||||
|
vnamztr004 | yes | 2026-07-16 01:00:00 | - | Success | 19
|
||||||
|
D_Migratio_DRP | no | - | - | - | -
|
||||||
```
|
```
|
||||||
|
|
||||||
It displays one line per job:
|
Discovered items тоже остаются доступными и удобны для `Latest data`, но для
|
||||||
|
dashboard в Zabbix 7.0 проще и стабильнее использовать `veeam.jobs.summary`.
|
||||||
|
|
||||||
|
## Режим Sender
|
||||||
|
|
||||||
|
По умолчанию скрипт работает в режиме `Json`, который нужен для UserParameter.
|
||||||
|
Это основной рекомендуемый вариант.
|
||||||
|
|
||||||
|
Также есть режим `Sender`:
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "C:\Program Files\Zabbix Agent 2\scripts\Monitor-VeeamJobs.ps1" -Mode Sender
|
||||||
|
```
|
||||||
|
|
||||||
|
Он отправляет метрики через `zabbix_sender.exe`. Этот режим полезен для запуска
|
||||||
|
из Task Scheduler, но текущий шаблон в первую очередь рассчитан на
|
||||||
|
`ZABBIX_PASSIVE` master item `veeam.scripts.monitor`.
|
||||||
|
|
||||||
|
Для обычной установки через Zabbix Agent 2 используй `UserParameter`, а не
|
||||||
|
`-Mode Sender`.
|
||||||
|
|
||||||
|
## Проверка после установки
|
||||||
|
|
||||||
|
1. Проверить скрипт напрямую:
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "C:\Program Files\Zabbix Agent 2\scripts\Monitor-VeeamJobs.ps1"
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Проверить через агент:
|
||||||
|
|
||||||
|
```cmd
|
||||||
|
"C:\Program Files\Zabbix Agent 2\zabbix_agent2.exe" -t veeam.scripts.monitor
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Проверить master item в Zabbix:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
Enabled: yes | Last: 2026-07-16 01:00:00 | Next: - | Result: Success | Restore points: 14
|
Monitoring -> Latest data -> Veeam: Monitor
|
||||||
```
|
```
|
||||||
|
|
||||||
## Zabbix dashboard idea
|
4. Проверить dependent items:
|
||||||
|
|
||||||
Create a dashboard named `Veeam Jobs` for hosts linked to the `Veeam Backup Jobs`
|
```text
|
||||||
template.
|
Monitoring -> Latest data -> veeam.jobs
|
||||||
|
```
|
||||||
|
|
||||||
Suggested widgets:
|
5. Проверить discovery:
|
||||||
|
|
||||||
| Area | Widget | Items |
|
```text
|
||||||
| --- | --- | --- |
|
Data collection -> Hosts -> Veeam host -> Discovery -> Veeam: Job discovery
|
||||||
| Top row | Item value | `veeam.jobs.total` |
|
```
|
||||||
| Top row | Item value | `veeam.jobs.successful` |
|
|
||||||
| Top row | Item value | `veeam.jobs.disabled` |
|
|
||||||
| Top row | Item value | `veeam.jobs.error` |
|
|
||||||
| Top row | Item value | `veeam.jobs.warning` |
|
|
||||||
| Middle | Item value or item history | `veeam.jobs.summary` |
|
|
||||||
| Bottom left | Item value or item list | `veeam.jobs.error.names` |
|
|
||||||
| Bottom center | Item value or item list | `veeam.jobs.warning.names` |
|
|
||||||
| Bottom right | Item value or item list | `veeam.jobs.disabled.names` |
|
|
||||||
|
|
||||||
Use a red threshold for `veeam.jobs.error`, yellow for `veeam.jobs.warning`, and
|
## Типовые проблемы
|
||||||
keep `veeam.jobs.disabled` aligned with the existing exclusion policy. The
|
|
||||||
template intentionally keeps `veeam.jobs.disabled.excluded.names`, because some
|
|
||||||
disabled policies are expected.
|
|
||||||
|
|
||||||
## Email notification script
|
### Скрипт работает вручную, но в Zabbix нет данных
|
||||||
|
|
||||||
`NotifyOfDisabledJobs.ps1` sends an email if one or more Veeam jobs are disabled.
|
Проверь через агент:
|
||||||
To exclude expected disabled jobs, add keywords to:
|
|
||||||
|
```cmd
|
||||||
|
"C:\Program Files\Zabbix Agent 2\zabbix_agent2.exe" -t veeam.scripts.monitor
|
||||||
|
```
|
||||||
|
|
||||||
|
Если есть timeout, увеличь в `zabbix_agent2.conf`:
|
||||||
|
|
||||||
|
```ini
|
||||||
|
Timeout=30
|
||||||
|
```
|
||||||
|
|
||||||
|
и перезапусти агент.
|
||||||
|
|
||||||
|
### Вручную работает, через агент ошибка доступа к Veeam
|
||||||
|
|
||||||
|
Ручной запуск идет от твоего пользователя, а Zabbix Agent 2 работает от учетной
|
||||||
|
записи службы. У этой учетной записи должен быть доступ к Veeam PowerShell.
|
||||||
|
|
||||||
|
Проверь лог:
|
||||||
|
|
||||||
|
```text
|
||||||
|
C:\Program Files\Zabbix Agent 2\zabbix_agent2.log
|
||||||
|
```
|
||||||
|
|
||||||
|
### Нет successful jobs
|
||||||
|
|
||||||
|
Скрипт сначала пытается читать результат из свойств job, затем из последней
|
||||||
|
Veeam-сессии. Если `successful` равен `0`, проверь в JSON поля:
|
||||||
|
|
||||||
|
```text
|
||||||
|
last_result
|
||||||
|
last_state
|
||||||
|
result
|
||||||
|
```
|
||||||
|
|
||||||
|
Если они пустые для всех заданий, значит текущий тип заданий Veeam не отдает
|
||||||
|
последний результат стандартными методами.
|
||||||
|
|
||||||
|
### Не показывается таблица в dashboard
|
||||||
|
|
||||||
|
В Zabbix 7.0 не все виджеты хорошо показывают много discovered items как таблицу.
|
||||||
|
Самый простой вариант - выводить один item:
|
||||||
|
|
||||||
|
```text
|
||||||
|
Veeam: Jobs summary
|
||||||
|
```
|
||||||
|
|
||||||
|
или смотреть подробности в:
|
||||||
|
|
||||||
|
```text
|
||||||
|
Monitoring -> Latest data
|
||||||
|
```
|
||||||
|
|
||||||
|
## Старый email-скрипт
|
||||||
|
|
||||||
|
`NotifyOfDisabledJobs.ps1` оставлен в репозитории как старый вариант
|
||||||
|
email-уведомлений. Он не нужен для работы Zabbix-шаблона.
|
||||||
|
|
||||||
|
Если он все еще используется отдельно, исключения задаются так же через файл:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
C:\Scripts\Veeam\NotifyOfDisabledJobs_EXCLUSIONS.IN
|
C:\Scripts\Veeam\NotifyOfDisabledJobs_EXCLUSIONS.IN
|
||||||
```
|
```
|
||||||
|
|
||||||
Example exclusions:
|
Пример:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
Backup_FILE01
|
Backup_FILE01
|
||||||
@@ -144,11 +428,8 @@ Backup_FILE47
|
|||||||
Replication_FILE
|
Replication_FILE
|
||||||
```
|
```
|
||||||
|
|
||||||
Example batch launch:
|
Запуск старого скрипта:
|
||||||
|
|
||||||
```bat
|
```bat
|
||||||
powershell.exe c:\scripts\Veeam\NotifyOfDisabledJobs.ps1
|
powershell.exe c:\scripts\Veeam\NotifyOfDisabledJobs.ps1
|
||||||
```
|
```
|
||||||
|
|
||||||
The original workflow runs this check every four hours, so intentionally disabled
|
|
||||||
jobs can be excluded while unexpected disabled jobs still raise a notification.
|
|
||||||
|
|||||||
Reference in New Issue
Block a user