Настройка мониторинга TrueNAS с помощью Grafana и Graphite в Kubernetes
Попробуем настроить мониторинг конфигурации TrueNAS с помощью Grafana для получения информации о VDEV и оборудовании, на котором работает NAS. Далее описана конфигурация для мониторинга TrueNAS с помощью Grafana.
Обзор конфигурации
Краткий обзор сборки: на TerraMaster F8 SSD Plus была переустановлена TrueNAS, для данных используются (6) накопителей Samsung 980 Pro 2TB NVMe. Конфигурация отличается от стандартной: созданы (3) зеркала из двух дисков для VDEV. Proxmox хранит данные на всех VDEV в пуле, поэтому пул отображается как единое хранилище. Данная конфигурация обеспечивает более высокую производительность, чем размещение всех дисков в конфигурации RAIDZ. Ёмкость при этом меньше, но приоритетом была максимальная производительность.
Были выполнены замеры производительности в тестовой ВМ, работающей в Proxmox и использующей хранилище TrueNAS, предоставленное через новый плагин хранилища TrueNAS. Замеры показали высокую отзывчивость и производительность хранилища. Однако важна реальная производительность и поведение при большом количестве рабочих нагрузок.
TrueNAS имеет встроенную систему отчётов с экспортером Graphite. Требовалось настроить экспорт метрик в Graphite и отображение соответствующих метрик окружения в Grafana.
Почему использованы Grafana и Graphite
TrueNAS имеет конфигурацию отчётов, которая нативно интегрируется с Graphite. Это очевидный выбор с точки зрения простоты настройки. Метрики отправляются в приёмник Carbon в Graphite, который сохраняет их. Graphite выступает в роли источника данных, к которому Grafana обращается для отображения и построения графиков.
В дальнейшем возможно внедрение Prometheus для TrueNAS. Для этого потребуется промежуточная конвертация из Graphite в Prometheus. Prometheus является более современным решением для агрегации данных. Однако на первом этапе достаточно настроить нативный экспорт TrueNAS и оценить предоставляемые данные. Это хорошая конфигурация для мониторинга TrueNAS с помощью Grafana.
Где развёрнуть Grafana и Graphite
Экземпляр Grafana можно развернуть в кластере Kubernetes на Talos Linux и использовать для мониторинга многих других компонентов домашней лаборатории. Graphite может быть добавлен прямо в кластер Kubernetes. Kubernetes хорошо подходит для запуска Grafana, Prometheus, Graphite и других систем мониторинга.

Обзор развёртывания стека мониторинга в Kubernetes
Grafana развёрнута в кластере Kubernetes на Talos Linux. В этом же кластере запущен Graphite. Это упрощает соединение между ними, поскольку Grafana может подключаться к источнику данных внутри сети Kubernetes.

Оба этих решения используют постоянные тома на хранилище Ceph RDB, входящем в состав решения Ceph, развёрнутого в кластере Proxmox. Было назначено следующее:
Оба веб-интерфейса опубликованы через Traefik в кластере Kubernetes. Сервисы направляют трафик в поды с использованием доменных имён и терминации SSL-сертификатов. Трафик идёт по нескольким путям. TrueNAS отправляет данные на внутренний IP-адрес 10.1.149.240:2003. Этот порт является приёмником Carbon в Graphite. Затем Grafana запрашивает веб-сервис Graphite через сеть Kubernetes.
При настройке подключения от Grafana к Graphite используется внутреннее DNS-имя Kubernetes для Graphite:
|
1 |
http://graphite.graphite.svc.cluster.local:80 |

Это наиболее эффективный путь, поскольку он избавляет Grafana от необходимости обращаться к публичному имени хоста Graphite и возвращаться через Traefik, когда оба приложения уже имеют кластерные сервисы. После этого была запущена проверка Save and Test, которая прошла успешно, как показано ниже.

Настройка экспортера в TrueNAS
Со стороны TrueNAS настройка интеграции с Graphite достаточно проста. Диалоговое окно конфигурации довольно понятно. В интерфейсе TrueNAS нужно перейти в раздел Reporting > Exporters и добавить новый экспортер.
Ниже приведены настройки, которые были введены для данного окружения; они дают представление о том, что необходимо настроить:
| Настройка | Значение |
|---|---|
| Тип | Graphite |
| Включено | Да |
| IP-адрес назначения | 10.1.149.240 |
| Порт назначения | 2003 |
| Префикс | truenas |
| Пространство имён | truenas |
| Обновлять каждые | 10 секунд |
| Соответствующие графики | * |


При такой конфигурации использование truenas в качестве префикса и пространства имён даёт пути метрик в формате truenas.truenas. В данной конфигурации это приемлемо, но существующую панель мониторинга Grafana из маркетплейса Grafana пришлось доработать, как показано ниже. Пути Graphite и регистр символов необходимо было привести в соответствие с запросами, используемыми на панели.
После сохранения конфигурации экспортера прошло немного времени, прежде чем было проверено дерево метрик. Потребовалось некоторое время, но в конечном итоге TrueNAS начал отправлять данные, и появилось дерево truenas.

В импортированной панели Grafana не появилось данных
Чтобы не изобретать велосипед, было решено обратиться к панелям, доступным в Grafana. Выбор остановился на панели Grafana 20439, поскольку она создана для Graphite и Grafana. Панель загрузилась без проблем.

Но была замечена проблема. Панели были пустыми. Метрики были видны в Graphite, поэтому было ясно, что данные туда попадают. Предположительно, дело было в путях, которые ожидались.

Действительно, при проверке импортированной панели оказалось, что она ожидает пути вида:
- TrueNAS.*.zfs.arc_size.arcsz
- TrueNAS.*.cpu.cpu0.idle
Экспортер отправлял пути в разделе truenas.truenas, включая truenas_arcstats и truenas_cpu_usage. В итоге было два различия. Во-первых, панель ожидала TrueNAS с заглавных букв (напомним, Linux чувствителен к регистру), а префикс был в нижнем регистре. Во-вторых, имена графиков на панели были рассчитаны на другую структуру метрик TrueNAS. Текущий экспорт использовал имена вроде truenas_pool, truenas_meminfo и truenas_disk_stats. Старая панель ожидала другие.
Поэтому было выполнено переназначение запросов панели на отправляемые метрики.
- Панели пула используют: truenas_pool.usage
- Панели CPU используют truenas_cpu_usage
- Активность дисков использует truenas_disk_stats
- Панели ARC используют truenas_arcstats
Также были сопоставлены доступные серии температуры дисков, системной нагрузки, времени работы и сети. Самый быстрый способ устранить неполадки панели с сообщением No data — вернуться к Explore в Graphite. Если графики в Graphite заполняются, то, вероятно, просто есть несоответствие в одной из описанных областей.
Показание ARC 12,7 ПБ было проблемой единиц измерения
Ещё одна странность, обнаруженная после переназначения запросов панели, заключалась в том, что панели отображали странные числа. Особенно выделялся размер ZFS ARC. Он отображался как 12,7 ПБ. Такой объём был бы желателен, но, к сожалению, значение должно было составлять около 12 ГБ. В NAS физически только 16 ГБ ОЗУ.
Было обнаружено, что панель форматирует это значение так, как будто оно представлено в мегабайтах, а не в байтах. Это существенно завышало итог. Поэтому в Grafana была установлена единица измерения «байты», и результат вернулся к примерно 12 ГБ.

Рекомендуется, прежде чем полагаться на информацию, отображаемую в Grafana, свериться с данными внутри TrueNAS, чтобы убедиться в правильности форматирования на панели. Это касается таких панелей, как ёмкость пула, установленная память, температура дисков и пропускная способность сети, — лишь некоторых, которые стоит проверить.
В итоге панель была настроена, и она стала выглядеть, как показано ниже, что хорошо.

Ниже та же панель прокручена вниз, и здесь видны сетевые статистики.

За какими показателями следить для хранилища Proxmox?
Лучшее, что могут дать графики, — это объяснить, что происходит с виртуальными машинами, если наблюдается замедление или задержки в производительности. Показатели, за которыми стоит следить:
- Использование пула
- Чтение и запись на диск
- Время занятости
- Температуры
- Поведение и тенденции ZFS ARC
Использование этого для мониторинга TrueNAS с помощью Grafana — отличный способ отслеживать динамику таких значений, которую можно не заметить при периодическом просмотре панели TrueNAS. Наличие исторических данных — хороший способ контролировать состояние хранилища в TrueNAS.
Заключение
В целом, это было хорошее упражнение по мониторингу TrueNAS с помощью Grafana и экспорту данных из TrueNAS. При повторении этой настройки процесс прошёл бы более гладко, поскольку некоторые подводные камни уже были бы знакомы заранее. Следующий шаг — разместить Prometheus в качестве промежуточного звена для более современного решения по экспорту метрик в Grafana.
Читайте про Свой умный дом локально:
🌐 Сайт
📱 Телеграм
📰 Дзен
