Представь, что твой TrueNAS сервер работает в дата-центре или на удаленной площадке. Как ты узнаешь о проблемах с дисками, переполнении пула ZFS или аномальной нагрузке на CPU? Ответ — SNMP (Simple Network Management Protocol). В этой статье я, как Senior DevOps, покажу тебе, как превратить TrueNAS в полноценный источник метрик для мониторинга.
Что такое SNMP и зачем он нужен в TrueNAS?
SNMP — это протокол для управления и мониторинга сетевых устройств. В контексте TrueNAS он позволяет:
- Мониторить состояние жестких дисков (температура, SMART-статус)
- Отслеживать использование ZFS пулов (свободное место, fragmentation)
- Контролировать системные ресурсы (CPU, RAM, сетевые интерфейсы)
- Получать уведомления о критических событиях (trap-сообщения)
Настройка SNMP в веб-интерфейсе TrueNAS
Давай разберем пошаговую настройку. Открой веб-интерфейс TrueNAS и перейди в Services → SNMP.
Основные параметры конфигурации
Обязательные настройки:
- Location — физическое расположение сервера (например, "DC-1, Rack A5")
- Contact — контакт администратора (email или имя)
- Community — пароль для доступа (по умолчанию "public")
- Listen Address — IP-адрес для прослушивания (0.0.0.0 для всех интерфейсов)
- Port — UDP порт (стандартный 161)
Расширенные опции для продвинутого мониторинга
Для интеграции с профессиональными системами мониторинга:
# Включи эти опции в веб-интерфейсе:
- V3 Support: Если нужна аутентификация
- SNMPv3 Username: monitoring_user
- SNMPv3 Authentication Type: SHA (рекомендуется)
- SNMPv3 Privacy Protocol: AES
- Auxiliary Parameters: Дополнительные параметры для snmpd.conf
Ручная настройка через конфигурационный файл
Иногда нужно добавить кастомные OID или тонко настроить поведение. Для этого редактируем /etc/local/snmpd.conf:
# Пример расширенной конфигурации SNMP в TrueNAS
# Мониторинг конкретного ZFS пула
extend .1.3.6.1.4.1.2021.8.1.100 pool1 /bin/bash /usr/local/bin/zfs_pool_stats.sh pool1
# Кастомный OID для мониторинга репликации
extend truenas-replication-status /usr/local/bin/check_replication.sh
# Ограничение доступа по IP
rocommunity secret 192.168.1.0/24
rocommunity monitoring 10.0.0.5
# SNMPv3 пользователь
createUser monitoring_user SHA "strong_auth_pass" AES "strong_priv_pass"
rouser monitoring_user
Полезные OID для мониторинга TrueNAS
Вот ключевые OID, которые стоит отслеживать:
| Компонент | OID | Описание |
|---|---|---|
| Системная информация | .1.3.6.1.2.1.1.1.0 | SysDescr (версия ОС и системы) |
| Загрузка CPU | .1.3.6.1.4.1.2021.10.1.3.1 | 1-минутный load average |
| Использование RAM | .1.3.6.1.4.1.2021.4.6.0 | Total RAM used |
| Дисковое пространство | .1.3.6.1.4.1.2021.9.1.7.1 | Размер раздела в KB |
| Сетевой интерфейс | .1.3.6.1.2.1.2.2.1.10.1 | Входящий трафик (октеты) |
Скрипт для проверки ZFS через SNMP
#!/bin/bash
# /usr/local/bin/zfs_pool_stats.sh
POOL_NAME=$1
# Получаем статистику ZFS
zpool list -H -o name,size,alloc,free,health $POOL_NAME | awk -F'\t' '
{
print "pool_size:" $2
print "pool_allocated:" $3
print "pool_free:" $4
print "pool_health:" ($5 == "ONLINE" ? 1 : 0)
}'
Интеграция с системами мониторинга
Zabbix: Шаблон для TrueNAS
Создай шаблон с этими ключами items:
# Ключи для Zabbix LLD (Low-Level Discovery)
snmp.discovery[{"oid": ".1.3.6.1.2.1.25.2.3.1.3"}]
# Мониторинг дисков
vfs.dev.read.ops[sda]
vfs.dev.write.ops[sda]
vfs.dev.util[sda]
# ZFS метрики через UserParameter
UserParameter=truenas.zpool.health[*], sudo zpool list -H -o health $1
UserParameter=truenas.zpool.capacity[*], sudo zpool list -H -o capacity $1 | sed 's/%//'
Prometheus: Используем snmp_exporter
# snmp.yml конфиг для Prometheus
modules:
truenas:
walk:
- 1.3.6.1.2.1.25.2.3.1 # Хранилище
- 1.3.6.1.2.1.1 # Системная информация
- 1.3.6.1.4.1.2021.4 # Память
version: 2
auth:
community: your_secure_community
timeout: 10s
retries: 3
Диагностика проблем с SNMP
Если SNMP не работает, проверь следующее:
- Сервис запущен?
service snmpd status - Порт открыт?
netstat -an | grep :161 - Брандмауэр? Проверь правила в
Services → Network → Firewall - Логи SNMP:
tail -f /var/log/snmpd.log - Тестовый запрос:
snmpwalk -v 2c -c public localhost .1.3.6.1.2.1.1.1
Команда для тестирования с удаленного хоста
# Базовая проверка доступности
snmpget -v 2c -c your_community truenas_ip .1.3.6.1.2.1.1.5.0
# Получение системной информации
snmpwalk -v 2c -c your_community truenas_ip .1.3.6.1.2.1.1
# Проверка конкретного диска (ada0)
snmpwalk -v 2c -c your_community truenas_ip .1.3.6.1.4.1.2021.13.15.1.1.2.1
Безопасность SNMP в TrueNAS
Безопасная конфигурация критически важна:
- Используй SNMPv3 вместо v2c для шифрования
- Ограничь доступ по IP через
rocommunity community network/mask - Регулярно меняй community strings и пароли v3
- Отключи SNMP если не используется
- Используй read-only community для мониторинга
Часто задаваемые вопросы (FAQ)
Почему SNMP не показывает информацию о ZFS?
По умолчанию Net-SNMP не включает ZFS статистику. Нужно добавить extend-команды в конфиг или использовать кастомные скрипты, как показано выше.
Как мониторить температуру дисков через SNMP?
Используй OID .1.3.6.1.4.1.2021.13.15.1.1.6.1 для получения температуры или напиши скрипт, который парсит вывод smartctl -A /dev/ada0.
Можно ли отправлять trap-сообщения при ошибках ZFS?
Да, настройки alert в TrueNAS можно связать с SNMP traps. В конфиг добавь trapsink monitor_host community и настрой отправку при событиях в System → Alert Services.
SNMP работает после перезагрузки?
Да, если ты включил сервис в Services → SNMP → Start Automatically. Проверь галочку "Start Automatically".
Заключение
Настройка SNMP в TrueNAS — это must-have для любого production-окружения. Ты теперь знаешь как:
- Базовая настройка через веб-интерфейс
- Расширенная конфигурация через snmpd.conf
- Интеграция с Zabbix и Prometheus
- Мониторинг ZFS, дисков и системных ресурсов
- Обеспечение безопасности SNMP-трафика
Помни: правильный мониторинг предотвращает простои. Настроив SNMP сегодня, ты завтра получишь уведомление о проблеме до того, как пользователи её заметят.
Статья актуальна для TrueNAS CORE 13.x и TrueNAS SCALE 22.x. Команды и OID могут незначительно отличаться в других версиях.