Понадобилось настроить работу сервера мониторинга 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: |
Настройки системы |
---|
Видео и подробное описание установки и настройки Zabbix 4.0, а также установка агентов на linux и windows и подключение их к мониторингу.
Подробное описание обновления системы мониторинга zabbix версии 3.4 до новой версии 4.0.
Пошаговая процедура обновления сервера мониторинга zabbix 2.4 до 3.0. Подробное описание каждого шага с пояснениями и рекомендациями.
Подробное описание установки и настройки zabbix proxy для организации распределенной системы мониторинга. Все показано на примерах.
Подробное описание установки системы мониторинга Zabbix на веб сервер на базе nginx + php-fpm.
|
Мониторинг служб и сервисов |
Мониторинг температуры процессора с помощью 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.
Описание мониторинга лог файлов в zabbix на примере анализа лога программы apcupsd. Отправка оповещений по событиям из лога.
|
Здравствуйте. Подскажите. как сделать, чтоб по ip адресу можно было подключиться к серверу zabbix 6 на ubuntu 20, а то по ip открывается страница nginx. Спасибо.
А сам Zabbix как открывается?
Открывается локально, где установлен.
Нужно перенести настройки с алиаса /zabbix в настройки виртуального хоста default_server, который по умолчанию открывается при обращении по ip.
Я не очень понимаю что такое алиас, наверно конфиг nginx в etc/zabbix. Скопировал эти настройки в etc/nginx/sites-available/default. Почему-то не сразу, но заработало. Спасибо Владимир!
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;
}
}
После каждого обновления через yum update, слетают права на директории /etc/zabbix/web /usr/share/zabbix, точнее apache становится владельцем. Можно как-то избежать этого чтобы после каждого обновления руками не делать чмод?
Мне бы тоже было интересно, как решить этот вопрос. Я постоянно скрипт запускаю после обновления, который права меняет. Самое простое решение - запускать nginx и php-fpm от пользователя apache. Но может еще где выйдут проблемы из-за этого, не проверял.
а нельзя ли пометить пакеты как hold ? и запретить обновление php-fpm и nginx ?
Можно, но это же не выход :) Обновления нужны.
Вы уже затронули тему с 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 лет начал понимать за что платил админам))
Спасибо. Хочу добавить одну очень важную команду, без которой не работает:
chown :nginx /var/lib/php/session
Да, вполне возможно. Если права на эту папку стоят неподходящие, то веб интерфейс заббикса прямо об этом скажет в ошибке. Эту команду еще придется выполнять при каждом обновлении заббикса.
Дело в том, что Заббикс при установке(setup.php) ничего не говорит, всё останавливается на первом экране "welcome", а нажимая на "next step" ничего не происходит. Я руководствовался статьёй "nginx + php-fpm на centos 7"; в конце есть раздел "установка phpmyadmin", который мне не нужен и я его пропустил, а зря. Именно в этом разделе была эта команда.
Спасибо, полчаса провозился, не понимая в чем дело, пока Ваш коммент не нашел.
У меня тоже не переходило на следующую страницу при установке