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

Пост опубликован в блогах iXBT.com, его автор не имеет отношения к редакции iXBT.com
| Обзор | Комфортный дом и бытовая техника

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

В этой статье я расскажу о своем опыте решения описанной задачи. Нет сомнения, что этот вариант не единственный возможный, да и оптимальным назвать его, скорее всего, нельзя. На идеальный выбор всех настроек я, конечно, тоже не претендую. В качестве мини-сервера для хранения данных и работы нужных сервисов будет выступать сетевой накопитель 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. В дальнейшем пароль можно будет изменить, а можно и добавить новых пользователей со своими правами.

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

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

Автор не входит в состав редакции iXBT.com (подробнее »)

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

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

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

Сейчас на главной

Новости

Публикации

Аллергия на кошек и что делать, если очень хочется завести кота

У городских жителей давно вошло в моду содержать дома различных животных. Кто-то отдает предпочтение хорькам, общительным, ласковым зверькам, легко приручаемым, любителям спать до 20 часов в сутки....

Играем с собакой: какие игрушки выбрать и как играть с питомцем в развивающие игры

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

Как сложилась жизнь и карьера актрисы Джульетт Льюис из фильма от «Заката до рассвета»

В середине 90-х в кинотеатрах, а так же на кассетах VHS вышел остросюжетный фильм «От заката до рассвета». В России и на постсоветском пространстве фантастический боевик со временем стал...

Почему на женских рубашках пуговицы слева, а на мужских - справа?

Взглянув на обычную рубашку, мы вряд ли задумываемся о том, что расположение пуговиц — это не просто случайность, а следствие многовековой истории, тесно связанной с гендерными...

Обзор игрового ноутбука Maibenben X757? Разборка мощной модели с дискретной видеокартой и RGB-иллюминацией

Насколько же хорош новый игровой ноутбук от Maibenben? А именно, модель X757 на базе мощного процессора и дискретной видеокарты, предназначенная для тяжелых приложений и игр. Интересный...

Обзор электронной книги OnyxBoox Kant 2: идеальная читалка в дорогу

OnyxBoox Kant 2 это компактная читалка которая будет идеальным вариантом для тех, кто проводит много времени вне дома и ценит небольшой вес. Хотя и для дома эта читалка так же подойдёт, но я...