Представь, что твой TrueNAS SCALE работает как швейцарские часы, но ты не видишь, что происходит внутри: насколько загружены диски, сколько свободной памяти, не перегревается ли CPU. Мониторинг — это глаза и уши системного администратора. Давай разберем, как установить и настроить Zabbix Agent на TrueNAS SCALE, чтобы получить полный контроль над твоей системой хранения.
Почему именно Zabbix для мониторинга TrueNAS?
TrueNAS SCALE — это мощная система на базе Linux, но встроенные инструменты мониторинга ограничены. Zabbix предлагает:
- Централизованный сбор метрик со всех систем
- Гибкие триггеры и оповещения (Telegram, Email, Slack)
- Графики и дашборды для анализа трендов
- Мониторинг не только железа, но и сервисов (SMB, NFS, iSCSI)
Метод 1: Установка Zabbix Agent через Docker (Рекомендуемый)
Это самый безопасный и стабильный способ, так как не требует модификации системных файлов TrueNAS.
Шаг 1: Подготовка в TrueNAS SCALE
Зайди в веб-интерфейс TrueNAS SCALE:
- Перейди в Apps → Settings → Advanced Settings
- Включи опцию Enable Host Path Safety Checks (если она выключена)
- Создай dataset для конфигурации Zabbix Agent:
- Storage → Create Dataset
- Название:
zabbix-agent-config - Тип: Filesystem
Шаг 2: Создание конфигурационного файла
Создай файл конфигурации через Shell или SMB-шару:
# Подключись к TrueNAS по SSH
ssh admin@truenas.local
# Перейди в созданный dataset
cd /mnt/pool/zabbix-agent-config
# Создай конфигурационный файл
cat > zabbix_agentd.conf << 'EOF'
# Основные настройки
Server=192.168.1.100 # IP твоего Zabbix Server
ServerActive=192.168.1.100 # Для активных проверок
Hostname=truenas-nas # Уникальное имя хоста в Zabbix
# Параметры безопасности
TLSConnect=unencrypted
TLSAccept=unencrypted
# Директории
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=10
# Пользователь
User=zabbix
# Включим все возможные проверки
EnableRemoteCommands=1
Timeout=30
# Дополнительные параметры для TrueNAS
UnsafeUserParameters=1
Include=/etc/zabbix/zabbix_agentd.d/*.conf
EOF
# Проверь содержимое файла
cat zabbix_agentd.conf
192.168.1.100 на реальный IP адрес твоего Zabbix Server. Hostname должен совпадать с именем хоста, зарегистрированным на сервере Zabbix.
Шаг 3: Запуск Docker-контейнера
Используй встроенный Docker (через интерфейс Apps) или CLI:
# Запусти контейнер Zabbix Agent 2
sudo docker run -d \
--name zabbix-agent \
--restart unless-stopped \
-v /mnt/pool/zabbix-agent-config/zabbix_agentd.conf:/etc/zabbix/zabbix_agentd.conf \
-v /proc:/proc:ro \
-v /sys:/sys:ro \
-v /dev:/dev:ro \
--net=host \
--privileged \
-e ZBX_HOSTNAME="truenas-nas" \
zabbix/zabbix-agent2:latest
Шаг 4: Проверка работы агента
# Проверь статус контейнера
sudo docker ps | grep zabbix-agent
# Посмотри логи
sudo docker logs zabbix-agent
# Проверь связь с сервером (с стороны сервера Zabbix)
zabbix_get -s 192.168.1.50 -k "agent.ping"
Метод 2: Установка Zabbix Agent как системного сервиса
Для тех, кто предпочитает нативные пакеты. Этот метод требует больше осторожности.
Шаг 1: Установка пакета
# Обнови список пакетов
sudo apt update
# Установи Zabbix Agent
sudo apt install zabbix-agent2 zabbix-agent2-plugin-*
# Проверь версию
zabbix_agent2 --version
Шаг 2: Настройка конфигурации
# Резервная копия оригинального конфига
sudo cp /etc/zabbix/zabbix_agent2.conf /etc/zabbix/zabbix_agent2.conf.backup
# Отредактируй конфиг
sudo nano /etc/zabbix/zabbix_agent2.conf
# Измени следующие параметры:
Server=192.168.1.100
ServerActive=192.168.1.100
Hostname=truenas-nas
# Timeout=30
# Include=/etc/zabbix/zabbix_agent2.d/*.conf
Шаг 3: Запуск и автозагрузка
# Перезапусти сервис
sudo systemctl restart zabbix-agent2
# Включи автозагрузку
sudo systemctl enable zabbix-agent2
# Проверь статус
sudo systemctl status zabbix-agent2
Настройка мониторинга специфичных метрик TrueNAS
Zabbix Agent по умолчанию мониторит базовые метрики. Для TrueNAS нам нужны специализированные проверки.
Создание пользовательских параметров
Создай файл с пользовательскими проверками:
# /etc/zabbix/zabbix_agent2.d/truenas.conf
# Мониторинг состояния pool
UserParameter=truenas.pool.health[*], zpool status $1 | grep -q "state: ONLINE" && echo 1 || echo 0
# Свободное место в pool (в байтах)
UserParameter=truenas.pool.free[*], zfs list -H -o available $1
# Использование места в pool (проценты)
UserParameter=truenas.pool.used[*], zfs list -H -o used $1
# Количество ошибок на дисках
UserParameter=truenas.disk.errors, zpool status | grep -E "(READ|WRITE|CKSUM)" | awk '{sum+=$3} END {print sum}'
# Статус сервисов TrueNAS
UserParameter=truenas.service.status[*], systemctl is-active $1
# Температура CPU (если доступно)
UserParameter=truenas.cpu.temp, sensors | grep "Core 0" | awk '{print $3}' | sed 's/\+//' | sed 's/°C//'
Добавление шаблона в Zabbix Server
Импортируй готовый шаблон или создай свой:
- В веб-интерфейсе Zabbix перейди в Configuration → Templates
- Нажми Import и загрузи XML-шаблон для TrueNAS
- Присоедини шаблон к хосту TrueNAS
- Проверь получение данных в Monitoring → Latest data
Сравнение методов установки Zabbix Agent на TrueNAS SCALE
| Критерий | Docker-метод | Системный пакет |
|---|---|---|
| Безопасность для TrueNAS | Высокая (изоляция) | Средняя (модификация системы) |
| Простота обновления | Очень простая | Требует осторожности |
| Производительность | Незначительные накладные расходы | Максимальная |
| Доступ к системным файлам | Требует монтирования volumes | Прямой доступ |
| Рекомендация | Для production-сред | Для тестирования/разработки |
Решение распространенных проблем
Решение:
- Проверь firewall:
sudo ufw allow 10050/tcp - Убедись, что IP адреса в конфиге правильные
- Проверь связь:
telnet truenas-ip 10050
Решение: Добавь флаги
--privileged и правильные volume монтирования как в примере выше.
Решение: Убедись, что в конфиге есть
UnsafeUserParameters=1 и файл с параметрами включен через Include.
Оптимизация и лучшие практики
- Используй Zabbix Agent 2 вместо первой версии — он более стабилен и имеет встроенные плагины
- Настрой интервалы опроса разумно: дисковые метрики — каждые 5 минут, состояние сервисов — каждую минуту
- Создай отдельный dataset для логов Zabbix, чтобы не засорять системный раздел
- Регулярно обновляй Docker-образ или пакеты Zabbix Agent
- Настрой оповещения на критические события: отказ диска, заполнение pool, остановка сервисов
Продвинутая настройка: Мониторинг через Zabbix Trapper
Для метрик, которые нельзя получить через агент (например, статистика SMB-сессий), используй скрипты и zabbix_sender:
#!/bin/bash
# /usr/local/bin/smb_monitor.sh
# Получаем количество активных SMB сессий
SMB_SESSIONS=$(smbstatus | grep -c "Connected")
# Отправляем в Zabbix
zabbix_sender -z 192.168.1.100 -s "truenas-nas" -k "truenas.smb.sessions" -o $SMB_SESSIONS
# Добавляем в cron
# */5 * * * * /usr/local/bin/smb_monitor.sh
Теперь у тебя есть полностью настроенная система мониторинга для TrueNAS SCALE. Ты можешь отслеживать не только базовые метрики, но и специфичные параметры NAS. Помни: хороший мониторинг — это не просто сбор данных, а своевременное реагирование на проблемы. Настрой триггеры и оповещения, чтобы быть в курсе состояния твоей системы хранения 24/7.