Установка Zabbix 3 на nginx + php-fpm

Понадобилось настроить работу сервера мониторинга Zabbix на web-сервере с nginx + php-fpm. По-умолчанию zabbix рассчитан на работу с apache, настройки есть только под него. Пришлось некоторое время повозиться, пока не разобрался со всеми необходимыми параметрами, чтобы все корректно заработало. Хочу поделиться своими наработками, так как в сети готовый вариант мне не попался, разбирался сам.

Онлайн-курс по устройству компьютерных сетей

На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Введение

Я обычно под Zabbix выделяю отдельный сервер и ставлю там по-умолчанию apache, чтобы не заморачиваться. В этот раз понадобилось поднять заббикс на уже готовом веб сервере, который крутится на связке nginx + php-fpm на centos 7, настроенной примерно так же, как в указанной статье.

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

Создаем виртуальный хост в nginx для zabbix

У меня заббикс будет работать на отдельном виртуальном хосте. Для примера будем считать, что имя этого виртуального хоста будет zabbix.site.ru. Веб сервер уже полностью настроен по приведенной выше статье и готов к работе.

Для начала сделаю небольшую пометку. В моей статье про настройку веб сервера все виртуальные хосты описаны в основном файле конфигурации nginx.conf. Это не очень удобно, но статью уже не хочется переделывать. Сейчас мы вынесем настройки хоста для заббикса в отдельный конфигурационный файл в папку /etc/nginx/conf.d.

Для этого в файл nginx.conf в секцию с настройками http нужно добавить строку:

include  /etc/nginx/conf.d/*.conf

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

# mcedit /etc/nginx/conf.d/zabbix.conf
server {
listen 80;

root /usr/share/zabbix;
access_log /var/log/nginx/zabbix.access.log;
server_name zabbix.site.ru;

location / {
index index.php index.html index.htm;
}

location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
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 = Europe/Moscow
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;
}
}

Обращаю внимание, что у меня nginx работает с php-fpm через сокет. Если у вас по tcp порту, то ставьте

fastcgi_pass 127.0.0.1:9000;

Сохраняете файл и проверяете конфигурацию на ошибки:

# nginx -t

Если все ОК, то дальше можно приступать к установке zabbix 3.0 как рассказано у меня в статье. Все этапы в точности совпадают, кроме настройки httpd. Его можно не ставить, пропустить все, что его касается. Параметры для php мы уже задали в свойствах виртуального хоста.

Редактируем права доступа к каталогам

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

Дело в том, что zabbix рассчитан на работу с apache и поэтому владельцем некоторых файлов устанавливается он. Как вариант, можно запустить nginx от пользователя apache, но мне кажется более правильным изменить права доступа к файлам. Нужно сделать владельцем самих исходников web панели и папки с конфигурацией пользователя nginx.

# chown -R nginx. /etc/zabbix/web
# chown -R nginx. /usr/share/zabbix

После этого можно заходить по адресу http://zabbix.site.ru и приступать к установке. Если не изменить права доступа, то в логах вы увидите ошибки:

PHP message: PHP Fatal error:  require_once(): Failed opening required '/etc/zabbix/web/maintenance.inc.php' (include_path='.:/usr/share/pear:/usr/share/php') in /usr/share/zabbix/include/classes/core/ZBase.php on line 286" while reading response header from upstream, client: 109.188.124.35, server: zabbix.site.ru, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php-fpm/php5-fpm.sock:", host: "zabbix.site.ru"

Заключение

Подведем итог. Чтобы установить zabbix на веб сервер с nginx + php-fpm нужно воспользоваться моей статьей по настройке веб сервера. После этого создать виртуальный хост для заббикс из этой статьи. Когда это сделаете, открываете статью по установке zabbix на centos, делаете все по ней, только пропускаете установку и настройку httpd. Доходите до момента, где нужно переходить по веб адресу для продолжения установки и меняете права доступа на каталоги. Потом продолжаете установку и настройку.

Помогла статья? Подписывайся на telegram канал автора

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

Дополнительные материалы по Zabbix

Онлайн-курс по устройству компьютерных сетей.

На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Рекомендую полезные материалы по Zabbix:
Настройки системы
  • Установка 4.0
  • Обновление 3.0 -> 3.2
  • Обновление 3.4 -> 4.0
  • Установка Zabbix Proxy
  • Работа на NGINX
Видео и подробное описание установки и настройки Zabbix 4.0, а также установка агентов на linux и windows и подключение их к мониторингу.
Подробное описание обновления системы мониторинга zabbix версии 3.4 до новой версии 4.0.
Пошаговая процедура обновления сервера мониторинга zabbix 2.4 до 3.0. Подробное описание каждого шага с пояснениями и рекомендациями.
Подробное описание установки и настройки zabbix proxy для организации распределенной системы мониторинга. Все показано на примерах.
Подробное описание установки системы мониторинга Zabbix на веб сервер на базе nginx + php-fpm.
Мониторинг служб и сервисов
 
  • Температура процессора
  • Nginx и php-fpm
  • Mysql репликация
  • Службы Linux
  • Рейд mdadm
  • Транки Asterisk
  • Synology
Мониторинг температуры процессора с помощью zabbix на Windows сервере с использованием пользовательских скриптов.
Настройка полноценного мониторинга web сервера nginx и php-fpm в zabbix с помощью скриптов и пользовательских параметров.
Мониторинг репликации mysql с помощью Zabbix. Подробный разбор методики и тестирование работы.
Описание настройки мониторинга tcp служб с помощью zabbix и его инструмента простых проверок (simple checks)
Настройка мониторинга рейда mdadm с помощью zabbix. Подробное пояснение принципа работы и пошаговая инструкция.
Подробное описание мониторинга регистраций транков (trunk) в asterisk с помощью сервера мониторинга zabbix.
Подробная инструкция со скриншотами по настройке мониторинга по snmp дискового хранилища synology с помощью сервера мониторинга zabbix.
Мониторинг различных значений
  • Мониторинг сайта
  • Мониторинг бэкапов
  • Размер бэкапа
  • Делегирование домена
  • Значения из текстового файла
  • Мониторинг логов
Настройка мониторинга web сайта в zabbix. Параметры для наблюдения - доступность сайта, время отклика, скорость доступа к сайту.
Один из способов мониторинга бэкапов с помощью zabbix через проверку даты последнего изменения файла из архивной копии с помощью vfs.file.time.
Подробное описание настройки мониторинга размера бэкапов в Zabbix с помощью внешних скриптов.
Пример настройки мониторинга за временем делегирования домена с помощью Zabbix и внешнего скрипта. Все скрипты и готовый шаблон представлены.
Описание мониторинга лог файлов в zabbix на примере анализа лога программы apcupsd. Отправка оповещений по событиям из лога.

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

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

  1. Здравствуйте. Подскажите. как сделать, чтоб по ip адресу можно было подключиться к серверу zabbix 6 на ubuntu 20, а то по ip открывается страница nginx. Спасибо.

    • А сам Zabbix как открывается?

      • Открывается локально, где установлен.

        • Нужно перенести настройки с алиаса /zabbix в настройки виртуального хоста default_server, который по умолчанию открывается при обращении по ip.

          • Я не очень понимаю что такое алиас, наверно конфиг nginx в etc/zabbix. Скопировал эти настройки в etc/nginx/sites-available/default. Почему-то не сразу, но заработало. Спасибо Владимир!

  2. Владимир

    server {
    listen 80;
    server_name zabbix.ru;
    access_log /var/log/nginx/access-zabbix.log;
    error_log /var/log/nginx/error-zabbix.log info;
    root /usr/share/zabbix;
    index index.php index.html;

    location /zabbix {
    root /usr/share/zabbix;
    index index.php index.html;
    }

    location ~ \.php$ {
    fastcgi_pass unix://var/run/php/php7.0-fpm.sock;
    fastcgi_index index.php;
    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 = Europe/Samara
    always_populate_raw_post_data = -1
    ";
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    try_files $uri =404;
    include fastcgi_params;
    }
    location = /favicon.ico {
    log_not_found off;
    access_log off;
    }
    location ~* "/zabbix/\.(?:ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|css|swf|js|atom|jpe?g|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi
    |wav|bmp|rtf)$" {
    #access_log off;
    #log_not_found off;
    expires max;
    }

    location ~* ^/(conf|api|include)($|\/) {
    deny all;
    }
    location ~ /\.ht {
    deny all;
    }
    location ~ /\. {
    deny all;
    }
    }

  3. После каждого обновления через yum update, слетают права на директории /etc/zabbix/web /usr/share/zabbix, точнее apache становится владельцем. Можно как-то избежать этого чтобы после каждого обновления руками не делать чмод?

    • Мне бы тоже было интересно, как решить этот вопрос. Я постоянно скрипт запускаю после обновления, который права меняет. Самое простое решение - запускать nginx и php-fpm от пользователя apache. Но может еще где выйдут проблемы из-за этого, не проверял.

  4. начинающий

    Вы уже затронули тему с SSL - это сейчас "обязательное условие"
    и тут виртуал с http...)
    У меня при конфиге заббикса с 443 портом и сертификатами от поддомена - 502 Bad Gateway
    Есть точно такое же, но не с перламутровыми пуговицами, а с HTTPS?

    • начинающий

      ВДС по Вашим постам настроил. все гут.
      только с заббиксом проблема(
      502 Bad Gateway
      ошибка была из-за "php5-fpm.sock", а я PHP7 ставил) - лучше выделить в тексте, чтобы обращалось на это внимание.
      НО. "Для работы с сервером, который установлен локально на этой же машине, больше никаких настроек не надо делать"
      упс.
      "active check configuration update from [127.0.0.1:10051] started to fail (ZBX_TCP_READ() timed out)"
      в iptables_rules.sh добавлял различные правила, но никак не выходит каменный цветок(
      может IP менять, но если локально, то 127.0.0.1 и должно быть.....

      • начинающий

        я тут сам с собой переписываюсь)
        итог. тема заббикса не раскрыта: это чудесно мониторить все и вся, но через сутки забита оперативка и своп, т.к. есть еще куча настроек и непонятных шаблонов по ДЕФОЛТУ, т.е. пост для поисковиков, а не для чайников.
        печаль. снес. (поставил другие варианты "смотреть траффик и нагрузку" и без смс и уведомлений, т.к. правильно настроенное и не требует смс и писем)

        и чтобы не сорить по всему дому: тема ssl и настроек-плюшек -1 класс.
        нет поста про отдачу видео со своего сервера с настройками - тут конь не валялся
        можно еще затронуть: удаление nginx (с правильными кейвордами для SE), если какой-то модуль отвалился из-за ручонок шаловливых - как восстановить, простые графики наглядные по трафику,цпу,памяти...
        А так большой респект учителю: я через 15 лет начал понимать за что платил админам))

  5. Спасибо. Хочу добавить одну очень важную команду, без которой не работает:
    chown :nginx /var/lib/php/session

    • Да, вполне возможно. Если права на эту папку стоят неподходящие, то веб интерфейс заббикса прямо об этом скажет в ошибке. Эту команду еще придется выполнять при каждом обновлении заббикса.

      • Дело в том, что Заббикс при установке(setup.php) ничего не говорит, всё останавливается на первом экране "welcome", а нажимая на "next step" ничего не происходит. Я руководствовался статьёй "nginx + php-fpm на centos 7"; в конце есть раздел "установка phpmyadmin", который мне не нужен и я его пропустил, а зря. Именно в этом разделе была эта команда.

    • Спасибо, полчаса провозился, не понимая в чем дело, пока Ваш коммент не нашел.
      У меня тоже не переходило на следующую страницу при установке

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar