Мой блог - Установка и базовая настройка Zabbix-сервера (сборка из SVN-репозитария)

Установка и базовая настройка Zabbix-сервера (сборка из SVN-репозитария)

В этой статье я попробую описать пошагово, установку последней версии Zabbix-сервера из SVN-репозитария в LXC-контейнер. Ранее, в наших статьях мы уже рассматривали некоторые аспекты установки и настройки Zabbix-сервера и данная статья является скорее компиляцией прошлых заметок для реального внедрения.

Фотография автора

Автор: Антон Черноусов
Опубликовано: 1 месяц, 2 недели (последние правки: 0 минут назад) - 0 комментариев
Категории записи: Linux, Ubuntu, Zabbix, Популярное


Подготовим PHP-FMP  окружение в котором будем запускать Zabbix-сервер.

Начнем с установки обновлений и набора необходимых (и желательных) для работы web-окружения пакетов.

# apt-get upgrade
# apt-get install mc aptitude curl rsync
# apt-get install nginx php7.0-fpm
# aptitude install php-pgsql php-gd php-bcmath php-mbstring php-xml php-ldap

Следующим логичным этапом настройки является типовая подготовка LXC-контейнера (этот вопрос мы уже рассматривали):

  • Разрешаем авторизацию по паролю
  • Удаляем пользователя Ubuntu
  • Устанавливаем авторизацию пользователя root по ключу

Создаем каталог в котором будет храниться FrontEnd:

#  mkdir /var/www/zabbix-frontend

Конфигурационный файл /etc/nginx/sites-available/zabbix-front.conf, подготовленный для работы с PHP Zabbix FrontEnd выглядит следующим образом:

server {
listen 80 default_server;
access_log /var/log/nginx/zabbix-front.access.log;
server_name zabbix-front;

location / {
root /var/www/zabbix-frontend;
index index.php;
}

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
root /var/www/zabbix-frontend;
include fastcgi_params;
fastcgi_param PHP_VALUE "
max_execution_time = 300
memory_limit = 128M
post_max_size = 16M
upload_max_filesize = 2M
max_input_time = 300
date.timezone = Asia/Novosibirsk
always_populate_raw_post_data = -1
";

fastcgi_buffers 8 256k;
fastcgi_buffer_size 128k;
fastcgi_intercept_errors on;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k; }

location ~ /\.ht {
deny all;
}

}

Перезапускаем nginx командой:

# /etc/init.d/nginx restart

И теперь нам остается лишь разместить PHP-файлы Frontend в созданный ранее каталог (/var/www/zabbix-frontend), но к этому моменту мы вернемся чуть позже.

Подготовка и настройка сервера базы данных Postgresql

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

Установка пакета Postgresql выполняется в одну команду и по завершении сервер готов к работе:

# aptitude install postgresql

Тюнинг базы данных Postgresql под конкретное окружение мы уже подробно рассматривали в статье (Оптимизация настроек Postgresql-сервера) и я сейчас просто приведу пример изменения параметров файла postgresq.conf для сервера с двумя гигабайтами оперативной памяти.

  • shared_buffers = 1GB
  • temp_buffers = 256MB
  • maintenance_work_mem = 128MB
  • bgwriter_delay = 20ms
  • bgwriter_lru_maxpages = 400
  • bgwriter_lru_multiplier = 4.0
  • effective_io_concurrency = 1
  • random_page_cost = 1.0
  • effective_cache_size = 1500MB

Перезагружаем базу данных для применения наших параметров:

# /etc/init.d/postgresql restart

Создаем для хранения данных Zabbix пользователя, базу данных и назначаем этого пользователя владельцем базы данных:

# su postgres
$ psql
# CREATE USER zabbix_db_user WITH PASSWORD 'SecretPaSSword321';
# CREATE DATABASE zabbix OWNER zabbix_db_user;

На данном этапе мы подготовили базу данных и базовое окружение, а теперь переходим к сборке Zabbix-сервера из исходных кодов.

Сборка Zabbix-сервера из исходных кодов

Для сборки zabbix-server и zabbix-agent из исходных кодов необходимо установить клиент SVN, компиляторы и несколько заголовочных файлов библиотек:

# apt-get install subversion
# apt-get install build-essential automake autoconf fping
# aptitude install pkg-config libpcre2-dev libpcre++-dev libpq-dev libsnmp-dev libssh-dev libssh2-1-dev libopenipmi-dev
# aptitude install libevent-dev libldap2-dev libcurl4-openssl-dev libxml2-dev
# ln -s /usr/bin/fping /usr/sbin/fping

Выполнив эти операции мы подготовили окружение для сборки и можем скачать исходные коды Zabbix и собрать агент и сервер:

# mkdir /root/zabbix-source/
# cd /root/zabbix-source/
# svn co svn://svn.zabbix.com/trunk
# cd ./trunk/
# svn up

Сборка:

# ./bootstrap.sh
# ./configure --enable-server --enable-agent --with-postgresql --with-libxml2 --with-net-snmp --with-ssh2 \
   --with-openipmi --with-libevent --with-libpcre --with-openssl --with-ldap --with-libcurl
# make dbschema && make && make install

Настройка Zabbix-сервер и Zabbix-агент

Настройка Zabbix-сервера начинается с подготовки базы данных (первоначальному заполнению ее схемой данных). Фактически мы просто выполняем набор SQL-инструкций на созданной в ранее базе данных, операция достаточно типовая и проблем обычно не вызывает (не выполняйте операции от имени пользователя postgres):

# cat ./database/postgresql/schema.sql | psql -U zabbix_db_user -h 127.0.0.1 zabbix
# cat ./database/postgresql/images.sql | psql -U zabbix_db_user -h 127.0.0.1 zabbix
# cat ./database/postgresql/data.sql | psql -U zabbix_db_user -h 127.0.0.1 zabbix

Следующим этапом мы создадим пользователя zabbix и проведем тестовый запуск агента и сервера. Создание пользователя и базового окружения выполняется последовательным выполнением набора команд:

# groupadd zabbix
# useradd -g zabbix zabbix
# mkdir /var/log/zabbix/
# chown zabbix:zabbix /var/log/zabbix/
# mkdir /var/run/zabbix/
# chown zabbix:zabbix /var/run/zabbix/

Перед запуском сервера и клиента необходимо отредактировать конфигурационные файлы (укажем параметры подключения к базе данных Postgresql), но обратите внимание, что при сборке из исходных кодов конфигурационные файлы будут расположены в каталоге /usr/local/etc и я рекомендую создать символические ссылки в каталог /etc/zabbix/.

# mkdir /etc/zabbix
# ln -s /usr/local/etc/zabbix_agentd.conf /etc/zabbix/zabbix_agentd.conf
# ln -s /usr/local/etc/zabbix_server.conf /etc/zabbix/zabbix_server.conf
# ln -s /usr/local/etc/zabbix_agentd.conf.d /etc/zabbix/zabbix_agentd.conf.d
# ln -s /usr/local/etc/zabbix_server.conf.d /etc/zabbix/zabbix_server.conf.d

В конфигурационные файлы необходимо внести следующие изменения:

Конфигурация Zabbix Server.

/etc/zabbix/zabbix_server.conf

LogFile=/var/log/zabbix/zabbix_server.log
PidFile=/var/run/zabbix/zabbix.pid
DBHost= 127.0.0.1
DBName=zabbix
DBUser=zabbix_db_user
DBPassword=SecretPaSSword321
StartPollers=5
StartIPMIPollers=2
StartPreprocessors=5
StartTrappers=10
StartPingers=5
StartDiscoverers=4
ListenIP=0.0.0.0
CacheSize=128M
CacheUpdateFrequency=60
StartDBSyncers=4
HistoryCacheSize=64M
HistoryIndexCacheSize=32M
Timeout=4
LogSlowQueries=3000
User=zabbix

Тестовый запуск производится переходом в контекст пользователя zabbix и запуском zabbix_server с ключом -f:

# su zabbix
$ zabbix_server -f

Если запуск сервера прошел успешно, переходим к конфигурированию агентской части.

Конфигурация Zabbix Agent.

/etc/zabbix/zabbix_agentd.conf

PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
Server=10.253.3.199
ListenPort=10050
ListenIP=10.253.3.199
ServerActive=10.253.3.199
Hostname=zabbix-monitoring.local.help-me-24.com

Проверьте, что запуск проходит корректно, аналогично запуску серверной части.

# su zabbix
$ zabbix_agentd -f

Обратите внимание, что если при запуске сервера мониторинга вы получили ошибку:

cannot use database "zabbix": Zabbix server cannot work with a Zabbix proxy database

Это означает, что в базу данных загружена только схема, без данных и изображений (такой режим используется в прокси-варианте).

SystemD - юниты для автоматического запуска сервера и агента Zabbix

Для автоматического запуска агента и сервера Zabbix при старте контейнера я использую SystemD-сервисы  (они достаточно типовые). Юнит zabbix-сервера находится в файле /lib/systemd/system/zabbix-server.service и содержит следующие записи:

[Unit] 
Description=Zabbix Server (PostgreSQL)
Documentation=man:zabbix_server
After=network.target postgresql.service

[Service]
Type=forking
PermissionsStartOnly=true
ExecStartPre=-/bin/mkdir /var/run/zabbix/
ExecStartPre=-/bin/chown -R zabbix:zabbix /var/run/zabbix/
ExecStart=/usr/local/sbin/zabbix_server
ExecReload=/usr/local/sbin/zabbix_server -R config_cache_reload
GuessMainPID=no
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

Юнит zabbix-agent находится в файле /lib/systemd/system/zabbix-agent.service и содержит следуюшие записи:

[Unit] 
Description=Zabbix Agent
Documentation=man:zabbix_agentd
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/sbin/zabbix_agentd
PermissionsStartOnly=true
ExecStartPre=-/bin/mkdir /var/run/zabbix/
ExecStartPre=-/bin/chown -R zabbix:zabbix /var/run/zabbix/
GuessMainPID=no
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

Настраиваем автозапуск сервисов и запускаем:

# systemctl start zabbix-agent
# systemctl start zabbix-server
# systemctl enable zabbix-agent
# systemctl enable zabbix-server

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

Установка и настройка Zabbix Frontend

Нам осталось скопировать php-файлы web-интерфейса Zabbix и провести базовую настройку web-интерфейса.

Копируем файлы web-интерфейса в подготовленное ранее PHP-FPM окружение и назначаем права доступа для web-сервера:

# rsync -av /root/zabbix-source/trunk/frontends/php/ /var/www/zabbix-frontend/
# chown -R www-data:www-data /var/www/zabbix-frontend/

Теперь можем переходить к web-интерфейсу Zabbix и начинать начинать настройку.

В моем случае настроено проксирование при помощи Nginx на внутренний сервер (LXC-контейнер) и web-интерфейс доступен по адресу https://zabbix.help-me-24.com.

Настройка web-интерфейса не отличается от настройки любых других web-проектов и свобится к проверке совместимсти PHP-версиии, библиотек и настроек (наша конфигурация PHP-FMP уже сконфигурирована под требования Zabbix Frontend).

Требования к PHP при установке Zabbix

Укажите параметры подключения к базе данных (которые мы использовали при создании базы и настройке сервера).

База данных для Zabbix-сервера

Пароль по умолчанию обычно Admin/zabbix, но в SVN-версиях, он может быть другим.

Пароль по умолчанию для Zabbix-сервера

Вы всегда можете изменить пароль администратора напрямую в базе данных выполнив SQL-команду:

# UPDATE users SET passwd=md5('12345') where alias='admin';

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

Пожалуйста, оцените мою статью (всего оценок 0, средняя оценка 4.00):

Комментарии к статье:

Пока комментариев нет

Оставьте комментарий:

обязательно

обязательно (не публикуется)

необязательно

обязательно

обязательно