Мониторинг домашней сети. Установка Zabbix

В определенный момент при увеличении числа устройств в домашней локальной сети возникает желание обеспечить себе какой-нибудь удобный способ контроля их работы, включая сохранение данных статистики за длительный период, организацию системы уведомлений о нештатных ситуациях и других функций. Инструментов для решения данной задачи можно найти очень много, включая как коммерческие, так и бесплатные. В случае выбора проектов с открытым исходным кодом часто встречается ситуация, что на иллюстрациях и в списке возможностей все просто замечательно, но попытки получить аналогичные красивым картинкам результаты наталкиваются на сложности с пониманием схемы работы программы. Использование многочисленных инструкций в режиме «копи-паст» тоже не помогает, поскольку редко кто из авторов объясняет, что же конкретно значат используемые им параметры и как изменить какие-нибудь опции под свои требования, не говоря уже о перманентном состоянии «развития» у этих проектов. Конечно, эта ситуация характерна для тех пользователей, которые не являются «настоящими программистами». Последние при должной усидчивости, пожалуй, способны и сами реализовать подобный проект «с нуля».

В этой статье я расскажу о своем опыте решения описанной задачи. Нет сомнения, что этот вариант не единственный возможный, да и оптимальным назвать его, скорее всего, нельзя. На идеальный выбор всех настроек я, конечно, тоже не претендую. В качестве мини-сервера для хранения данных и работы нужных сервисов будет выступать сетевой накопитель QNAP. Поскольку надежность его собственного программного обеспечения QTS по понятной причине имеет более высокий приоритет, то для реализации системы мониторинга будет использоваться технология «легкой виртуализации» Docker, реализованная для многих современных моделей в модуле Container Station. Описанные сервисы можно развернуть и на других сетевых накопителях, миниПК или даже роутерах, так что если у вас в локальной сети есть хоть что-то постоянно работающее, скорее всего, можно найти вариант и для него.

Система будет основана на известной программе Zabbix, имеющей множество функций и возможностей, а также поддерживающей  плагины, шаблоны и много всего другого интересного. В официальном каталоге Docker представлено несколько вариантов данных программ, я использую версии от monitoringartist.

Подготовительные действия на сетевом накопителе начинаются с установки требуемого модуля. Далее он при своем запуске формирует отдельную папку для хранения данных.  В ней через Web-интерфейс сетевого накопителя создаем две директории для хранения баз данных используемых проектов. Назвать их можно как угодно, я выбрал понятное имя zabbix.

Для работы с Zabbix через Docker в используемой схеме применяется два контейнера – один отвечает за базу данных, второй является собственно самой программой. Наша задача – запустить оба проекта с требуемыми настройками и связать их между собой.

 

Приступим к первому. Заходим в пункт «Создать контейнер» и находим в каталоге zabbix-db-mariadb. Нажимаем кнопочку «Установить» около него и в открывшемся окне выбираем версию latest («последняя»).

На следующей странице меняем поле «Имя» на zabbix-db. Собственно написать здесь можно что угодно. В дальнейшем это имя будет использоваться для настройки связи между контейнерами.

Обязательно заходим в «Дополнительные параметры». Здесь нам нужно будет настроить несколько параметров.

На закладке «Среда» указываем три переменные окружения. Первые две (MARIADB_USER  и MARIADB_PASS) – имя пользователя и пароль (желательно указать сложный). Они будут далее использоваться для подключения сервиса Zabbix к этой базе данных. Третья (DB_innodb_buffer_pool_size) относится к параметрам производительности базы данных. Возможно, что на менее производительных системах стоит указать меньшее, чем «768M» значение.

Теперь на закладке «Сеть» пишем имя хоста (я снова выбрал zabbix-db), оставляем режим сети «NAT». В таблице «Перенаправление портов» вы можете настроить трансляцию порта базы данных из контейнера «во внешний мир», если требуется доступ к ней не только из контейнеров Docker.

 

Далее на закладке «Общие папки» добавляем одну запись в раздел «Том из узла». В качестве исходной папки на сетевом накопителе выбираем созданную ранее (в моем случае – /Container/zabbix), а точка подключения должна быть /var/lib/mysql. Данная настройка решает две задачи – сохранение информации в папке при перезапуске контейнера, а также возможность более простого доступа к файлам базы данных из «обычного» окружения сетевого накопителя, например, для резервного копирования. Если вторая опция не требуется, можно только добавить папку /var/lib/mysql в раздел «Новый том».

На этом с первым контейнером заканчиваем – перепроверяем все страницы и нажимаем кнопку «Создать».

Через некоторое время в списке «Контейнеры» появляется новый сервис. Убедившись, что он работает, а в /Container/zabbix появились файлы, переходим ко второму шагу.

Снова идем в раздел «Контейнеры», ищем в каталоге zabbix-xxl и  выбираем последнюю версию для установки.

Имя контейнера можно поменять на zabbix и перейти к важной настройке дополнительных параметров.

На странице «Ссылка» необходимо настроить связь с ранее созданным контейнером с базой данных. Для этого нажимаем «Добавить», в первом поле из выпадающего списка выбираем zabbix-db (соответственно ранее придуманному имени). Во втором поле можно указать такое же значение. Данная опция реализует создание виртуального доменного имени (второе поле) для первого контейнера, к которому далее можно будет обращаться из нового контейнера.

На закладке «Среда» настраиваем переменные для обращения из программы к базе ZS_DBHost – имя хоста с прошлой страницы «Ссылка», ZS_DBUser – имя пользователя базы данных, ZS_DBPassword – пароль базы данных. Последние два поля должны соответствовать ранее заданным в переменных окружения для первого контейнера.  Также здесь указываем параметр часового пояса PHP_date_timezone. В моем случае его значение – Europe/Moscow.

Далее на странице «Сеть» пишем имя хоста zabbix и добавляем в таблицу «Перенаправление портов» запись для доступа к Web-интерфейсу системы. Номер порта «Узел» должен быть уникальным для вашего сетевого накопителя и не занятым другими его сервисами. Номер порта «Контейнер»  – стандартный для Web-сервера 80. Протокол – TCP.

Судя по информации в сети, дополнительно стоит «пробросить» и один системный файл (/etc/localtime, отвечающий за  настройку часового пояса) из NAS в контейнер. Но, к сожалению, в Web-настройках сервиса Container Station нет такой возможности. Так что поступим иначе – на странице «Общие папки» в первом разделе «Новый том» указываем /etc, что позволяет нам сохранить содержимое директории между перезапусками контейнера.

Нажимаем «Создать» и ждем появления нового контейнера в списке задач. После его запуска, система автоматически инициализирует и создает базу данных, что может занимать некоторое  время. Вывод в окне консоли сообщения «API is available» говорит о завершении процесса.

Теперь поправим настройку часового пояса. На странице статуса контейнера нажимаем кнопку «Терминал». В открывшееся окно вводим команду «ln -s -f /usr/share/zoneinfo/Europe/Moscow /etc/localtime» (если сетевой накопитель установлен в этом городе). Браузер открывает новое окно, его можно просто закрыть. Проверить, что сработало, можно аналогичным способом – командой «ls -la /etc/localtime». Теперь перезагружаем контейнер соответствующей кнопкой около него на странице «Обзор». В определенном смысле это «костыль» и удобнее было бы связать настройку контейнера с текущей настройкой сетевого накопителя, но не думаю, что такое оборудование будет часто переезжать.

Несмотря на то, что мы указали только некоторые из параметров для запуска контейнеров, в реальности внутри самих проектов также есть предусмотренные разработчиками опции. В частности, база данных,  несмотря на отсутствие явного разрешения с нашей стороны, транслирует свой порт «наружу» (конечно в локальную сеть, а не в Интернет). Так что в случае повышенных требований к безопасности стоит остановить контейнеры и просмотреть их текущие параметры.

Для доступа к свежеустановленной системе Zabbix открываем браузер и вводим в поле адреса имя или IP-адрес сетевого накопителя и через двоеточие указанный ранее в настройках для контейнера zabbix номер порта.

По умолчанию для входа в систему используется аккаунт Admin/zabbix. В дальнейшем пароль можно будет изменить, а можно и добавить новых пользователей со своими правами.

В базовом комплекте сервис настроен только на мониторинг самого себя. Так что картинка не очень интересная. Как и что можно добавить к системе, я расскажу в следующем материале.

Стоит отметить, что ресурсов данная программа требует не очень много и на работе других сервисов сетевого накопителя эта нагрузка не сказывается. Хотя конечно здесь многое будет зависеть от числа контролируемых объектов, настроенных контрольных триггеров и других параметров.

+2 0 16195 7
Автор Kirill Kochetkov Рейтинг +4.84 Сила 11.18
Блог Умный дом 61 68 RSS

7 комментариев

Oleg Gribalev
Блин, круто. Это, конечно, не готовый пакет один кликом поставить...)
В следующей части будет про то, как мониторить сам NAS, точнее температуру дисков, например?)
Последний раз редактировалось
T-Troll
Если там линух — посмотри, стоит ли sensors.ko — если да, то sensors в руки (ну или в моем случае — плагин к collectd). Кста, оно не только в температуры умеет, но и в обороты вентиляторов, если есть.
T-Troll
«Потому что можем!»
Докер с VM дома — это, конечно, круто и все такое.....
… Но не проще уж тогда поставить связку collectd + RRDTool?
Гимора на порядок меньше, а highload-а, под который делали Zabbix, дома все равно нет.
Kirill Kochetkov
Как я и написал — вариантов 100500 можно найти. Основная проблема выбора, на мой взгляд, для тех, кто не очень в теме, — отсутствие правильных руководств, инструкций и примеров. Можно найти хорошие и простые рекомендации, но «шаг влево, шаг вправо» из них уже не сделать. Или наоборот — все очень-очень подробно, но чрезмерно сложно. Я сам ранее использовал Cacti на NAS, запускал его на штатной базе данных сетевого накопителя и его Web-сервере. А сейчас решил попробовать Zabbix, заодно и с Docker поближе познакомиться.
T-Troll
Да понятно, что вариантов море, и за мануал спасибо.
Я просто напомнил про бритву Оккама.
Wadiscan
Так и не понял, зачем эта тулза нужна рядовому домашнему пользователю, у которого да хоть 10 устройств в сети.

Добавить комментарий