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


Администрирование операционных систем на базе Linux (Debian/Ubuntu и Centos/RedHat) Мониторинг серверов и сетевой инфраструктуры при помощи Zabbix
aptitude database php postgresql zabbix zabbix frontend zabbix server cannot work with a zabbix proxy database установка и настройка zabbix
 
 

* В этом блоге я описываю свою повседневную рабочую практику, поэтому все статьи в блоге написаны лично мной и при копировании их на свой сайт пожалуйста указывайте ссылку на страницу откуда вы скопировали.
* Если какая-то статья вам помогла, то вы можете дать мне немного денег вместо простого спасибо (ссылка на форму поддержки проекта внизу страницы), если вы что-то не поняли или у вас что-то не получается, то вы можете нанять меня и я вам все подробно расскажу (расценки и ссылки в конце статьи).


(последние правки 1 неделя)

В этой статье я попробую описать пошагово, установку последней версии Zabbix-сервера из SVN-репозитария в LXC-контейнер. Ранее, в наших статьях мы уже рассматривали некоторые аспекты установки и настройки 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';

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

Моя официальная страница на FaceBook
Мой микроблог в твиттер

Сброс пароля Zabbix-пользователя без использования графического интерфейса

Сброс пароля Zabbix-пользователя без использования графического интерфейса

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


Устранение проблем с запуском Zabbix в Centos 7.1 (проблема с правилами SeLinux)

Устранение проблем с запуском Zabbix в Centos 7.1 (проблема с правилами SeLinux)

Наверное каждый системный администратор при работе с Linux дистрибутивами Centos и RedHat рано или поздно сталкивается с его дополнительно системой аудита уровня ядра под названием SeLinux. Первое знакомство с этой системой безопасности вызвало у меня желание просто отключить ее, что кстати в большинстве случаев и советуют на разного рода форумах, но как показывает практика делать этого не стоит. И хотя вы можете столкнуться с ограничением доступа в самых не очевидных местах, я рекомендовал бы вам просто проверять лог аудита и на основе его надстраивать исключения из схемы модели безопасности. Именно это я сейчас и продемонстрирую на примере Zabbix-агента.


Установка Zabbix-Agent версии 3.4 в Ubuntu Linux 16.04

Установка Zabbix-Agent версии 3.4 в Ubuntu Linux 16.04

Небольшая инструкция по подключению репозитария и установке zabbix-агента версии 3.4 в Ubuntu Linux 16.04


Настройка отправки оповещений Zabbix в чат Rocket.Chat

Настройка отправки оповещений Zabbix в чат Rocket.Chat

В своей статье, - использование Rocket.Chat для создания чата оперативных оповещений, я не описал как именно можно при помощи моей утилиты для работы с Rocket.Chat, отправить Zabbix-оповещение. Я так понимаю, что тема заинтересовала несколько человек и придется немного заострить на этом внимание.


Подробный мониторинг состояния дисковой подсистемы Linux при помощи Zabbix

Подробный мониторинг состояния дисковой подсистемы Linux при помощи Zabbix

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


Установка Zabbix версии 3.4 в Linux-дистрибутив Debian 9

Установка Zabbix версии 3.4 в Linux-дистрибутив Debian 9

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


Мониторинг основных показателей базы данных Postgresql при помощи Zabbix

Мониторинг основных показателей базы данных Postgresql при помощи Zabbix

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


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


Есть вопросы?
Спрашивайте и я обязательно вам отвечу!

* Поля обязательные для заполнения .