При большом количестве хостов и сервисов диагностировать проблему на том или ином узле может быть достаточно проблематично. Кроме того, нужно стремиться к такому качеству контроля и управления сетью, когда администратор выявляет и устраняет проблему раньше, чем ее почувствует простой пользователь.
Сбои в работе сети могут быть вызваны совершенно разными причинами: сбой в работе оборудования, потери пакетов на участке сети, перегрузка процессора устройства, слишком высокая загруженность канала связи и т.д.
Кроме сбора и визуализации данных полезно, чтобы система реагировала на определенные события и обладала различными функциями уведомлений, позволяя оперативно реагировать и устранять неполадки.
Одним из таких программных продуктов является Zabbix. Для цели мониторинга ресурсов Arta Synergy важно, что Zabbix обладает удобным веб-интерфейсом, позволяющим получить доступ к настройке и отчетам с любого рабочего места, на котором установлен браузер.
ПО Zabbix состоит из четырех компонентов, каждый из которых играет свою роль:
Zabbix-сервер. Это ядро системы. Сервер собирает информацию (самостоятельно либо с помощью агентов), хранит и обрабатывает ее.
Zabbix-агент. Это программа, предназначенная для сбора информации о той системе, на которой запущена. Это могут быть серверы, рабочие станции и т.д. Агент может собирать множество различных сведений о текущем состоянии системы (загрузка процессора, памяти и многое другое). Кроме того, существует возможность добавить самостоятельно любой нужный параметр, который не был изначально предусмотрен в системе.
Zabbix-прокси. Прокси собирает данные с различных хостов и затем передает их на Zabbix-сервер. Его удобно использовать в тех случаях, когда, например, контролируемая сеть находится за файерволом либо когда необходимо уменьшить нагрузку на центральный сервер, передав часть функций прокси-серверу.
Веб-интерфейс. Это та часть системы, с помощью которой осуществляется конфигурирование и доступ к данным мониторинга, что очень удобно, поскольку все, что необходимо иметь на рабочем месте, — это веб-браузер, и нет необходимости устанавливать какое-либо дополнительное ПО.
Программные и аппаратные требования Zabbix можно посмотреть на официальном сайте.
Примечание:
Для установки требуются права суперпользователя.
Для создания аккаунта пользователя (в своей группе «zabbix») на системах Linux, выполнить:
# groupadd zabbix
# useradd -g zabbix zabbix
Далее необходимо обновить информацию о репозиториях и обновить пакеты:
# apt-get update && apt-get upgrade
Установить mysql сервер и веб-сервер apache (пароль для root mysql желательно оставить root).
# apt-get install mysql-server mysql-client apache2
Затем перейти в директорию с временными файлами:
#cd /tmp
Скачать и установить пакет, который добавит репозиторий для Zabbix сервера, например, для Debian Wheezy необходимо выбрать версию «wheezy». Пакет нужно скачать с официального сайта.
# wget http://repo.zabbix.com/zabbix/3.2/debian/pool/main/z/zabbix-release/zabbix-release_3.2-1+wheezy_all.deb
Добавить репозиторий zabbix:
# dpkg -i zabbix-release_3.2-1+wheezy_all.deb
Обновить кэш менеджера пакетов и убедиться в том, что репозиторий для Zabbix добавился:
# apt-get update
# cat /etc/apt/sources.list.d/zabbix.list
Zabbix-сервер будет хранить всю информацию в MySQL, поэтому следует установить пакет для Zabbix сервера с поддержкой MySQL:
# apt-get install zabbix-server-mysql zabbix-frontend-php
Встречаются случаи, когда возникает ошибка с зависимостями. Чтобы этого избежать, нужно запустить команду исправления зависимостей:
# apt-get -f install
Теперь нужно создать в MySQL базу данных. Для этого следует подключиться к MySQL:
mysql -uroot -p
После подключения создать базу данных с именем zabbix:
create database zabbix character set utf8 collate utf8_bin;
дать полные права пользователю
zabbix@localhost
и установить для этого
пользователя пароль:
grant all privileges on zabbix.* to zabbix@localhost identified by 'yourpassword';
quit;
Затем необходимо зайти в директорию, где лежит скрипт,
который создаст структуру для БД. Файл называется
create.sql.gz
:
# cd /usr/share/doc/zabbix-server-mysql*
*
Запустить скрипт (выполнение скрипта может занять некоторое время):
sudo zcat create.sql.gz | mysql -uroot zabbix -p
На этом этапе необходимо указать Zabbix-у, что нужно
использовать локальную базу данных. Для этого необходимо
открыть для редактирования файл
zabbix_server.conf
и раскомментировать
параметр DBHost=localhost
. Параметры
DBName и
DBUser будут активны, их
трогать не нужно.
Также следует создать А-запись для zabbix сервера с отмеченной галочкой PTR.
Запустить Zabbix-сервер и и посмотреть его статус:
# service apache2 start
# service apache2 status
Затем необходимо открыть конфигурационный файл apache
/etc/php5/apache2/php.ini
. В секциях
<IfModule mod_php5.c>
и
<IfModule mod_php 7.c>
необходимо
отредактировать следующие строки:
post_max_size = 16M max_execution_time = 300 max_input_time = 300 date.timezone = Asia/Almaty
Перезагрузить веб-сервер:
# service apache2 restart
Веб-интерфейс Zabbix доступен по адресу
<host>/zabbix
. Там требуется
указать пароль, который был указан при создании БД в MySQL,
порт оставить по умолчанию, имя хоста оставить либо по
умолчанию, либо задать таким же, как у хоста. После проверки
всех настроек открывается веб-интерфейс управления Zabbix.
Системный логин/пароль - Admin/zabbix Возможно возникновение ошибки, если какие-то пакеты не были установлены. В этом случае нужно установить недостающие пакеты и перезапустить веб-сервер:
# apt-get install <список_нужных_пакетов>
# service apache2 reload
Шаг 1
Откройте URL Zabbix:
http://<ip_или_имя_сервера>/zabbix
в
вашем браузере.
Вы должны увидеть первую страницу помощника установки веб-интерфейса.
Шаг 2
Убедитесь, что все требования к программному обеспечению выполнены.
Требование | Минимальное значение | Описание |
---|---|---|
Версия PHP |
5.1.6 | |
PHP опция memory_limit |
128МБ |
В php.ini: |
PHP опция post_max_size |
16МБ |
В php.ini: |
PHP опция upload_max_filesize |
2МБ |
В php.ini:
|
PHP опция max_execution_time |
300 секунд |
В php.ini:
|
PHP опция max_input_time |
300 секунд |
В php.ini: |
PHP опция session.auto_start |
Должно быть отключено |
В php.ini: |
Поддержка баз данных |
Одна из: IBM DB2, MySQL, Oracle, PostgreSQL, SQLite |
Должен быть установлен один из пакетов:
|
bcmath |
php-bcmath | |
mbstring |
php-mbstring | |
sockets |
php-net-socket Требуется для поддержки пользовательских скриптов | |
gd |
2.0 или выше |
php-gd
Расширение PHP GD должно поддерживать PNG
изображения ( |
libxml |
2.6.15 |
php-xml или php5-dom |
xmlwriter |
php-xmlwriter | |
xmlreader |
php-xmlreader | |
ctype |
php-ctype | |
session |
php-session | |
gettext |
php-gettext
Начиная с с Zabbix 2.2.1, расширение
|
Шаг 3
Укажите детали для подключения к базе данных. В поле User указываем выбранное имя пользователя (zabbix), в поле Password вводим пароль, указанный при передаче прав на базу данных в mysql. Проверяем связь с базой, нажав кнопку «Test connection».
Шаг 4
Введите подробные сведения о сервере Zabbix. Оставляем по умолчанию.
Шаг 5
Просмотрите результат настроек.
Шаг 6
Завершение установки.
Шаг 7
Веб-интерфейс Zabbix готов
Видим окно приветствия с запросом логина и пароля.
По умолчанию имя пользователя Admin, пароль zabbix.
Переходим на сервер, где установлена ИС Synergy. Он будет нашим «клиентом».
# cd /tmp # wget http://repo.zabbix.com/zabbix/3.2/debian/pool/main/z/zabbix/zabbix-agent_2.2.2-1+wheezy_amd64.deb
Для wget
требуется указать выбранную версию
агента.
Устанавливаем zabbix-agent:
# dpkg -i zabbix-agent_2.2.2-1+wheezy_amd64.deb
Редактируем файл настроек
/etc/zabbix/zabbix_agentd.conf
:
Находим секцию:
##### Passive checks related ### Option: Server # List of comma delimited IP addresses (or hostnames) of Zabbix servers. # Incoming connections will be accepted only from the hosts listed here. # If IPv6 support is enabled then '127.0.0.1', '::127.0.0.1', '::ffff:127.0.0.1' are treated equally. # # Mandatory: no # Default: # Server= Server=192.168.7.114,192.168.2.251
Дописываем в значение Server
IP-адрес
нашего «сервера».
Затем находим секцию:
##### Active checks related ### Option: ServerActive # List of comma delimited IP:port (or hostname:port) pairs of Zabbix servers for active checks. # If port is not specified, default port is used. # IPv6 addresses must be enclosed in square brackets if port for that host is specified. # If port is not specified, square brackets for IPv6 addresses are optional. # If this parameter is not specified, active checks are disabled. # Example: ServerActive=127.0.0.1:20051,zabbix.domain,[::1]:30051,::1,[12fc::1] # # Mandatory: no # Default: # ServerActive= ServerActive=192.168.7.114.192.168.2.251
Тоже дописываем в значение ServerActive
IP-адрес нашего «сервера». Сохраняем и выходим.
На этом стандартная настройка закончена, дополнительные функции будем прописывать позже.
Перезапускаем агент:
# /etc/init.d/zabbix-agent restart
Переходим в профиль:
Необязательно: меняем язык на русский и сохраняем.
Переходим к подключению нашего клиента. Выбираем «Настройка» - «Узлы сети».
В открывшемся окне выбираем «Создать узел сети».
Заполняем поля:
Имя узла сети — имя сервера клиента.
Видимое имя — можно не заполнять.
Группы — выбираем в правом списке «Zabbix servers», нажимаем кнопку « « ».
Интерфейсы агента — в поле IP-адрес заполняем IP-адрес клиента.
Подключение через — выбираем IP.
Остальные поля оставляем по умолчанию.
Можно использовать возможности DNS, для этого вводится DNS имя и переключается «Подключаться через» на DNS.
Переходим на вкладку «Шаблоны»
В поле «Соединить с новыми шаблонами» вводим agent и в появившемся списке выбираем «Template App Zabbix Agent», нажимаем «Добавить», и шаблон отображается в поле «Присоединенные шаблоны». Нажимаем «Сохранить» и видим сообщение «Узел сети добавлен», а в списке появилась запись с именем нашего клиента.
Проверяем связь с клиентом.
Переходим на вкладку «Мониторинг» - «Последние данные».
В открывшемся окне выбираем «Узел сети» нашего клиента. В списке останутся только записи для нашего клиента. Здесь должно высветиться «Zabbix agent». Состояние агента обновится через минуту после добавления узла, остальные данные мы увидим через 10 минут.
На этом начальная настройка и проверка связи закончена.
Для создания нового шаблона заходим «Настройка» - «Шаблоны» - «Создать шаблон».
В открывшемся окне заполняем поля:
Имя шаблона — любой текст по которому потом будем его искать;
Группы — перенести «Zabbix servers».
Нажимаем «Сохранить».
Видим в списке наш шаблон. Открываем его.
Теперь добавим «Группы элементов» в наш шаблон. Переходим в «Группы элементов данных».
Создадим Группы контролируемых процессов. Нажимаем «Создать группу элементов данных» и вводим имя контролируемого процесса.
В поле имя вводим название группы и сохраняем его. Группы нужны для быстрого поиска контролируемых параметров. Если в разделении нет необходимости, можно создать одну группу и подключить в нее все элементы данных.
Например, можно создать следующие группы для облегчения поиска:
Теперь в созданные группы надо добавить параметры контролируемых процессов на сервере или по-другому — Элементы данных.
Переходим на вкладку «Элементы данных» и нажимаем «Создать элемент данных».
Открывается окно с настройками данных.
Заполняем поля:
Имя — название элемента данных, которое выводится в сводке.
Тип — вариант сбора информации, у нас будет использоваться Zabbix-агент.
Ключ — команда контролируемого процесса. Подробная информация на сайте, здесь приведены только те ключи, которые необходимы нам по техническому заданию. Посмотреть варианты можно в готовых шаблонах, которые устанавливаются по умолчанию.
Тип информации — формат данных получаемых по ключу. В зависимости от выбранного типа появляются или убираются поля дополнительной информации.
Интервал обновления — период в секундах, через который происходит запрос данных по ключу.
Группы элементов данных — указывается группа, к которой относятся полученные данные. В списке мы видим созданные нами ранее группы.
На рисунке вариант заполнения:
Здесь мы создали элемент опрашивающий процент простоя центрального процессора и поместили его в группу CPU.
Далее приведены два варианта со специфическими ключами.
В первом варианте мы делаем опрос титульной страницы нашего сайта и выводим время, потраченное на загрузку этой страницы. Так мы контролируем доступность ИС.
Во втором варианте мы будем контролировать количество
запущенных процессов JAVA от пользователя JBOSS. Так как это
специфические параметры, в стандартных средствах их нет, для
этого мы воспользуемся возможностью агента собирать данные,
заданные пользователем. Для этого в конфигурационный файл
агента /etc/zabbix/zabbix_agentd.conf
добавим (в конец списка) следующую строчку:
UserParameter=java_jboss,ps -u jboss | grep 'java' | wc -l
Здесь мы определяем новый «пользовательский параметр» или
«ключ». Создаем ключ java_jboss
, в котором
будет результат выполнения стандартной команды линукс. Мы
проверим командой PS, сколько процессов запущено от
пользователя jboss (ps -u jboss
), в
полученном результате оставим только процессы содержащие слова
java (grep 'java'
) и выведем результат в
количественном виде (wc -l
). Теперь у нас
есть еще один «ключ», который мы применили во втором варианте.
После изменений в конфигурации перезапускаем агент командой:
# service zabbix-agent restart
Следующие данные, которые нам необходимы — это данные MySql
сервера. Запросы описаны в файле
/etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
:
# For all the following commands HOME should be set to the directory that has .my.cnf file with password information. # Flexible parameter to grab global variables. On the frontend side, use keys like mysql.status[Com_insert]. # Key syntax is mysql.status[variable]. UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/var/lib/zabbix mysql -N | aw$ # Flexible parameter to determine database or table size. On the frontend side, use keys like mysql.size[zabbix,histor$ # Key syntax is mysql.size[<database>,<table>,<type>]. # Database may be a database name or "all". Default is "all". # Table may be a table name or "all". Default is "all". # Type may be "data", "index", "free" or "both". Both is a sum of data and index. Default is "both". # Database is mandatory if a table is specified. Type may be specified always. # Returns value in bytes. # 'sum' on data_length or index_length alone needed when we are getting this information for whole database instead of$ UserParameter=mysql.size[*],echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) ech$ UserParameter=mysql.ping,HOME=/var/lib/zabbix mysqladmin ping | grep -c alive UserParameter=mysql.version,mysql -V
Если этого файла нет — необходимо его создать.
В первой строке указано, что логин и пароль берутся из файла
.my.cnf
, расположенного по пути, указанном
в переменной HOME. Создадим этот файл, выполнив команду
# nano /var/lib/zabbix/.my.cnf
, и добавим в
него следующее содержание:
[client] host = 127.0.0.1 user = root password = root
Сохраняем (Ctrl+O) и выходим (Ctrl+X).
Даем права на этот файл:
# chown zabbix:zabbix /var/lib/zabbix/
Перезапустим агента:
# service zabbix-agent restart
Теперь проверим статус MySql при помощи ключа
mysql.ping
, для этого создадим элемент с
именем «MySql статус», как показано на рисунке:
По аналогии создаем остальные элементы, столько, сколько нужно по тех. заданию. В данном случае - 15 элементов в 7 группах. Используемые ключи видно на рисунке:
На этом создание шаблона и элементов закончено. Теперь подключим созданный шаблон к контролируемому серверу. Процедура такая же, как и при подключении шаблона агента, только в поле «Соединить с новым шаблоном» вводим название созданного нами шаблона.
Для этого уведомления о сбоях есть возможность настроить сервер для отправки информации на Email. Порядок действий:
Настроим почту самому серверу.
Создадим пользователя.
Настроим способ оповещений.
Настроим проверку событий (триггер).
Первым делом настроим сам сервер, чтобы он «знал», «от кого» ему отправлять почту.
Переходим в «Администрирование» - «Способы оповещений», находим в списке «Email» и нажимаем его.
Заполняем поля и нажимаем «Сохранить».
Видим, что данные обновлены. Проверяем.
Переходим к созданию нового пользователя. Выбираем «Администрирование» - «Пользователи» и переходим к списку групп пользователей.
В группе администраторов выбираем «Пользователи». В открывшемся окне нажимаем кнопку «Создать пользователя».
Заполняем поля. Псевдоним будет использоваться как логин к системе. Пароль должен содержать не менее 8 знаков.
При добавлении в группу нажимаем кнопку «Добавить», и открывается окно, показанное ниже.
После заполнения первой вкладки, переходим на вторую («Оповещения»).
Добавляем новое оповещение.
Выбираем тип «Почта». «Отправлять на» — указываем, на какой адрес присылать почту.
Остальные поля на ваше усмотрение. Нажимаем «Добавить» и возвращаемся на вкладку «Оповещения».
Настройка нового пользователя закончена. Нажимаем «Сохранить».
Возвращаемся к списку пользователей.
Видим сообщение о добавлении пользователя и нашего нового пользователя в списке.
Права выставляются на группу, если надо исправить — заходим в группу и правим.
Для настройки оповещений переходим «Настройка» - «Действия».
Нажимаем «Создать действие».
Прописываем только имя, остальное оставляем как есть и переходим на вкладку «Условия».
Добавляем условия, при которых отправляется письмо. Нам не нужен лишний спам, поэтому выбираем только важные триггеры.
Создаем три условия, при которых важность триггера от средней и выше. Переходим на вкладку «Операции». Добавляем новую «операцию действия».
Заполняем «Тип операции», группу получателей и вариант передачи по почте. Нажимаем «Добавить» и возвращаемся к окну настроек.
Видим созданную нами операцию.
На этом настройка действия закончена, сохраняем его. Видим, что все прошло нормально.
Настроим триггер. Для этого переходим «Настройка» - «Шаблоны» - в списке выбираем наш шаблон — переключаемся на вкладку «Триггеры». Выбираем в правом углу окна «Создать триггер».
Вводим имя и нажимаем «Добавить» новое выражение. Выражение — это условие, при котором сработает наш триггер. Создадим триггер, который будет срабатывать, если java от jboss остановился или запустилось более одного.
Переходим к выбору элемента данных. Выбираем группу «Zabbix servers». В «узел сети» (он же идет для выбора шаблонов) выбираем наш шаблон. В обновившемся списке выбираем «Количество java процессов от jboss».
Окно выбора закрывается и мы возвращаемся к настройкам выражения для триггера. В поле «функция» выбираем условие, при котором сработает триггер. В нашем случае проверяем последнее полученное значение с условием, что оно не равно N. В поле «N» вводим значение «1». Настройка выражения закончена, сохраняем нажав кнопку «Вставить».
Видим в списке «Выражение» созданное выражение, добавляем комментарии, выставляем важность и сохраняем.
Видим сообщение о добавлении триггера и наш триггер в списке.
Ниже приведен вариант с несколькими выражениями. В первом варианте с отключенным конструктором выражений, во втором со включенным.