Редакция 1.1 (2016-11-12)
Здравствуйте. Первым делом нам надо решить, какой сервер под наши задачи заказывать. Конечно же, быстрый, конечно же, с некоторым количеством свободной оперативной памяти и места на жёстком диске. И виртуальный. Это понятно. А всё же, какой нужен сервер для нормальной работы Zabbix? Сразу скажу, что сервер мониторинга Zabbix очень нетребовательный, поскольку над ним ведётся постоянная работа по оптимизации и… много еще работы ведётся1 постоянно. Это же Open Source! Да, да, Zabbix — совершенно бесплатен и открыт, что должно еще больше вдохновить вас на установку именно этого решения.
Итак, выбираем сервер в компании MAXIPLACE, а где же ещё?
Решение |
Ядер (vCPU) |
Оперативная память (Mb) |
HDD (Gb) |
Комментарий |
Low |
1 |
512 |
10 |
Подходит для маленьких инсталляций и мониторинга до 5 серверов с интервалом опроса в 30 секунд. |
Normal |
2 |
2048 |
25 |
Нормальный сервер, будет работать, мониторить 25-50 удалённых серверов с небольшим интервалом опроса. |
High |
4 |
4096 |
100 |
Быстрый сервер. До 100-150 наблюдаемых серверов и сетевого оборудования. Потребует дополнительной настройки на оптимизацию Zabbix. |
Super |
8 |
8192 |
250 |
1000-2500 хостов. Не верите? Проверьте! |
Поздравляю вас у приобретением и установкой нового сервера в компании MAXIPLACE. Еще одним сервером под управлением операционной системы Linux стало больше. Сейчас мы будем устанавливать последнюю версию лучшей системы мониторинга Zabbix на CentOS.
Первым делом обновляем систему после инсталляции. Нужно скачать новые версии ядра и системных пакетов. Поскольку сервер совсем новый это займёт несколько минут.
# yum update
Отключаем систему защиты. Это плохой совет, но данное решение рекомендовано самим Zabbix. Вы можете этого не делать, но тогда у вас возможно будут некоторые проблемы с отображением состояния работы системы мониторинга через web-интерфейс. Во всяком случае, это можно сделать и позже — это никак не отразится на процесс установки системы.
# vi /etc/sysconfig/selinux
SELINUX=disabled
Перегружаем сервер для того, чтобы запустить новую версию нашего Linux.
# reboot
Устанавливаем дополнительный репозиторий EPEL. Это нужно для более новых и свежих пакетов и к тому же этот репозиторий включен в состав CentOS. Мне нравится утилита pwgen для генерации паролей — рекомендую использовать её.
# yum install epel-release
Устанавливаем сервис базы данных MariaDB (свободный форк MySQL).
# yum install mariadb-server mariadb
Стартуем сервер баз данных MariaDB.
# systemctl start mariadb.service
Добавляем MariaDB в автозагрузку. При перезагрузке данный сервис будет стартовать автоматически.
# systemctl enable mariadb.service
Запускаем скрипт первоначальной и безопасной установки настроек MariaDB. Он будет спрашивать вопросы по безопасности вашего сервиса базы данных. Внимательно читайте и отвечайте на вопросы. Пароль администратора (root) для MariaDB предлагаю сгенерировать или заранее (и выписать на бумажку или в файл) или в отдельном терминале.
# mysql_secure_installation
Enter current password for root (enter for none): ENTER
Set root password? [Y/n] ENTER
New password: MY-MYSQL-PASSWORD
Re-enter new password: MY-MYSQL-PASSWORD
Remove anonymous users? [Y/n] ENTER
Disallow root login remotely? [Y/n] ENTER
Remove test database and access to it? [Y/n] ENTER
Reload privilege tables now? [Y/n] ENTER
Теперь надо установить веб-сервер Apache2.
# yum install httpd
Запустить его.
# systemctl start httpd.service
И добавить в автозагрузку.
# systemctl enable httpd.service
По умолчанию в CentOS включен встроенный межсетевой экран FirewallD (на базе iptables). Мы должны добавить в правила исключения (открыть порты) наш веб-сервер по протоколам HTTP и HTTPS.
# firewall-cmd —permanent —zone=public —add-service=http
# firewall-cmd —permanent —zone=public —add-service=https
# firewall-cmd —reload
Проверяем. Открываем в любого удаленного хоста наш сервер (по IP или DNS-имени, если оно уже прописано).
Mozilla Firefox → http://ZABBIX-HOSTNAME
Устанавливаем интерпретатор PHP. Без него не будет работать ни phpMyAdmin (ниже) ни веб-интерфейс Zabbix.
# yum install php
А следующие два шага вы можете пропустить, если умеете добавлять пользователя в базу данных MySQL из консоли или не хотите ставить на ваш сервер дополнительное программное обеспечение.
# yum install phpMyAdmin
По умолчанию phpMyAdmin не разрешает никаких подключений извне. Нам необходимо будет добавить наш внешний (рабочий, домащний) IP-адрес в разрешенные адреса для подключения в файл конфигурации веб-сервера Apache.
# vi /etc/httpd/conf.d/phpMyAdmin.conf
…
<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAny>
Require ip <MY-IP-ADDRESS-OR-SUBNET>
Require ip 127.0.0.1
Require ip ::1
</RequireAny>
…
Перестартовываем Apache.
# service httpd restart
Запускаем с рабочего компьютера (с того, конечно же, с которого мы открыли доступ к phpMyAdmin) ваш любимый браузер (в статье это будет Mozilla Firefox) о открываем следующую ссылку.
Mozilla Firefox → http://ZABBIX-HOSTNAME/phpmyadmin/
Теперь мы займёмся самостоятельной работой. Необходимо создать пользователя, присвоить ему пароль и дать доступ к базе данных zabbix (или как вы её назовёте). Вы можете это сделать любым способом, который вам известен. Я предпочитаю для этих целей phpMyAdmin — он прост, удобен и относительно безопасен.
! create zabbix user and database
ВНИМАНИЕ!!! Обязательно проставьте на базу данных другую кодировку. Скорее всего, он при создании базы выставит норвежскую однобайтовую кодировку, нам же нужен UTF-8.
! сравнение utf8_unicode_ci
Устанавливаем репозиторий Zabbix версии 3.2. На момент написания статьи версия 3.2.1 была был самой свежей. Наверное, когда вы будете читать ити строчки выйдет следующая стабильная версия или даже несколько. Имейте это в виду. В вашем случае, это изменит только путь к скрипту добавления данных в БД (ниже).
# rpm -i http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
Устанавливаем сервер Zabbix, веб-интерфейс к нему и агент для мониторинга.
# yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent
Идём в директорию, в которой лежит скрипт для заполнения таблиц базы данных zabbix необходимыми данными.
# cd /usr/share/doc/zabbix-server-mysql-3.2.1/
Создаём таблицы и заполняем их3.
# zcat create.sql.gz | mysql -uzabbix zabbix -p
Идём в файл конфигурации Zabbix-сервера и прописываем пароль к базе данных, тот самый который мы сохранили в файле или бумажке.
# vi /etc/zabbix/zabbix_server.conf
…
DBPassword=***
…
Наконец, запускаем наш Zabbix-сервер.
# systemctl start zabbix-server
Можем проверить, что всё прошло удачно и сервер запустился без ошибок.
# tail /var/log/zabbix/zabbix_server.log
Добавляем сервис Zabbix в автозагрузку. Мы же хотим, чтобы после перезагрузки сервера он запускался и работал как ни в чём не бывало.
# systemctl enable zabbix-server
Если всё хорошо и вы следовали этой инструкции, то увидите примерно следующее.
4706:20161211:231258.375 Starting Zabbix Server. Zabbix 3.2.1 (revision 62890).
4706:20161211:231258.375 ****** Enabled features ******
4706:20161211:231258.375 SNMP monitoring: YES
4706:20161211:231258.375 IPMI monitoring: YES
4706:20161211:231258.375 Web monitoring: YES
4706:20161211:231258.376 VMware monitoring: YES
4706:20161211:231258.376 SMTP authentication: YES
4706:20161211:231258.376 Jabber notifications: YES
4706:20161211:231258.376 Ez Texting notifications: YES
4706:20161211:231258.376 ODBC: YES
4706:20161211:231258.376 SSH2 support: YES
4706:20161211:231258.376 IPv6 support: YES
4706:20161211:231258.376 TLS support: YES
4706:20161211:231258.376 ******************************
4706:20161211:231258.376 using configuration file: /etc/zabbix/zabbix_server.conf
4706:20161211:231258.413 current database version (mandatory/optional): 03020000/03020000
4706:20161211:231258.413 required mandatory version: 03020000
4706:20161211:231258.950 server #0 started [main process]
4714:20161211:231258.962 server #3 started [poller #1]
4717:20161211:231258.962 server #6 started [poller #4]
4718:20161211:231258.962 server #7 started [poller #5]
4719:20161211:231258.963 server #8 started [unreachable poller #1]
4723:20161211:231258.963 server #12 started [trapper #4]
4724:20161211:231258.966 server #13 started [trapper #5]
4725:20161211:231258.966 server #14 started [icmp pinger #1]
4726:20161211:231258.966 server #15 started [alerter #1]
4727:20161211:231258.967 server #16 started [housekeeper #1]
4713:20161211:231258.967 server #2 started [db watchdog #1]
…
В файле конфигурации Apache выставляем нашу временную зону.
# vi /etc/httpd/conf.d/zabbix.conf
…
<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/Moscow
</IfModule>
…
Прописываем полное имя хоста в файле конфигурации Zabbix-агента. Имейте в виду, что имя хоста, которые вы прописали в этом файле конфигурации должно совпадать с именем хоста, которое вы будете прописывать на Zabbix-сервера. Тогда будут работать активные проверки.
# vi /etc/zabbix/zabbix_agentd.conf
…
Hostname=ZABBIX-HOST-NAME
…
Запускаем Zabbix-агент.
# systemctl start zabbix-agent
Добавляем агент в автозагрузку.
# systemctl enable zabbix-agent
Перезапускаем веб-сервер Apache. Последний раз.
# service httpd restart
Добавляем парты Zabbix-сервера в список исключений межсетевого экрана FirewallD.
# firewall-cmd —permanent —zone=public —add-port=10050/tcp
# firewall-cmd —permanent —zone=public —add-port=10051/tcp
# firewall-cmd —reload
Теперь мы можем войти на наш Zabbix-сервер через веб-интерфейс. Поздравляю. Установка и настройка почти завершены. Еще один-два шага и вы можете работать с Zabbix.
Mozilla Firefox → http://ZABBIX-HOSTNAME/zabbix/
Входим под следующими учётными данными и, это важно, не забудьте поменять пароль администратора. СДЕЛАЙТЕ ЭТО, ПОЖАЛУЙСТА, СРАЗУ.
Username: Admin
Password: zabbix
Аркадий Петровский
специально для Maxiplace
https://avpetrovskiy.ru
1. Я это видел в Риге у них в офисе. Кстати, рекомендую к них съездить на обучение, если, конечно, не будет курсов поближе. Они разъезжают по миру довольно активно.
2. Рассматривать вариант в Nginx я не стал, но те, кто любят чай или кофе погорячей могут добавить в эту статью (или на основе её написать свою) как заставить работать Zabbix под этим популярным веб-сервером.
3. На медленных серверах это может занять некоторое время, но не более 3-5 минут.