8.3. Мониторинг используемых ресурсов

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

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

Кроме сбора и визуализации данных полезно, чтобы система реагировала на определенные события и обладала различными функциями уведомлений, позволяя оперативно реагировать и устранять неполадки.

Одним из таких программных продуктов является Zabbix. Для цели мониторинга ресурсов Arta Synergy важно, что Zabbix обладает удобным веб-интерфейсом, позволяющим получить доступ к настройке и отчетам с любого рабочего места, на котором установлен браузер.

ПО Zabbix состоит из четырех компонентов, каждый из которых играет свою роль:

Программные и аппаратные требования Zabbix можно посмотреть на официальном сайте.

8.3.1. Установка Zabbix

Примечание:

Для установки требуются права суперпользователя.

  1. Для создания аккаунта пользователя (в своей группе «zabbix») на системах Linux, выполнить:

# groupadd zabbix

# useradd -g zabbix zabbix

  1. Далее необходимо обновить информацию о репозиториях и обновить пакеты:

# apt-get update && apt-get upgrade

  1. Установить mysql сервер и веб-сервер apache (пароль для root mysql желательно оставить root).

# apt-get install mysql-server mysql-client apache2

  1. Затем перейти в директорию с временными файлами:

#cd /tmp

  1. Скачать и установить пакет, который добавит репозиторий для 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

  1. Добавить репозиторий zabbix:

# dpkg -i zabbix-release_3.2-1+wheezy_all.deb

  1. Обновить кэш менеджера пакетов и убедиться в том, что репозиторий для Zabbix добавился:

# apt-get update

# cat /etc/apt/sources.list.d/zabbix.list

  1. Zabbix-сервер будет хранить всю информацию в MySQL, поэтому следует установить пакет для Zabbix сервера с поддержкой MySQL:

# apt-get install zabbix-server-mysql zabbix-frontend-php

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

# apt-get -f install

Теперь нужно создать в MySQL базу данных. Для этого следует подключиться к MySQL:

  1. mysql -uroot -p

  2. После подключения создать базу данных с именем zabbix:

create database zabbix character set utf8 collate utf8_bin;

  1. дать полные права пользователю zabbix@localhost и установить для этого пользователя пароль:

grant all privileges on zabbix.* to zabbix@localhost identified by 'yourpassword';

quit;

  1. Затем необходимо зайти в директорию, где лежит скрипт, который создаст структуру для БД. Файл называется create.sql.gz:

# cd /usr/share/doc/zabbix-server-mysql**

  1. Запустить скрипт (выполнение скрипта может занять некоторое время):

sudo zcat create.sql.gz | mysql -uroot zabbix -p

  1. На этом этапе необходимо указать Zabbix-у, что нужно использовать локальную базу данных. Для этого необходимо открыть для редактирования файл zabbix_server.conf и раскомментировать параметр DBHost=localhost. Параметры DBName и DBUser будут активны, их трогать не нужно.

Также следует создать А-запись для zabbix сервера с отмеченной галочкой PTR.

  1. Запустить Zabbix-сервер и и посмотреть его статус:

# service apache2 start

# service apache2 status

  1. Затем необходимо открыть конфигурационный файл 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
  1. Перезагрузить веб-сервер:

# service apache2 restart

  1. Веб-интерфейс Zabbix доступен по адресу <host>/zabbix. Там требуется указать пароль, который был указан при создании БД в MySQL, порт оставить по умолчанию, имя хоста оставить либо по умолчанию, либо задать таким же, как у хоста. После проверки всех настроек открывается веб-интерфейс управления Zabbix.

Системный логин/пароль - Admin/zabbix Возможно возникновение ошибки, если какие-то пакеты не были установлены. В этом случае нужно установить недостающие пакеты и перезапустить веб-сервер:

# apt-get install <список_нужных_пакетов>

# service apache2 reload

8.3.2. Настройка Zabbix

8.3.2.1. Первый запуск

Шаг 1

Откройте URL Zabbix: http://<ip_или_имя_сервера>/zabbix в вашем браузере.

Вы должны увидеть первую страницу помощника установки веб-интерфейса.

Рисунок 8.7.


Шаг 2

Убедитесь, что все требования к программному обеспечению выполнены.

Рисунок 8.8.


Требование Минимальное значение Описание

Версия PHP

5.1.6

PHP опция memory_limit

128МБ

В php.ini: memory_limit = 128M

PHP опция post_max_size

16МБ

В php.ini: post_max_size = 16M

PHP опция upload_max_filesize

2МБ

В php.ini: upload_max_filesize = 2M

PHP опция max_execution_time

300 секунд

В php.ini: max_execution_time = 300

PHP опция max_input_time

300 секунд

В php.ini: max_input_time = 300

PHP опция session.auto_start

Должно быть отключено

В php.ini: session.auto_start = 0 Требуется, начиная с версии Zabbix 2.0.4

Поддержка баз данных

Одна из: IBM DB2, MySQL, Oracle, PostgreSQL, SQLite

Должен быть установлен один из пакетов: ibm_db2, mysql, oci8, pgsql, sqlite3

bcmath

php-bcmath

mbstring

php-mbstring

sockets

php-net-socket

Требуется для поддержки пользовательских скриптов

gd

2.0 или выше

php-gd

Расширение PHP GD должно поддерживать PNG изображения (--with-png-dir), JPEG (--with-jpeg-dir) изображения и FreeType 2 (--with-freetype-dir)

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, расширение php get text более не является обязательным для установки Zabbix, однако без него переводы будут недоступны

Шаг 3

Укажите детали для подключения к базе данных. В поле User указываем выбранное имя пользователя (zabbix), в поле Password вводим пароль, указанный при передаче прав на базу данных в mysql. Проверяем связь с базой, нажав кнопку «Test connection».

Рисунок 8.9.


Шаг 4

Введите подробные сведения о сервере Zabbix. Оставляем по умолчанию.

Рисунок 8.10.


Шаг 5

Просмотрите результат настроек.

Рисунок 8.11.


Шаг 6

Завершение установки.

Рисунок 8.12.


Шаг 7

Веб-интерфейс Zabbix готов

Рисунок 8.13.


Видим окно приветствия с запросом логина и пароля.

По умолчанию имя пользователя Admin, пароль zabbix.

8.3.2.2. Установка агента

Переходим на сервер, где установлена ИС 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:

  1. Находим секцию:

##### 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-адрес нашего «сервера».

  1. Затем находим секцию:

##### 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

8.3.2.3. Настройка сервера

Переходим в профиль:

Рисунок 8.14.


Необязательно: меняем язык на русский и сохраняем.

Рисунок 8.15.


Переходим к подключению нашего клиента. Выбираем «Настройка» - «Узлы сети».

Рисунок 8.16.


В открывшемся окне выбираем «Создать узел сети».

Рисунок 8.17.


Заполняем поля:

  • Имя узла сети — имя сервера клиента.

  • Видимое имя — можно не заполнять.

  • Группы — выбираем в правом списке «Zabbix servers», нажимаем кнопку « « ».

  • Интерфейсы агента — в поле IP-адрес заполняем IP-адрес клиента.

  • Подключение через — выбираем IP.

Остальные поля оставляем по умолчанию.

Можно использовать возможности DNS, для этого вводится DNS имя и переключается «Подключаться через» на DNS.

Рисунок 8.18.


Переходим на вкладку «Шаблоны»

Рисунок 8.19.


В поле «Соединить с новыми шаблонами» вводим agent и в появившемся списке выбираем «Template App Zabbix Agent», нажимаем «Добавить», и шаблон отображается в поле «Присоединенные шаблоны». Нажимаем «Сохранить» и видим сообщение «Узел сети добавлен», а в списке появилась запись с именем нашего клиента.

Проверяем связь с клиентом.

Рисунок 8.20.


Переходим на вкладку «Мониторинг» - «Последние данные».

Рисунок 8.21.


Рисунок 8.22.


В открывшемся окне выбираем «Узел сети» нашего клиента. В списке останутся только записи для нашего клиента. Здесь должно высветиться «Zabbix agent». Состояние агента обновится через минуту после добавления узла, остальные данные мы увидим через 10 минут.

На этом начальная настройка и проверка связи закончена.

8.3.3. Подключение новых шаблонов и элементов, настройка агента на эти элементы, настройка почтовых сообщений и тригеров для отправки на почту

8.3.3.1. Создание нового шаблона

Для создания нового шаблона заходим «Настройка» - «Шаблоны» - «Создать шаблон».

Рисунок 8.23.


В открывшемся окне заполняем поля:

  • Имя шаблона — любой текст по которому потом будем его искать;

  • Группы — перенести «Zabbix servers».

Нажимаем «Сохранить».

Рисунок 8.24.


Видим в списке наш шаблон. Открываем его.

Рисунок 8.25.


Теперь добавим «Группы элементов» в наш шаблон. Переходим в «Группы элементов данных».

Рисунок 8.26.


Создадим Группы контролируемых процессов. Нажимаем «Создать группу элементов данных» и вводим имя контролируемого процесса.

Рисунок 8.27.


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

Рисунок 8.28.


Например, можно создать следующие группы для облегчения поиска:

Рисунок 8.29.


Теперь в созданные группы надо добавить параметры контролируемых процессов на сервере или по-другому — Элементы данных.

Переходим на вкладку «Элементы данных» и нажимаем «Создать элемент данных».

Рисунок 8.30.


Открывается окно с настройками данных.

Заполняем поля:

  • Имя — название элемента данных, которое выводится в сводке.

  • Тип — вариант сбора информации, у нас будет использоваться Zabbix-агент.

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

  • Тип информации — формат данных получаемых по ключу. В зависимости от выбранного типа появляются или убираются поля дополнительной информации.

  • Интервал обновления — период в секундах, через который происходит запрос данных по ключу.

  • Группы элементов данных — указывается группа, к которой относятся полученные данные. В списке мы видим созданные нами ранее группы.

На рисунке вариант заполнения:

Рисунок 8.31.


Здесь мы создали элемент опрашивающий процент простоя центрального процессора и поместили его в группу 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

Рисунок 8.32.


Рисунок 8.33.


Следующие данные, которые нам необходимы — это данные 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 статус», как показано на рисунке:

Рисунок 8.34.


По аналогии создаем остальные элементы, столько, сколько нужно по тех. заданию. В данном случае - 15 элементов в 7 группах. Используемые ключи видно на рисунке:

Рисунок 8.35.


На этом создание шаблона и элементов закончено. Теперь подключим созданный шаблон к контролируемому серверу. Процедура такая же, как и при подключении шаблона агента, только в поле «Соединить с новым шаблоном» вводим название созданного нами шаблона.

Рисунок 8.36.


Для этого уведомления о сбоях есть возможность настроить сервер для отправки информации на Email. Порядок действий:

  1. Настроим почту самому серверу.

  2. Создадим пользователя.

  3. Настроим способ оповещений.

  4. Настроим проверку событий (триггер).

8.3.3.2. Настройка почты

Первым делом настроим сам сервер, чтобы он «знал», «от кого» ему отправлять почту.

Рисунок 8.37.


Переходим в «Администрирование» - «Способы оповещений», находим в списке «Email» и нажимаем его.

Рисунок 8.38.


Заполняем поля и нажимаем «Сохранить».

Рисунок 8.39.


Видим, что данные обновлены. Проверяем.

Переходим к созданию нового пользователя. Выбираем «Администрирование» - «Пользователи» и переходим к списку групп пользователей.

Рисунок 8.40.


В группе администраторов выбираем «Пользователи». В открывшемся окне нажимаем кнопку «Создать пользователя».

Рисунок 8.41.


Заполняем поля. Псевдоним будет использоваться как логин к системе. Пароль должен содержать не менее 8 знаков.

Рисунок 8.42.


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

Рисунок 8.43.


После заполнения первой вкладки, переходим на вторую («Оповещения»).

Рисунок 8.44.


Добавляем новое оповещение.

Рисунок 8.45.


Выбираем тип «Почта». «Отправлять на» — указываем, на какой адрес присылать почту.

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

Рисунок 8.46.


Настройка нового пользователя закончена. Нажимаем «Сохранить».

Возвращаемся к списку пользователей.

Рисунок 8.47.


Видим сообщение о добавлении пользователя и нашего нового пользователя в списке.

Права выставляются на группу, если надо исправить — заходим в группу и правим.

8.3.4. Настройка оповещений

Для настройки оповещений переходим «Настройка» - «Действия».

Рисунок 8.48.


Нажимаем «Создать действие».

Рисунок 8.49.


Прописываем только имя, остальное оставляем как есть и переходим на вкладку «Условия».

Добавляем условия, при которых отправляется письмо. Нам не нужен лишний спам, поэтому выбираем только важные триггеры.

Рисунок 8.50.


Создаем три условия, при которых важность триггера от средней и выше. Переходим на вкладку «Операции». Добавляем новую «операцию действия».

Рисунок 8.51.


Заполняем «Тип операции», группу получателей и вариант передачи по почте. Нажимаем «Добавить» и возвращаемся к окну настроек.

Рисунок 8.52.


Рисунок 8.53.


Видим созданную нами операцию.

На этом настройка действия закончена, сохраняем его. Видим, что все прошло нормально.

Рисунок 8.54.


8.3.4.1. Настройка триггера

Настроим триггер. Для этого переходим «Настройка» - «Шаблоны» - в списке выбираем наш шаблон — переключаемся на вкладку «Триггеры». Выбираем в правом углу окна «Создать триггер».

Рисунок 8.55.


Вводим имя и нажимаем «Добавить» новое выражение. Выражение — это условие, при котором сработает наш триггер. Создадим триггер, который будет срабатывать, если java от jboss остановился или запустилось более одного.

Рисунок 8.56.


Рисунок 8.57.


Переходим к выбору элемента данных. Выбираем группу «Zabbix servers». В «узел сети» (он же идет для выбора шаблонов) выбираем наш шаблон. В обновившемся списке выбираем «Количество java процессов от jboss».

Рисунок 8.58.


Окно выбора закрывается и мы возвращаемся к настройкам выражения для триггера. В поле «функция» выбираем условие, при котором сработает триггер. В нашем случае проверяем последнее полученное значение с условием, что оно не равно N. В поле «N» вводим значение «1». Настройка выражения закончена, сохраняем нажав кнопку «Вставить».

Рисунок 8.59.


Рисунок 8.60.


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

Видим сообщение о добавлении триггера и наш триггер в списке.

Рисунок 8.61.


Ниже приведен вариант с несколькими выражениями. В первом варианте с отключенным конструктором выражений, во втором со включенным.

Рисунок 8.62.


Рисунок 8.63.