Мониторинг систем видеонаблюдения с помощью Zabbix
Система мониторинга Zabbix уже давно зарекомендовала себя как простое в установке и настройке решение, которое помогает поддерживать работоспособность серверов, сайтов, сети и т. д. Многие администраторы выбирают ее для решения своих задач благодаря стабильной работе 24/7 и гибким возможностям настройки. Несмотря на это, в сети крайне мало инструкций по настройке zabbix для видеонаблюдения, что и подтолкнуло нас к написанию этой статьи.
Зачем нужен мониторинг
В основном систему zabbix используют опытные пользователи, для которых её установка и настройка не составляют особого труда. Но что же делать остальным? В этой статье мы постараемся помочь разобраться в основах работы и показать основные моменты для дальнейшего самостоятельного изучения системы мониторинга zabbix.
Мы расскажем об установке сервера и агента Zabbix на Windows и Linux. Ответим на вопрос, как настроить оповещения о потере связи с камерами, высокой нагрузкой центрального процессора на сервере, проблемах с клиентскими местами, и немного коснемся стандартных шаблонов.
Стоит сказать, что в IP-видеонаблюдении каждый элемент имеет свой IP-адрес, поэтому желательно, чтобы элементы системы, с которыми мы будем работать, имели статические IP-адреса для более удобной настройки системы мониторинга.
Zabbix: запуск и настройка
Итак, программное обеспечение Zabbix строится по принципу «сервер — агент».
Сервер собирает и хранит всю информацию, с его помощью можно быстро просмотреть историю мониторинга, настроенных узлов, а также добавить новые узлы, правила и т. д.
Агент устанавливается на компьютер, информация с которого вас интересует.
Серверная часть Zabbix работает под системой Linux. Так как данная статья рассчитана на людей, которые впервые столкнусь с данной ОС, рекомендуем начать с операционной системы Ubuntu, она более дружелюбна к новичкам. Всю информацию по ней можно найти в официальном русском сообществе ubuntu.ru. Там также можно посмотреть инструкцию по установке на ПК или на виртуальную машину, например Oracle VM VirtualBox.
После запуска системы необходимо сразу же обновить пакеты вашей ОС.
Для этого открываем консоль ctrl + alt + t и вводим команду
sudo apt update && sudo apt upgrade
Возможно, придется несколько минут подождать, пока будут обновлены все пакеты.
Также нам понадобится текстовый редактор:
sudo apt-get install mcedit
Далее переводим язык системы на русский:
sudo locale-gen ru_RU
Для работы с zabbix нужно установить базу данных MySQL и веб-сервер Apache:
sudo apt install mysql-server mysql-client apache2
Установим пароль для пользователя root от MySQL.
Теперь установим нужные PHP-зависимости:
sudo apt install php-mbstring php-bcmath php-xml
И перезапустим Apache:
sudo service apache2 reload
Далее можно приступить к установке самой системы мониторинга. Пошаговая инструкция описана на официальном сайте Zabbix, давайте пройдем их вместе:
1) Выбираем нашу платформу для сервера Zabbix. В качестве базы данных используем MySQL.
2) Скачиваем и устанавливаем репозиторий Zabbix:
wget http://repo.zabbix.com/zabbix/3.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.4-1+xenial_all.deb
sudo dpkg -i zabbix-release_3.4-1+xenial_all.deb
sudo apt update
3) Устанавливаем zabbix-server-mysql, zabbix-frontend-php и zabbix-agent,
sudo apt install zabbix-server-mysql zabbix-frontend-php zabbix-agent
4) Cоздаем базу данных MySQL для Zabbix:
sudo mysql -uroot –p
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'пароль';
mysql> quit
Теперь заполняем базу данных, это займет некоторое время:
cd /usr/share/doc/zabbix-server-mysql/
zcat /create.sql.gz | mysql -uzabbix -пароль zabbix
5) Настройка конфигураций сервера Zabbix:
Откроем через текстовый редактор конфигурационный файл
sudo mcedit /etc/zabbix/zabbix_server.conf
И заполним следующие поля:
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=пароль
6) Следующие 2 шага поменяем местами.
Установим временной пояс в настройках веб-сервера:
sudo mcedit /etc/apache2/conf-available/zabbix.conf
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value always_populate_raw_post_data -1
php_value date.timezone Europe/Moscow
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value always_populate_raw_post_data -1
php_value date.timezone Europe/Moscow
И перезапустим его:
sudo service apache2 reload
7) Готово, можно запускать сервер Zabbix:
sudo systemctl start zabbix-server
sudo systemctl enable zabbix-server
Делаем небольшую проверку:
systemctl status zabbix-server zabbix-agent
Должно появиться следующее сообщение:
Настройка веб-интерфейса Zabbix
Теперь можно зайти на web-интерфейс Zabbix, для этого в браузере нужно ввести:
http://localhost/zabbix
Здесь нужно ввести установленный ранее пароль.
В конце появится окно авторизации, по умолчанию пользователь — Admin, пароль — zabbix.
Выбираем русский язык.
Меняем пароль с zabbix на свой и нажимаем Update.
Настройка мониторинга, шаблоны, триггеры
Zabbix-сервер
Теперь перейдем к основному пункту, а именно настройке мониторинга.
Заходим в «Настройка» — «Группы узлов сети».
Тут мы увидим заранее созданные системные группы, удалять их не надо.
Нажимаем «Создать группу узлов сети». Заполняем имя группы, например Networks. Узлы пока не добавляем. Нажимаем «Добавить».
Нам также понадобится группа для наших шаблонов, нажимаем «Создать группу узлов сети», в поле «Имя» пишем: Templates for Networks. Нажимаем «Добавить».
Шаблоны
Теперь перейдем к шаблонам: «Настройка» — «Шаблоны» — «Создать шаблон».
Теперь мы можем выбрать группу для шаблонов, чтобы видеть наши шаблоны.
Добавляем в шаблон элемент данных, для этого нажимаем «Элементы данных» — «Создать элементы данных».
В поле «Имя» указываем Ping.
«Ключ» — нажимаем «Выбрать» и выбираем первый ключ. Он будет возвращать 1 в случае удачного пинга и 0 в случае неудачного, нам этого достаточно.
Все параметры установлены по умолчанию, поэтому удаляем все, что находится в квадратных скобках:
«Тип информации» — выбираем «Числовой (целое положительное)».
Поле «Единица измерения» оставляем пустым.
«Интервал обновления» — тут выбираем интервал пинга, например 60 s.
«Период хранения истории» — для уменьшения размера базы данных поставим 1 d.
«Период хранения динамики изменений» — 5 d.
Нажимаем «Добавить».
Нажимаем «Создать элемент данных».
В поле «Имя» указываем lost packet.
«Ключ» — нажимаем «Выбрать» и выбираем второй ключ.
Также удаляем все, что находится в квадратных скобках.
«Тип информации» — «Числовой (с плавающей точкой)».
«Единица измерения» — вписываем »%».
«Интервал обновления» — 60 s.
«Период хранения истории» — 1 d.
«Период хранения динамики изменений» — 5 d.
Нажимаем «Добавить».
Графики
Чтобы визуализировать информацию, нам понадобятся графики. Выбираем «Графики» и нажимаем «Создать график».
В поле «Имя» вводим Ping.
Снимаем галочку с «Отображать триггеры».
«Элементы данных» — «Добавить» — выбираем наш Ping.
Также добавляем lost packet.
Нажимаем «Добавить».
Настройка мониторинга удаленного сервера
Заходим «Настройка» — «Узлы сети» — «Создать узел сети».
Задаем название, IP-адрес, описание (не обязательно) и переходим в добавление шаблона.
В шаблонах, в поле «Соединить с новыми шаблонами», выбираем наш шаблон для сети и дважды нажимаем «Добавить».
В узлах сети видно добавление нашего узла. У него есть два элемента данных, график и активное состояние.
Теперь специально отключим сеть на несколько минут и посмотрим графики.
«Мониторинг» — «Графики» — выбираем нашу группу, узел и график.
Настройка отправки
Выделяем и удаляем стандартные способы.
Теперь создаем новый способ с помощью кнопки «Создать способ оповещения».
Заполняем настройки нашего smtp-сервера.
Далее нужно заполнить данные пользователей, которым будет отправляться почта.
Переходим в «Администрирование» — «Пользователи». Выбираем своего пользователя: Admin — «Оповещения» — «Добавить» — в поле «Отправлять на» вводим свою почту — «Добавить».
Теперь создадим триггер, при срабатывании которого нужно будет выполнять отправку email-сообщения.
«Настройка» –> «Узлы сети» –> «Триггеры» –> «Создать триггер».
Добавим наш элемент.
«Имя» — вводим Ping fail.
«Важность» выставляем самостоятельно, здесь «Средняя».
«Добавить».
Создаем действие, которое будет отправлять нам оповещения при срабатывании триггеров.
«Настройка» — «Действия» — «Источник события» — «Триггеры» — «Создать действие».
Вводим имя действия, удаляем стандартное условие и добавляем своё, тип «Триггер» — «Выбрать».
В поле «Новое условие» нажимаем «Добавить» и переходим во вкладку «Операции».
Тут можно выбрать длительность, тему и текст сообщения. Оставим их по умолчанию.
Добавляем наше действие.«Длительность шага операции по умолчанию» — ставим 10 m.
«Отправлять пользователям» — выбираем нашего пользователя.
«Отправлять только через» — email.
Выключаем сеть для проверки.
Заходим в «Мониторинг» — «Проблемы» и видим нашу ошибку.
Проверяем почту и видим письмо о проблеме.
После получения письма и устранения проблемы можно в «Мониторинге проблем» нажать на «Нет» в столбце «Подтверждено» и подтвердить событие, поставив себе какую-нибудь заметку.
Zabbix-клиент
Выше показана малая часть работы с zabbix, теперь приступаем к самому интересному. Наша цель — поставить на контроль сервер, а именно нагрузку на центральный процессор.
Итак, приступим, с этим нам поможет zabbix-agent.
Его можно скачать с официального сайта Zabbix, выбрав zabbix-agent для windows.
После необходимо создать папку, в которой будет лежать наш агент, например: C:/Program Files/zabbix.
В скачанном файле перейдем в папку bin и в зависимости от разрядности вашей операционной системы перейдем в папку win32 или win64. Далее описаны действия для 64-битной ОС:
/zabbix_agents_3.4.6.win.zip/bin/win64 и с этой папки копируем 3 файла zabbix_agentd, zabbix_get и zabbix_sender в папку C:/Program Files/zabbix; далее копируем папку /zabbix_agents_3.4.6.win.zip/conf в папку C:/Program Files/zabbix.
Должно получиться вот так:
Теперь нужно настроить конфигурационный файл в C:/Program Files/zabbix/conf/. Открываем zabbix_agentd.win.conf и меняем следующие строки:
LogFile=c:/zabbix_agentd.log
меняем на
LogFile=C:/Program Files/zabbix/zabbix_agentd.log;# LogFileSize=1
меняем на
LogFileSize=100;# EnableRemoteCommands=0
меняем на
EnableRemoteCommands=1;Server=127.0.0.1
указываем IP-адрес нашего сервера, на котором стоит zabbix-server
Server=192.168.1.105;# ListenPort=10050
меняем на
ListenPort=10050;ServerActive=127.0.0.1
указываем IP-адрес нашего сервера, на котором стоит zabbix-server
ServerActive=192.168.1.105.
Сохраняем.
Далее нам нужно открыть командную строку в режиме администратора.
Устанавливаем службу:
"C:/Program files/zabbix/zabbix_agentd.exe" --config
"C:/Program files/zabbix/conf/zabbix_agentd.conf" –install.
Запускаем службу:
"C:/Program files/zabbix/zabbix_agentd.exe" --config
"C:/Program files/zabbix/conf/zabbix_agentd.conf" –start.
Теперь нужно создать правило для брандмауэра.
Заходим в «Панель управления» — «Система и безопасность» — «Брандмауэр защитника Windows» — «Дополнительные параметры» — «Правила для входящих подключений» — «Создать правило». Выбираем «Для программы» — «Далее» — «Путь программы». Указываем путь к zabbix_agentd — «Далее» — «Разрешить подключение» — «Далее». Оставляем галочки на всех профилях — «Далее» — «Имя» — zabbix-agent — «Далее».
Готово.
На сервере видеонаблюдения нужно скачать и установить репозиторий zabbix:
wget http://repo.zabbix.com/zabbix/3.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.4-1+xenial_all.deb
sudo dpkg -i zabbix-release_3.4-1+xenial_all.deb
sudo apt update
Затем установить клиент
sudo apt install zabbix-agent
Настройка конфигурационного файла точно такая же, как и для windows-версии, за исключением параметра LogFile, который трогать не нужно:
sudo mcedit /etc/zabbix/zabbix_agentd.conf
Перезапускаем zabbix-agent:
sudo /etc/init.d/zabbix-agent restart
Готово.
Для Linux можно воспользоваться командой «traceroute IP-адрес».
Теперь переходим в веб-интерфейс zabbix-сервера. Заходим в «Настройка» — «Узлы сети» — «Создать узел сети».
«Имя узла сети» — указываем имя нашего узла, например Oleg-PC.
«Видимое имя» — указываем понятное для нас имя, например Server Oleg-PC.
«Интерфейсы агента» — вводим IP-адрес нашего агента 192.168.1.100.
Переходим во вкладку «Шаблоны» и в поле «Соединить с новыми шаблонами» нажимаем «Выбрать».
Воспользуемся стандартным шаблоном.
Выбираем группу Templates/Operating Systems и выделяем шаблон Template OS Windows. Дважды нажимаем «Добавить».
Аналогично настраивается получение информации от сервера на базе Linux.
Так получаем отображение двух серверов.
Заходим в «Мониторинг» — «Графики», выбираем нашу группу Networks — узел сети server-ubuntu и смотрим, какие графики нам доступны.
На Windows-сервере смотрим так же.
У нас появились стандартные триггеры, по которым можно настроить действия. Например:
зайдем в «Настройка» — «Действия» — «Источник событий» — «Триггеры» — «Создать действие».
«Имя» — High load CPU.
Удалим стандартное условие и добавим новое.
В «Операции», так же как и раньше, настроим получение сообщений email.
Таким образом, мы будем получать уведомления при высокой загрузке ЦП на этом узле.
Полную инструкцию по агенту можно получить тут.
Шаблоны для мониторинга сервера
Стандартные шаблоны могут очень помочь сэкономить время. Но лучше все-таки пользоваться своими шаблонами.
Поместим нашу группу в шаблон и создадим в нем новый элемент данных.
«Имя» — меняем например на My Free memory.
«Ключ» – выбираем vm.memory.size[], вместо ставим available.
Посмотреть полный список режимов можно в официальной документации.«Тип информации» — «Числовой» (целое положительное).
«Единица измерения» — «B» (байты).
«Интервал обновления» — 10 m.
«Период хранения истории» — ставим количество дней, которое хотим хранить историю, например 3 d.
«Период хранения динамики изменений» — меняем на 10 d.
Нажимаем «Добавить», добавляем триггер.
«Имя» — Not enough free memory.
«Важность» — высокая.
В поле «Выражение» добавляем наш элемент данных, далее выбираем функцию «Последнее (самое новое) T значение < N» (значение N ставим «1000000000»).
Таким образом, когда количество свободной памяти будет меньше 1 Гб, сработает наш триггер.
После добавления элемента данных нажимаем «Добавить».
Присоединяем этот шаблон к нашему узлу сети, как делали это ранее.
Для наглядности создаем график, название для которого можно задать на русском языке, например «Свободная память».
Создаем действие с отправкой уведомления на почту.
Давайте рассмотрим запрос на получение отдельного кадра с камеры № 9 на нашем сервере.
Общий вид запроса (нумерация камер с 0)
http://localhost:9786/cameras/8/image
Переходим в меню «Настройка» — «Шаблоны». У шаблона нажмем на «Веб», далее «Создать веб-сценарий».
С полным описанием полей можно ознакомиться тут.
Заполняем поля:
«Имя» — Check camera office;
«Интервал обновления» — 5 m;
«Попыток» — 3;
«Агент» — Zabbix.
Переходим в раздел «Шаги» и добавляем шаг со следующими характеристиками:
«Имя» — придумываем имя шага;
«URL» — из спецификации берем запрос на получение кадра: 127.0.0.1:9786/cameras/8/image»;
«Следовать перенаправлениям» — снимаем галочку;
«Загружать только заголовки» — отмечаем;
«Время ожидания» — 15 s;
«Требуемые коды состояния» — 200.
Переходим в раздел «Аутентификация»:
«HTTP-аутентификация» — простая;
«Пользователь» и «Пароль» — данные для подключения к серверу «Линия».
Нажимаем «Добавить».
Переходим в «Мониторинг» — «Веб».
Видим наш веб-мониторинг.
Теперь в этом шаблоне создадим триггер.
«Имя» — указываем имя для нашего триггера.
«Выражение» — создаем выражение с элементом данных Failed step of scenario — Check camera office.
«Функция» — «Последнее (самое новое) T значение NOT N».
«N» — устанавливаем 200.
Нажимаем «Добавить».
Далее настроим действие с нашим триггером.
Выключим камеру и проверим почту.
«Линия Облако»
Также дополнительно мониторинг доступности сервера можно настроить с помощью бесплатного сервиса «Линия Облако». Для этого необходимо зарегистрировать сервер на базе программного обеспечения «Линия» в сервисе.
Для этого открываем «Наблюдательный пост», затем заходим в меню «Администрирование», во вкладке «Сеть» выбираем пункт «Сервисы».
Следующим шагом необходимо поставить галочку «Включить Dynamic DNS», ввести действующий адрес электронной почты, желаемое доменное имя и нажать кнопку «Зарегистрировать».
Далее на указанный ящик будет выслан код подтверждения, который необходимо ввести для завершения регистрации.
После ввода кода необходимо нажать кнопку «Подтвердить».
На этом процесс включения сервиса Dynamic DNS и регистрации доменного имени завершен.
Далее заходим в сервис «Линия Облако» и переходим во вкладку «Мониторинг». Здесь ставим галочку «Включить мониторинг» и вводим email, на который будут приходить письма. Также можно указать телефонный номер для отправки sms-сообщений (стоимость одного СМС составит 3 рубля).
Реакции
Мониторинг камер можно настроить с помощью реакций в самом программном обеспечении «Линия».
Для этого нужно зайти в «Администрирование» — «Реакции» — «Добавить реакцию».
Время — оставляем «Всегда».
Условие — «Пропал сигнал с камеры».
Действие — «Отправить электронное письмо».
Заполняем свою почту, выбираем, с какой камеры отправлять кадры, и ставим интервал в 5 минут.
Zabbix и видеонаблюдение
Итак, мы рассмотрели основные способы работы с системой мониторинга zabbix. Это далеко не все её возможности, но мы надеемся, что данная статья принесла вам пользу и была интересной. Надеемся, что с этими знаниями вы сможете самостоятельно продолжить настраивать мониторинг своей системы видеонаблюдения. Если остались вопросы, мы с удовольствием ответим на них в комментариях.
Также предлагаем поделиться в комментариях своим опытом. Какие инструменты для мониторинга сети/серверов/роутеров/сайтов вы используете?