Введение
Zabbix — свободная система мониторинга и отслеживания статусов разнообразных сервисов компьютерной сети, серверов и сетевого оборудования. Zabbix-сервер — ядро системы, которое дистанционно контролирует сетевые сервисы и является хранилищем, в котором содержатся все конфигурационные, статистические и оперативные данные. Он является тем субъектом в программном обеспечении Zabbix, который оповещает администраторов о проблемах с контролируемым оборудованием.
В статье приведена установка и настройка серверной части системы мониторинга Zabbix на Calculate Scratch Server с веб-интерфейсом и агентом.
Подготовка сервера к установке
Начинаем традиционно с подготовки рабочего окружения. Первым делом вам необходимо установить и настроить сервер CentOS 7. Дальше нам нужно настроить web сервер для работы интерфейса управления. У меня есть подробный материал на тему настройки web сервера на centos 7, можете ознакомиться с ним и настроить внимательно и осмысленно. Далее я буду просто приводить команды установки, без пояснений. В этой статье я буду делать стандартную установку Zabbix на традиционный веб сервер apache + php. Если вы хотите, чтобы ваш заббикс работал на веб сервере nginx + php-fpm, читайте отдельный материал по установке zabbix на nginx и php-fpm.
# yum -y update
Отключаем SElinux. Любителям с ним повозиться, дальше можно не читать. Не люблю споров на тему SElinux. Каждый сам решает для себя в конкретной ситуации, нужен он ему на сервере или нет. Я не вижу смысла с ним заморачиваться на сервере мониторинга в локальной сети.
# mcedit /etc/sysconfig/selinux
Редактируем строку:
SELINUX=disabled
и перезагружаемся.
Теперь установим mariadb. Ее необходимо ставить отдельно, почему-то она не устанавливается как необходимая зависимость при установке самого сервере zabbix.
На всякий случай упомяну для тех, кто не знает, что такое mariadb и почему мы ставим ее, а не mysql. Mariadb — ответвление mysql. Они полностью совместимы, возможен в любой момент переход с одной субд на другую и обратно. Есть информация, что mariadb пошустрее работает mysql и люди потихоньку перебираются на нее. Разработчики CentOS начиная с версии 7 предлагают ее как сервер баз данных по-умолчанию.
# yum install -y mariadb mariadb-server
Запускаем mariadb и добавляем ее в автозагрузку:
# systemctl start mariadb # systemctl enable mariadb.service
Отрабатываем скрипт первоначальной настройки mysql:
# /usr/bin/mysql_secure_installation
Все подготовительные работы выполнены, двигаемся дальше.
Настройка мониторинга
Добавим узел сети. Перейдите во вкладку «Configiraton» — «Hosts». В правом верхнем углу нажмите на «Create host» и заполните поля вкладок Host и Template
Готовых шаблонов (Template) великое множество. Ознакомитесь с ними, и выберите те, которые отвечают вашим требованиям. В качестве примера добавлено буквально пару шаблонов для демонстрации работы. Руководство будет не полным, если мы что-нибудь специально не поломаем, и не посмотрим результат. Давайте остановим наш VPS
…и запустим его:
Zabbix позволяет создавать комплексные экраны, графики, диаграммы и анализировать их данные за выбранные промежутки времени.
В рамках одной статьи невозможно затронуть все возможности системы мониторинга Zabbix, она получится слишком обзорной, возможности Zabbix велики. Мы рекомендуем обратиться к официальной документации, чтобы ознакомиться с возможностями и найти ответы на вопросы, которые здесь не рассмотрены
Настройка мониторинга репликации mysql на zabbix server
Здесь все как обычно. Скачиваем шаблон mysql-slave.xml импортируем его на сервер. Для этого идем в Configuration -> Templates и нажимаем Import:
Выбираем скачанный шаблон и жмем Import:
Дальше отправляемся к списку хостов в Configuration -> Hosts, выбираем нужный хост и назначаем ему новый шаблон:
Жмем Update для применения настроек. Ждем несколько минут и идем проверять поступление новых данных репликации mysql. Открываем Monitoring -> Latest Data, настраиваем фильтр и проверяем значения:
В данном случае мы видим, что значение Seconds Behind Master = 0, отставания от мастера нет. Два других значения равны единице, это значит, что наш скрипт проверки состояния репликации получает статусы Slave_IO_Running и Slave_SQL_Running равные Yes и поэтому возвращает значения 1. То есть наша репликация работает в штатном режиме, все в порядке.
Алексей Владышев ( alexvl )
Zabbix
- это уровень железа – что-то произошло с какой-то железякой, мы тут же об этом узнаем,
- уровень операционной системы,
- сеть, в основном это мониторинг через SNMP,
- виртуальный уровень, т.е. «из коробки» мы предлагаем, например, мониторинг WMware инфраструктуры, vCenter и vSphere,
- дальше идет middleware,
- бизнес-приложения.
это работает быстро, по крайней мере, быстрее, т.к
сервер не должен заниматься постоянным опрашиванием устройств, сами устройства отправляют информацию,
более безопасно с точки зрения агента, потому что агент не должен слушать никакие TCP-соединения или сетевые соединения.
небольшое преимущество, то, что нам сегодня важно – в активном режиме есть буферизация. Если Zabbix-сервер недоступен по каким-то причинам, допустим, мы делаем апгрейд Zabbix-сервера, у нас downtime несколько минут, то данные будут накапливаться на стороне агента
Как только мы сервер запускаем, данные тут же отправятся на сторону сервера, и мы их сможем обрабатывать.
История. Мы основываем свое решение не только на real-time мониторинге, на оперативной информации, которую мы только-только получили, но и смотрим в историю. В историю нужно обязательно смотреть
Это важно.
Отсутствие проблемы – не есть ее решение. Я привел несколько примеров, но на самом деле, вы многие используете Zabbix, посмотрите критическим взглядом на те триггеры, которые у вас сейчас есть
Комбинация анализа истории с гистерезисом, с разными условиями для проблемы и для выхода из проблемы – она на самом деле творит чудеса. Получается такое очень-очень умное обнаружение проблем. Нужно обязательно использовать эту функциональность.
С аномалиями, опять же, мне трудно сказать, принесет ли это какую-то практическую пользу, но, по крайней мере, стоит попробовать. Что касается аномалии, в Zabbix 3.0, возможно, мы реализуем baseline monitoring. Что это означает? Baseline – это некая норма, т.е. этот baseline будет высчитываться из трендов. Если сейчас все триггеры работают с историей, то для baseline мониторинга мы будем брать информацию из трендов, из тенденций, и будет возможность, например, сравнивать поведение системы в рабочее время на прошлой неделе с поведением системы на этой неделе или сегодня. Т.е. мы что-то будем брать за основу, за нормальную ситуацию и сравнивать с тем, что есть сейчас. Это такой статистический анализ, основанный на тенденциях, на трендах.
Автоматическое решение проблем. Наверное, у каждого из вас, если вы используете систему мониторинга, есть такой класс проблем, про который вы знаете, что эта проблема произойдет рано или поздно, и с этим ничего нельзя сделать. Я привел примеры каких-то случайных падений операционной системы – мы знаем, что такая проблема есть, она может произойти в любое время, соответственно, автоматическое решение проблем – это хорошее решение.
И эскалируем проблемы. Отличный стимул для администраторов, если мы делаем эскалирование. Эскалирование не означает, что вот есть администратор, начальник, начальник начальника, начальник начальника начальника… Эскалирование – это означает, что мы сможем среагировать на проблему сразу одним способом, дальше попытаться, может быть, автоматически решить ее другим способом, и дальше, может быть, через 5 минут, если проблема все еще существует, попытаться решить ее следующим способом. Сначала мы перезапускаем сервис, проблема все еще существует, скажем, exchange не завелся с первого раза, что мы тогда можем сделать? Мы можем перезапустить сервер на физическом уровне и тогда уже смотреть, что произойдет.
Установка и настройка сервера Zabbix
Переходим к установке самого Zabbix сервера.
Установка
Сначала установим репозиторий последней версии Zabbix. Для этого переходим на страницу https://repo.zabbix.com/zabbix/ и переходим в раздел с самой последней версией пакета — затем переходим в ubuntu/pool/main/z/zabbix-release/ — копируем ссылку на последнюю версию релиза:
* в моем случае это ссылка на https://repo.zabbix.com/zabbix/4.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.2-1+bionic_all.deb. Чтобы понять, какое кодовое название нашей системы, вводим команду cat /etc/lsb-release | grep DISTRIB_CODENAME.
Скачиваем файл репозитория командой:
wget https://repo.zabbix.com/zabbix/4.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.2-1%2Bbionic_all.deb
Устанавливаем его:
dpkg -i zabbix-release_4.2-1+bionic_all.deb
Обновляем списки пакетов:
apt-get update
Устанавливаем сервер, вводя команду:
apt-get install zabbix-server-mysql zabbix-frontend-php zabbix-get
Настройка базы данных
Входим в оболочку ввода sql-команд:
mysql -uroot -p
Создаем базу данных:
> CREATE DATABASE zabbix DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_bin;
* мы создали базу zabbix.
Создаем пользователя для подключения и работы с созданной базой:
> GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost IDENTIFIED BY ‘zabbixpassword’;
* в данном примете мы создали пользователя zabbix с доступом к базе zabbix и паролем zabbixpassword.
Выходим из sql-оболочки:
> \q
В составе zabbix идет готовая схема для СУБД MySQL/MariaDB или postgreSQL. В нашем случае, нам нужен MySQL.
Для применения схемы переходим в каталог:
cd /usr/share/doc/zabbix-server-mysql/
Распаковываем архив с дампом базы:
gunzip create.sql.gz
Восстанавливаем базу их дампа:
mysql -v -u root -p zabbix < create.sql
* после ввода команды система запросит пароль. Необходимо ввести пароль, который мы задали после установки mariadb.
Настройка zabbix
Открываем конфигурационный файл zabbix:
vi /etc/zabbix/zabbix_server.conf
Добавляем строку:
DBPassword=zabbixpassword
* мы настраиваем портал на подключение к базе с паролем zabbixpassword, который задали при создании базы для zabbix.
И проверяем следующие строки:
…
DBName=zabbix
…
DBUser=zabbix
…
* имя базы и пользователя должны быть zabbix (как мы и создали в mariadb).
Создаем каталог для инклудов конфигурационных файлов (по какой-то причине, он может быть не создан при установке):
mkdir /etc/zabbix/zabbix_server.conf.d
Также создаем каталог для логов и задаем владельца:
mkdir /var/log/zabbix-server
chown zabbix:zabbix /var/log/zabbix-server
Запуск zabbix-server
Разрешаем автозапуск сервера мониторинга:
systemctl enable zabbix-server
После запускаем сам сервер zabbix:
systemctl start zabbix-server
Настройка nginx
При установке zabbix-web файлы портала копируются в каталог /usr/share/zabbix. Наш веб-сервер работает с каталогом /var/www/html.
Меняем это — открываем конфигурационный файл nginx:
vi /etc/nginx/sites-enabled/default
Редактируем параметры root и set $root_path:
…
root /usr/share/zabbix;
…
set $root_path /usr/share/zabbix;
…
Перезапускаем nginx:
systemctl restart nginx
Установка портала для управления Zabbix
В следующем окне внимательно смотрим на результаты проверки нашего веб-сервера — справа мы должны увидеть все OK. Если это не так, проверяем настройки и исправляем предупреждения и ошибки, после перезапускаем страницу F5 для повторной проверки настроек.
Когда все результаты будут OK, кликаем по Next Step:
В следующем окне мы оставляем настройки подключения к базе как есть — дополнительно прописываем пароль, который задали при создании пользователя zabbix. После нажимаем Next Step:
* в нашем случае, пароль был zabbixpassword;
В следующем окне оставляем все как есть:
… и нажимаем Next Step.
В последнем окне мы проверяем настройки и кликаем Next Step.
Установка завершена — нажимаем Finish:
В открывшемся окне вводим логин Admin и пароль zabbix (по умолчанию) — откроется окно со сводной информацией по мониторингу:
Как это работает
- Zabbix-сервер получает через zabbix-агенты информацию о пакетах и об операционной системе всех серверов в инфраструктуре.
- Плагин (с помощью Zabbix API) получает ранее собранный Zabbix-сервером отчет об ОС. Непосредственно с серверов плагин ничего не получает. И на данном этапе не треует с ними прямого контакта.
- Обработав полученную от Zabbix информацию плагин передает её в Vulners. От которого в ответ получает список найденных уязвимостей, их критичность и способ устранения.
- Плагин обрабатывает полученные данные, агрегирует их для формирования статистики и формирует пакеты данных для передачи в Zabbix.
- Плагин пушит в Zabbix данные в необходимом системе мониторинга формате. Делает он это с помощью утилиты zabbix-sender. После этого вы уже имеете в мониторинге все о найденных уязвимостях, которые отображаются на показанном ранее дашборде.
- После подтверждения проблемы выполняется удаленная команда, которая передает плагину:
- Имя того, кто её инициировал
- Fix-команду исправления уязвимости
- Cписок серверов
- Получив все это Zabbix Threat Control:
- Проверяет что команда на исправление инициирована тем, кем нужно. От того, кого не нужно — он команду не принимает
- Выполняет переданную ему команду на нужном количестве серверов.
По умолчанию плагин передает fix-команду на уязвимые сервера с помощью утилиты zabbix-get, обращаясь к Zabbix-агенту на целевом сервере с параметром . Такой способ подключения позволяет процессу обновления пакетов выполняться в фоне не быть привязанным к процессам zabbix-агента. Также есть возможность выполнять команду на целевом сервере через простое SSH-подключение. Способ выполнения fix-команд выбирается опцией в конфигурацоинном файле плагина.
И как результат работы — отсутствие уязвимых серверов, ваш спокойный сон и отличное настроение
Шаг 3
Настройка PHP
Веб-интерфейс Zabbix написан на PHP и требует некоторые специальные PHP настройки сервера. Во время установки Zabbix был создан конфигурационный файл Apache, который содержит эти настройки. Он расположен в директории /etc/httpd/conf.d/ и автоматически загружается Apache. В этот файл необходимо внести небольшие изменения. Откройте файл:
$ sudo vi /etc/httpd/conf.d/zabbix.conf
В этом файле лежат настройки PHP, которые задают требования для веб-интерфейса Zabbix. Единственное, что необходимо изменить – это временную зону, которая по умолчанию закомментирована.
<IfModule mod_php5.c> 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/Riga </IfModule>
Раскомментируйте строку с временной зоной и поменяйте на свою временную зону (если требуется). Установка московского времени — Europe/Moscow. Список всех временных зон смотрите вот тут. Затем сохраните и закройте файл.
Теперь перезапустите Apache, чтобы изменения вступили в силу.
$ sudo systemctl restart httpd
Запустите сервер Zabbix:
$ sudo systemctl start zabbix-server
И проверьте, корректно ли он работает:
$ sudo systemctl status zabbix-server
Вы увидите следующий статус:
zabbix-server.service - Zabbix Server Loaded: loaded (/usr/lib/systemd/system/zabbix-server.service; disabled; vendor preset: disabled) Active: :active (running) since Fri 2016-08-05 07:16:35 UTC; 2s ago Process: 10033 ExecStart=/usr/sbin/zabbix_server -c $CONFFILE (code=exited, status=0/SUCCESS) ...
$ sudo systemctl enable zabbix-server
Теперь сервер настроен и подключен к базе данных. Перейдем к фронтэнду.
Linux
Zabbix SIA поставляет официальные RPM и DEB пакеты для Red Hat Enterprise Linux, Debian и Ubuntu LTS. Файлы пакетов доступны по адресу http://repo.zabbix.com. Репозитории yum и apt также доступны на сервере.
Для CentOS 6.7:rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/6/x86_64/zabbix-release-3.0-1.el6.noarch.rpm
yum install zabbix-agent
cd /etc/zabbix/
cp zabbix_agentd.conf zabbix_agentd.conf.orig
Редактируем zabbix_agentd.conf:
- Server=zabbix.example.net # IP addresses (or hostnames) of Zabbix servers
-
!!! Hostname=cz394 # Должно совпадать с Host name указанном на Zabbix servers. Используйте Visible name (на Zabbix server) для написания удобочитаемых названий ваших серверов.
- ServerActive=zabbix.example.net # IP:port (or hostname:port) pairs of Zabbix servers for active checks
Стартуем агента/etc/init.d/zabbix-agent start
Zabbix 3.0 for Debian 8:wget http://repo.zabbix.com/zabbix/3.0/debian/pool/main/z/zabbix-release/
zabbix-release_3.0-1+jessie_all.deb
dpkg -i zabbix-release_3.0-1+jessie_all.deb
aptitude update
aptitude install zabbix-agent
FreeBSD
zabbix-agent-1.6.5
> cd /usr/ports/net-mgmt/zabbix-agent > make install clean > echo 'zabbix_agentd_enable="YES"' >> /etc/rc.conf > cd /usr/local/etc/zabbix > cp zabbix_agentd.conf.sample zabbix_agentd.conf > touch /var/log/zabbix_agentd.log > chown zabbix:zabbix /var/log/zabbix_agentd.log > ee zabbix_agentd.conf #Изменяем параметры ... Server=127.0.0.1 Hostname=localhost DisableActive=1 StartAgents=5 LogFile=/var/log/zabbix_agentd.log ... > /usr/local/etc/rc.d/zabbix_agentd start Starting zabbix_agentd. > tail -F /var/log/zabbix_agentd.log 11361:20090821:145209 zabbix_agentd started. ZABBIX 1.6.5 (revision 7442).
Получение состояния репликации
Состояние репликации можно получить sql-командой:
> show slave status\G;
В ответ мы получим ряд параметров, из которых нам нужны 2:
- Slave_IO_Running — состояние работы получения бинарного лога с сервера Master. Если состояние будет NO, то репликация не работает.
- Slave_SQL_Running — статус выполнения команд из лога на сервере Slave. Если состояние будет NO, то репликация не работает.
На данном этапе мы напишем скрипт, с помощью которого мы будем подключаться к базе и вытаскивать данные параметры состояния репликации.
Для начала, подключаемся к командной оболочке SQL:
mysql -uroot -p
Создаем пользователя, от которого мы будем подключаться к базе и смотреть состояние репликации:
> GRANT REPLICATION CLIENT ON *.* TO ‘replmon’@’localhost’ IDENTIFIED BY ‘repl_password3’;
* данной командой мы создаем пользователя replmon с паролем repl_password3. У него будут права на получение статуса репликации для СУБД.
Выходим из командной оболочки mysql:
> \q
На сервере Slave создаем скрипт для получения статуса репликации:
vi /etc/zabbix/zabbix_agentd.d/repl_mon.sh
* путь до скрипта repl_mon.sh может быть любой. В данном примере мы разместили его в каталог агента заббикс — во-первых, для порядка, во-вторых, не будет проблем с SELinux (если он используется).
Содержимое скрипта:
#!/bin/bash
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
myuser=’replmon’
mypass=’repl_password3′
Slave_IO=`mysql -u${myuser} -p${mypass} —vertical -e «SHOW SLAVE STATUS» | grep «Slave_IO_Running» | cut -d»:» -f2 | tr -d » » 2>&1`
Slave_SQL=`mysql -u${myuser} -p${mypass} —vertical -e «SHOW SLAVE STATUS» | grep «Slave_SQL_Running» | cut -d»:» -f2 | tr -d » » 2>&1`
if
then
echo «0»
exit 0
fi
if
then
echo «0»
exit 0
fi
echo «1»
exit 0
* в данном скрипте мы подключаемся к базе и получаем статус репликации, после — мы парсим значения двух параметров (Slave_IO_Running и Slave_SQL_Running). Если значение этих параметров не равно Yes, скрипт вернет , иначе — 1. В Zabbix мы будем проверять значение и реагировать на значение .
Устанавливаем права на скрипт — разрешаем запуск на выполнение и задаем владельца zabbix:
chmod 770 /etc/zabbix/zabbix_agentd.d/repl_mon.sh
chown zabbix:zabbix /etc/zabbix/zabbix_agentd.d/repl_mon.sh
Можно проверить работу скрипта, запустив его:
/etc/zabbix/zabbix_agentd.d/repl_mon.sh
Возможности Zabbix 5
Более подробно вы можете изучить возможности на официальном сайте Что нового в Zabbix 5.0 LTS. Я хочу отметить важные для меня возможности:
- Zabbix можно развернуть локально или в облаке
- Реализована одна и та же политика источника для iframe, что означает, что Zabbix веб-интерфейс нельзя поместить во фреймы на другом домене
- Переписан Zabbix Agent с поддержкой плагинов и сохранением состояния
- Обнаружение счетчиков JMX (Java расширений управления)
- Обнаружение счетчиков производительности Windows
- Встроенная интеграция с системами ITSM (IT Service Management) — управление IT- услугами. Zabbix 5 представляет набор готовых интеграций со стандартными облачными и локальными системами ITSM: Jira, OTRS, Redmine, Zendesk, Zammad, Servicenow.
- Встроенные интеграции с системами оповещений: XMPP (Jabber), Telegram, Slack, Mattermost, Msteams, Victorops, PagerDuty, OpsGenie.
- Добавлены новые шаблоны и плагины для мониторинга различных сервисов, приложений и устройств. Большинство шаблонов теперь используют дополнительные возможности для автоматического обнаружения различных ресурсов. Из коробки существуют шаблоны Zabbix для ClickHouse, MySQL, nginx, Redis, PostgreSQL, Haproxy, Memcached, Elasticsearch.
- Возможность сброса SNMP кэша, изменений контекста SNMPv3
Шаблоны Zabbix в версии 5 стали более сложными с кучей макросов и автообнаружений.
Видео
Привожу видеоролик по установке и настройке предыдущей версии zabbix. Принципиально ничего не изменилось, кроме версий установленных программ.
Онлайн курс «DevOps практики и инструменты»
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, научиться непрерывной поставке ПО, мониторингу и логированию web приложений, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров.
Проверьте себя на вступительном тесте и смотрите программу детальнее по .
Подготовка сервера
Перед установкой Zabbix выполняем подготовительные процедуры.
1. Правильное время
Для получения актуальной информации необходимо, чтобы на сервере было правильное время.
Для этого сначала задаем правильную временную зону:
\cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime
* в данном примере задается московское время.
Затем устанавливаем и запускаем сервис синхронизации времени:
yum install chrony
systemctl enable chronyd
systemctl start chronyd
2. Настройка брандмауэра
Для работы сервера, открываем следующие порты:
firewall-cmd —permanent —add-port={80/tcp,443/tcp,10051/tcp,10050/tcp,10050/udp,10051/udp}
firewall-cmd —reload
* где 80 — порт для http запросов (веб-интерфейс); 443 — для https запросов (веб-интерфейс); 10050 — порты для получения информации от zabbix агентов.
3. SELinux
В данной инструкции выполняется установка Zabbix на сервере с отключенным SELinux. Если есть желание его настроить, читаем статью Настройка SELinux в CentOS.
Для отключения SELinux вводим две команды:
setenforce 0
sed -i «s/SELINUX=enforcing/SELINUX=disabled/» /etc/selinux/config
* первая команда отключает SELinux для текущей загрузки сервера, вторая — перманентно.
Установка zabbix agent на CentOS 7
Добавим теперь хотя бы одного агента мониторинга, чтобы проверить работу системы. Устанавливать будем на этот же сервер. Делается это просто:
# yum -y install zabbix-agent
Для работы с сервером, который установлен локально на этой же машине, больше никаких настроек не надо делать. Если же вы будете устанавливать zabbix agent на удаленную машину, то в файле конфигурации агента /etc/zabbix/zabbix_agentd.conf нужно будет задать следующие параметры:
# mcedit /etc/zabbix/zabbix_agentd.conf
Server=192.168.1.25 ServerActive=192.168.1.25 Hostname=srv10 # имя вашего узла мониторинга, которое будет указано на сервере zabbix
Запускаем агент и добавляем в автозагрузку:
# systemctl start zabbix-agent # systemctl enable zabbix-agent
Проверяем лог файл.
# cat /var/log/zabbix/zabbix_agentd.log 21197:20150912:212555.935 no active checks on server : host not monitored
У меня там следующая ошибка. Я знаю с чем она связана. На сервере по-умолчанию уже добавлен локальный host для мониторинга, но он отключен. Чтобы его включить, идем в раздел Configuration -> Hosts и активируем Zabbix server нажатием на Disabled, чтобы он стал Enabled.
Можно подождать, либо вручную перезапустить агент, чтобы сразу проверить изменения:
# systemctl restart zabbix-agent
Для надежности, проверяем еще раз лог файл на наличие ошибок. Их быть не должно. Агент заработал и начал отправлять данные на сервер. Чтобы проверить поступление данных, надо подождать пару минут и идти в раздел Monitoring -> Latest data. Выбрать там наш единственный хост и нажать Apply.
Видно, что данные уже начали поступать.
Теперь попробуем остановить агент и проверить, придет ли уведомление на почту. Идем в консоль и выключаем агента:
# systemctl stop zabbix-agent
Ждем минимум 5 минут. Именно такой интервал указан по-умолчанию для срабатывания триггера на недоступность агента. После этого проверяем Dashboard.
После возобновления работы агента, вы еще раз получите уведомление о том, что он теперь доступен.
Shinken
Согласно официальному сайту, Shinken — фреймворк мониторинга; переписанный с нуля на питоне Nagios Core, с улучшенной поддержкой больших окружений и более гибкий.
Масштабируемость
Согласно документации, каждый тип используемых процессов может запускаться на отдельном хосте. Это очень полезная возможность, поскольку вы можете захотеть иметь базу данных в самом дешёвом месте, процессы сбора информации в каждом датацентре, и процессы рассылки уведомлений ближе к своему физическому расположению. Пользователь Shinken на схеме счастлив, это точно является хорошим признаком:
Эта система также имеет готовую конфигурацию для межрегионального мониторинга, называемая Realms (Сферы).
Здесь вы можете заметить кое-что изумительное: информация собирается в региональные базы данных, а не в одну мастер-базу. Также существует меньшая разновидность конфигурации со сферами для меньших распределённых конфигураций, которая требует всего одну базу данных и несколько хостов для установки:
Ещё одной болевой точкой при оценке масштабируемости является отказоустойчивость. Эту информацию я процитирую из документации:
Интеграция с системами управления конфигурацией
Автоматическое нахождение хостов и сервисов хорошо покрывается документацией, и, поскольку конфигурация хранится в файлах, вы довольно просто можете генерировать её с помощью Chef\Puppet, основываясь на информации, уже имеющейся в системе конфигурации (например, PuppetDB).
Логирование действий
Поскольку конфигурация хранится в файлах, вы можете использовать имеющиеся инструменты типа системы контроля версий (Git, Mercurial) для отслеживания изменений и их владельцев. В документации я не нашёл никаких подтверждений того, что Shinken записывает куда-либо действия пользователя в веб-интерфейсе.
UI
Shinken WebUI по заверениям использующих его людей хорошо показал себя при работе с тысячами машин и десятками групп.
Недостатки
Прошерстив документацию, я не нашёл видимых недостатков. Единственная вещь, которая меня смущает, это стремительная разработка в прошлом и очень медленный темп коммитов в настоящем: около 40 в этом году, большинство — вливание пулл-реквестов с багфиксами. Система или слишком хороша для дальнейшего развития (чего не бывает в природе, даже такие старички, как vim и emacs получают новые релизы), или теперь это ещё один открытый проект с недостаточно большим сообществом или проблемами с мейнтейнером — это такая информация, которую хотелось бы знать до начала использования такой комплексной вещи, как система мониторинга.
Frédéric Mohier, бывший когда-то в команде разработки Shinken любезно предоставил информацию по этому вопросу: больше года назад несколько разработчиков из команды, будучи несогласными с политикой разработки, покинуло проект и сделало форк, названный Alignak, в данный момент активно разрабатываемый, первый стабильный релиз (1.0) планируется на декабрь 2016.
Подготовка сервера
1) Переведите selinux в режим уведомлений.
На время настройки сервиса переведите selinux в режим уведомлений. Для этого измените содержимое конфигурационного файла:
nano /etc/selinux/config
Заменив текст на
Выполните:
setenforce 0
Более подробно см.ссылкуНе забудьте включить selinux после завершения настройки.
2) Обновите систему.
Если вы используете РЕД ОС версии 7.1 или 7.2, выполните команду:
# yum update -y
Если вы используете РЕД ОС версии 7.3 и старше, выполните команду:
# dnf update -y
3) Установите httpd и включите его автозагрузку:
для РЕД ОС версии 7.1 или 7.2:
# yum install httpd # systemctl enable httpd
для РЕД ОС версии 7.3 и старше:
# dnf install httpd # systemctl enable httpd
4) Установите сервер баз данных PostgresSQL и добавьте его в автозагрузку:
для РЕД ОС версии 7.1 или 7.2:
# yum install postgresql postgresql-server # systemctl enable postgresql
для РЕД ОС версии 7.3 и старше:
# dnf install postgresql postgresql-server # systemctl enable postgresql
5) Выполните инициализацию нового сервера баз данных PostgresSQL
# /usr/bin/postgresql-setup initdb
6) Запустите postgres:
# systemctl start postgresql
Изменение пароля пользователя для доступа к базе данных
Если вам потребуется сменить пароль для подключения к базе данных, первым делом отредактируйте файл конфигурации
root@dedicated:~# mcedit /etc/zabbix/zabbix_server.conf
Найдите директиву DBPassword и задайте новый пароль:
- DBPassword=StrongPassword + DBPassword=NewStrongPassword
Измените настройки так же здесь:
root@dedicated:~# mcedit /etc/zabbix/web/zabbix.conf.php
директива:
$DB = 'NewStrongPassword';
Подключаемся к MySQL
root@dedicated:~# mysql -u root -p Enter password MariaDB > SET PASSWORD FOR 'zabbix'@'localhost' = PASSWORD('NewStrongPassword');
Обратите внимание. В разделе «5
Сброс пароля пользователя Zabbix в MySQL» мы изменили пароль доступа по web-интерфейсу. Здесь мы меняем пароль доступа mysql-пользователя zabbix. Если Вы разворачиваете Zabbix из шаблона, который мы предоставляем для наших клиентов, это следует сделать обязательно.
Заключение
На сегодня это все, что я хотел рассказать. С помощью этой пошаговой инструкции вы сможете быстро развернуть эффективную систему мониторинга для наблюдения за linux и windows системами.
Тема настройки мониторинга zabbix обширна и охватить ее в одном материале невозможно. Для расширения функционала и добавления различных элементов мониторинга используйте мои статьи из раздела zabbix. Все, что написано до этого материала, относится к версии 2.4, но оно не потеряло актуальность, все приемы, скрипты, шаблоны, все работает и соответствует текущей версии, можно смело пользоваться.