Zabbix nginx настройка centos
Обновлено: 05.07.2024
Zabbix — свободная система мониторинга и отслеживания статусов разнообразных сервисов компьютерной сети, серверов и сетевого оборудования.
TimescaleDB — это расширение PostgreSQL для работы с временными рядами (time series). Временные ряды можно хранить в PostgreSQL и просто так, но TimescaleDB обеспечивает большую производительность на том же железе.
Установка Zabbix и Nginx
Добавляем репозиторий Zabbix
Добавляем репозиторий Nginx
По умолчанию будет использоваться стабильная версия. Если нужна основная версия(mainline), переключаемся
$ sudo dnf config-manager --set-enabled nginx-mainline
Удаляем все метаданные
$ sudo dnf clean all
Устанавливаем Zabbix для БД PostgreSQL и Nginx
$ sudo dnf install zabbix-server-pgsql zabbix-web-pgsql zabbix-nginx-conf zabbix-sql-scripts zabbix-agent
Установка PostgreSQL 13
Отключаем модуль PostgreSQL в предустановленном по умолчанию репозитории AppStream
$ sudo dnf -qy module disable postgresql
postgresql 9 . 6 [x] client , server [d] PostgreSQL server and client module postgresql 10 [d] [x] client , server [d] PostgreSQL server and client module postgresql 12 [x] client , server [d] PostgreSQL server and client module postgresql 13 [x] client , server [d] PostgreSQL server and client moduleДобавляем репозиторий PostgreSQL
Устанавливаем PostgreSQL 13
$ sudo dnf -y install postgresql13 postgresql13-server
$ sudo /usr/pgsql-13/bin/postgresql-13-setup initdb
Initializing database … OK
Основной конфиг PostgreSQL расположен тут:
Запускаем PostgreSQL и добавляем сервис в автозагрузку
$ sudo systemctl enable --now postgresql-13
$ systemctl status postgresql-13
Устанавливаем пароль для пользователя postgres
$ psql -c "alter user postgres with password 'mysuperpassword'"Установка TimescaleDB
Добавляем репозиторий TimescaleDB
$ sudo nano /etc/yum . repos . d/timescale _ timescaledb . repo$ sudo yum install pygpgme yum-utils
$ sudo yum install timescaledb-2-postgresql-13
$ sudo systemctl stop postgresql-13
Тюним PostgreSQL (от рута)
$ sudo su -c 'timescaledb-tune --pg-config=/usr/pgsql-13/bin/pg_config'
$ sudo systemctl start postgresql-13
Настройка Zabbix и Nginx
Переключаемся на пользователя root
Создаем пользователя БД для Zabbix
Создадим БД для Zabbix
Импортируем начальную схему и данные
Подключаем расширение timescaledb
Скачиваем исходники Zabbix и распаковываем архив
Импортируем схему и данные для расширения timescaledb в PostgreSQL
Редактируем конфиг PostgreSQL
$ sudo nano /var/lib/pgsql/13/data/pg_hba.conf
$ sudo systemctl restart postgresql-13
Настраиваем подключение Zabbix к PostgreSQL
Перезапускаем сервисы и добавляем их в автозагрузку
$ sudo systemctl restart zabbix-server zabbix-agent nginx php-fpm
$ sudo systemctl enable zabbix-server zabbix-agent nginx php-fpm
Настройка Firewall и SeLinux
Открываем порты 80/443
$ sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
$ sudo firewall-cmd --zone=public --add-port=443/tcp --permanent
$ sudo firewall-cmd --reload
Выполним следующие команды, чтобы предоставить веб-интерфейсу Zabbix разрешение на соединение с сервером
Также нужно предоставить веб-интерфейсу Zabbix разрешение на соединение с базой данных
Мониторинг является неотъемлимой частью любого современного бизнес процесса. При этом выполняется постоянное наблюдение за системой и в случае отклонения от некоторого установленного состояния имеется возможность мгновенного реагирования а иногда и автоматического устранения неисправности. Мониторинг компьютерных систем является сложнейшей задачей в виду огромного разнообразия сервисов, служб и параметров проверки. Поиски решения, которое максимально охватило бы все аспекты мониторинга привели меня к Zabbix. Это реализация клиент-серверной архитектуры с очень гибкими параметрами конфигурации как серверной так и клиентской части, что позволяет мониторить что и как угодно.
Со времён моего первого знакомства с этой системой прошло немало времени и zabbix превратился из просто хорошей в абсолютную систему. И тем не менее проект развивается.
В данном случае у меня имеется новенький сервер с только что установленной операционной системой CentOS 7 и самыми последними обновлениями. Zabbix имеет клиентскую часть, серверную часть и web-интерфейс управления системой. Все настройки и аналитические данные хранятся в базе данных(MySQL, PostgreSQL и т.д.) что добавляет удобства в поддержке, обновлении и переносе системы. Следовательно для полноценной работы сервиса нам потребуется настроить WEB-сервер и сервер баз данных(в данном случае MySQL).
Установка Nginx с официального репозитория
Так же для некоторых компонентов нам понадобится дополнительный репозиторий EPEL (Extra Packages for Enterprise Linux)
На всякий случай устанавливаю и phpMyAdmin. Он тянет некоторые модули php, которые лишними точно не будут
По умолчанию менеджер процессов FastCGI запускается на 9000 порту. Я обычно изменяю эту настройку на использование доменных сокетов. Так шустрее и безопаснее.
Забегая наперёд скажу, что нужно отредактировать некоторые параметры php. Если этого не сделать, то при установке веб-интерфейса Zabbix получим ошибку о нехватке ресурсов
Я правлю примерно так. Можно использовать текстовый редактор
Не берусь комментировать, время покажет 🙂 Просто верим и просто устанавливаем:
Сохраняем и запускаем в режиме безопасной установки:
Что бы далеко не ходить сразу создадим БД, пользователя и доступ для zabbix.
Что бы русский язык корректно отображался кодировку по умолчанию ставлю UTF-8
Подготовительные работы окончены. Дальше сам Zabbix. Для получения самых свежих пакетов можно установить релиз или добавить репозиторий вручную:
После установки необходимо создать структуру базы данных вручную имтортировав структуру и метаданные:
проверяем правила и перечитываем их:
Перед установкой необходимо так же выставить необходимые права на запись
И теперь укажем в конфигурационном файле zabbix-сервера параметры соединения с БД
Добавим сервисы в автозагрузку и запустим их:
Можно заходить на веб интерфейс с логином admin(Admin с заглавной буквы тоже подходит) и паролем zabbix
Естественно, первым делом устанавливаем свой пароль
UPD1:
Если получаем ошибку типа
То скорее всего необходимо отключить SELinux
Знакомимся с zabbix начиная с правильной установки на Nginx в Centos 7 : 21 комментарий
500 ошибка при переходе к установке веб интерфейса.
Владелец и группа root, но права на чтение есть у всех
А что у вас?
Если позволите, это прочитал на другом сайте (удалите, если нельзя):
Перезапустим Nginx:
systemctl restart nginx
Открываем страницу и получаем 500ю ошибку т.к. некоторые файлы не погрузились, из-за того что не хватает прав доступа, есть 2 пути решения проблемы, первый и более сложный, сменить владельца файлов и директорий веб интерфейса Zabbix на пользователя Nginx ( под этим пользователем работает web сервер) или более простой запустить Nginx под другим пользователем, а именно apache происходит это потому что, изначально, веб морда zabbix рассчитана на работу с Apache и про Nginx ничего не знает, этот пользователь создается автоматически при установке php-fpm, в общем идем в:
nano /etc/nginx/nginx.conf
находим строку:
user nginx;
и меняем ее на
user apache;
На сколько я вижу с правами у вас всё правильно.
У меня владелец /usr/share/zabbix вообще root
Скажите, сокет php-fpm у вас /www/php-fpm.sock? Именно он указан в тексте ошибки.
Может быть ошибка в имени файла?
Обычно он находится в /var/run/php-fpm/php-fpm.sock (/var/run/php5-fpm/php5-fpm.sock в ubuntu/debian)
chown -R nginx:nginx /etc/zabbix/web (был apache)
эхх.. правил для iptables не хватает еще, а так статья зашибись!
В некоторой степени вы правы, в админке пользователь указан с большой буквы, но авторизация проходит с пользователем admin и Admin. Сейчас обновлю информацию. Спасибо 😉
у меня авторизация не проходит с маленькой буквы.
А zabbix на 80 порту работает и все? Ничего открывать больше не надо?
Зависит от того, как вы планируете мониторить.
Если использовать пассивные проверки(сервер сам опрашивает всех клиентов) то больше ничего не нужно.
Я использую активные проверки(все клиенты отправляют данные на сервер в автоматическом режиме) и для этого открыт порт 10051. Этот вариант намного удобнее и проще для массового добавления серверов.
К примеру ваш сервер находится на VPS у хостера, а вы хотите мониторить порядка 15 машин в вашем офисе. Очевидно, что все они находятся за NAT и в случае пассивных проверок для каждой нужно пробрасывать порт.
По-этому я не использую этот метод совсем, а остановился исключительно на активных проверках
О, спасибо. Буду экспериментировать 🙂
Я еще вопрос задам. Только не ругайтесь:)
location /phpmyadmin/ alias /usr/share/phpMyAdmin/;
локейшн это как раз ссылочка
а alias это физический путь к файликам.
Я иногда делаю хитро: конфиг nginx-а вообще не трогаю, а просто создаю симлинк на реальный каталог с phpMyAdmin внутри того каталога, где находится сайт 🙂
Во! Теперь все понятно. Спасибо!
Very good post! We will be linking to this great article on our website.
Keep up the great writing.
If you want to get a good deal from this article then you have to apply these strategies to your
won web site.
Highly descriptive post, I enjoyed that a lot. Will there be a part 2?
I got this site from my pal who told me regarding this web page and now this time I am visiting this
website and reading very informative content here.
Zabbix — свободная система мониторинга и отслеживания статусов разнообразных сервисов компьютерной сети, серверов и сетевого оборудования.
TimescaleDB — это расширение PostgreSQL для работы с временными рядами (time series). Временные ряды можно хранить в PostgreSQL и просто так, но TimescaleDB обеспечивает большую производительность на том же железе.
Установка Zabbix и Nginx
Добавляем репозиторий Zabbix
Добавляем репозиторий Nginx
По умолчанию будет использоваться стабильная версия. Если нужна основная версия(mainline), переключаемся
Удаляем все метаданные
Устанавливаем Zabbix для БД PostgreSQL и Nginx
Установка PostgreSQL 13
Отключаем модуль PostgreSQL в предустановленном по умолчанию репозитории AppStream
Добавляем репозиторий PostgreSQL
Устанавливаем PostgreSQL 13
Основной конфиг PostgreSQL расположен тут:
Запускаем PostgreSQL и добавляем сервис в автозагрузку
Устанавливаем пароль для пользователя postgres
Установка TimescaleDB
Добавляем репозиторий TimescaleDB
Тюним PostgreSQL (от рута)
Настройка Zabbix и Nginx
Переключаемся на пользователя root
Создаем пользователя БД для Zabbix
Создадим БД для Zabbix
Импортируем начальную схему и данные
Подключаем расширение timescaledb
Скачиваем исходники Zabbix и распаковываем архив
Импортируем схему и данные для расширения timescaledb в PostgreSQL
Редактируем конфиг PostgreSQL
Настраиваем подключение Zabbix к PostgreSQL
Перезапускаем сервисы и добавляем их в автозагрузку
Настройка Firewall и SeLinux
Открываем порты 80/443
Выполним следующие команды, чтобы предоставить веб-интерфейсу Zabbix разрешение на соединение с сервером
Также нужно предоставить веб-интерфейсу Zabbix разрешение на соединение с базой данных
Cкачиваем готовый модуль для настройки SeLinux
Cоздаем свой модуль. Для того, чтобы это получилось, нужно хотя бы один раз неудачно запустить zabbix server с включенным selinux.
Старое правило IT индустрии о том что: «Быстро поднятое, не считается упавшим!» по прежнему действует, но чтобы оно выполнялось, необходимо оперативно об этих проблемах узнавать, для этого существуют системы мониторинга, человеку не реально отследить все глубинные процессы происходящие в системе, но система мониторинга соберет всю информацию и представит в удобоваримой форме, а в случае проблем еще и уведомит о них.
Вот я решил рассказать как настроить сервер мониторинга Zabbix, а в качестве бэкедна будет использоваться PostgresSQL, также, мы настроим Web интерфейс, который будет работать через Nginx и php-fpm.
PostgresSQL обладает довольно большим функционалом, некоторых функций нет MySQL, также выбор пал на Postgres потому что один проект был заточен под этот SQL сервер и городить что-то дополнительное не хотелось. Альтернативой MySQL можно использовать Percona или MariaDB но все это форки, да и репликация, в PostgresSQL, работает из коробки, а в MySQL она есть, но требует некоторых телодвижений, для ее настройки, да и качество работы репликации мне не понравилось.
Для начала добавим необходимые репозитории, но первым делом нам необходимо отключить SELinux, а затем добавим репозиторий Epel, без него не добавится репозиторий Remi
Что мы имеем в наличии.
ОС SentOS 7
нам момент написания статьи были доступны следующие версии пакетов
PostgreSQL 9.4
Zabbix 2.4
Nginx 1.6.2
ну и остальное по мелочи.
Результатом наших действий станет полностью готовый к использованию сервер мониторинга Zabbix 2.2+PostgresSQL 9.4+Nginx+php-fpm
Приводи ее к виду
Добавим репозиторий
Epel для CentOS 7 — Актуальную версию можно увидеть на его сайте
Remi для CentOS 7 За актуальной версией прошу на официальный сайт
Postgres-Актуальную версию файла настроек репозитория, а также, последний релиз можно узнать тут
Zabbix — настройки репозитория и последнюю версию можно скачать с официального репозитория
Добавим репозиторий, со стабильной версией, Nginx, подробнее о котором можно узнать на официальном сайте
Для начала обновим систему
После этого перезагрузим систему, чтобы отключился SELinux и применились обновления.
Переходим установке необходимых пакетов и небольших настроек, все основные настройки мы будем делать позже.
Устанавливаем Web-сервер Nginx + php-fpm
отредактируем файл настроек php-fpm чтобы закрыть уязвимость
Находим строку ;cgi.fix_pathinfo=1 и приводим ее к виду
нам остается добавить nginx и php-fpm в автозагрузку, чтобы они стартовали вместе с системой, в CentOS 7 изменился способ управления службами c init.d на systemctl
нам остается запустить указанные службы
если мы попробуем подключиться к серверу Nginx, по IP адресу сервера, то у нас ничего не получится т.к. этого не дает сделать фаерволл, создадим разрешающее правило:
Перезапустим фаерволл, чтобы применить изменения
Пробуем зайти и видим стандартную страницу Nginx. отлично все работает
Устанавливаем сервер баз данных PostgresSQL
Для начала выясним какие пакеты нам доступны
Из этого списка можно «скопипастить», то что нам нужно
нам также необходимо добавить его в автозапуск
Выполним инициализацию нового сервера баз данных PostgresSQL
Устанавливаем Zabbix server, Zabbix agent и Web-интерфейс Zabbix
При установке данных пакетов к нам приедет еще много чего, в качестве зависимостей, так что специально указывать требуемые пакеты, нет необходимости.
Также добавим zabbix server и агент в автозапуск
Но пока мы их запускать не будем
мы установили требуемые пакеты и сделали мелкие настройки системы, а сейчас перейдем непосредственно к настройкам системы.
Настройка Nginx и php-fpm
Постараюсь рассмотреть оба варианта, тем более что это не потребует сильно уходить от темы, сама заготовка для конфига, виртуального хоста, у меня подготовлена уже очень давно, ее я довольно часто использую, включая статьи на этом сайте.
Выбираем один из 2х вариантов:
Имя может быть любым, но заканчиваться должно на .conf иначе nginx его не загрузит.
И добавляем в него содержимое:
Открываем страницу и получаем 500ю ошибку т.к. некоторые файлы не погрузились, из-за того что не хватает прав доступа, есть 2 пути решения проблемы, первый и более сложный, сменить владельца файлов и директорий веб интерфейса Zabbix на пользователя Nginx ( под этим пользователем работает web сервер) или более простой запустить Nginx под другим пользователем, а именно apache происходит это потому что, изначально, веб морда zabbix рассчитана на работу с Apache и про Nginx ничего не знает, этот пользователь создается автоматически при установке php-fpm, в общем идем в:
Перезапустим nginx, а заодно и php-fpm чтобы загрузились те пакеты, которые приехали при установке zabbix22-web-pgsql
Снова заходим на страницу и видим что у нас появилась страница установки zabbix
нажимаем Next и попадаем на страницу проверки конфигурации, наша конфигурация не проходит проверку и дальнейшая установка не возможна, все с чем возникла ошибка выделено красным, чтобы продолжить установку нам необходимо устранить все замечания инсталлятора, а для этого настроим PHP
Суть в том что Zabbix требует некоторых настроек, которые, мне бы не хотелось, чтобы распространились на весь сервер.
php-fpm позволяет делать индивидуальные настройки php для каждого виртуального хоста т.к. у разных CMS могут быть разные требования к системе, то давать одинаковые правила на весь сервер это не правильно, вот для этих целей существуют пулы в php-fpm.
Пулом, по умолчанию, является www настройки которого лежат в:
Свой пул, назовем его zabbix, мы создадим на основе пула www, но сначала мы укажем настройку которую можно применить на весь сервер, а это параметры временной зоны. У нас они подсвечены красным в пункте PHP time zone для этого отредактируем php.ini
И указываем в ней временную зону Europe/Moscow (указываем свой часовой пояс!), обязательно сняв комментарий со строки, чтобы выглядело:
Сохраняем изменения и перезапускаем php-fpm
Создаем свой пул php-fpm, для этого перейдем в директорию где эти пулы расположены
теперь у нас есть копия пула, которую нам необходимо отредактировать, добавив в нее необходимые настройки.
Самым первым указываем имя пула
Приводи его к виду
меняем порт для его работы, т.к. пул www у нас работает на порту 9000 то пул zabbix мы переведем на порт 9001, находим строку и приводим ее к виду:
И нам осталось добавить 3 параметра, чтобы запустить установку Zabbix web Интерфейса
ну и добавим оставшиеся параметры PHP, их можно передать через значение php_value
нам необходимо добавить эти параметры, значения которых можно увидеть странице установки zabbix, они сейчас красные.
Переходим в самый конец файла, там уже есть подобные строки и добавляем рядом с ними чтобы параметры лежали рядом и их было легче найти.
после этого нам необходимо перезапустить PHP-FPM, а также перенастроить виртуальных хост Nginx чтобы он обращался к PHP-FPM через порт 9001, где у нас создан создан пулл zabbix.
Для первого варианта
Для воторого варианта
Перезапускаем php-fpm и nginx
Снова заходим на страницу установки Zabbix, обновляем ее и видим что все требования выполнены и возможно дальше продолжить установку
К ней мы вернемся позднее т.к. ну нас не настроен PostgresSQL не создан пользователь, отсутствует база, а также содержимое базы данных.
Настройка PostgresSQL
Создадим пользователя, таблицу и предоставим права на эту таблицу
Заходим в консоль пользователя postgres
подключаемся к серверу базы данных
Создадим пользователя и таблицу с именем zabbixsrv и предоставим пользователю права на использование данной таблицы (естественно пароль указываем свой):
Мы создали пользователя с именем zabbixsrv паролем zabbixsrvpassword и базу данных с именем zabbixsrv
При выполнении команд получаем следующее
Проверим что таблицы содались
получим похожее на такое
отключаемся от базы
завершаем сессию пользователя postgres
Теперь нам необходимо перенастроить сам сервер postgresql
Сначала разрешим слушать порт
приводим к виду
Сохраняем изменения
Теперь нам необходимо предоставить права достпа пользователю zabbixsrv к базе данных, по паролю, для этого нам необходимо отредактировать другой файл
И перед ней добавляем запись, чтобы выглядело
Запись, разрешающая доступ, обязательно должна быть именно так как указано!
Пререзапускаем сервер postgresql
Далее, нам необходимо добавить данные в таблицу, чтобы зайти в консоль под пользователем zabbixsrv нужно ему разрешить это делать, для этого отредактируем файл passwd
Находим строку пользователя zabbixsrv в ней прописано что он не может использовать консоль /sbin/nologin
дадим пользователю права на использование консоли /bin/bash
Теперь мы можем зайти под пользователем zabbixsrv
Импортируем содержимое SQL дампа в базу данных:
С базой данных мы закончили, теперь осталось настроить zabbix сервер
Настраиваем Zabbix
Мы выходим на финишную прямую нам осталось настроить Zabbix сервер и завершить настройку WEB интерфейса.
Отредактируем конфигурационный файл сервера Zabbix
находим строки и приводим их к виду
Где
DBName -имя базы данных
DBUser — имя пользователя для подключения
DBPassword — пароль для подключения
Как вы могли догадаться, мы их создали при PostgressSQL ранее
там же найти и закомментировать
Указать порт для подключения
Запустим zabbix сервер
нам остается настроить WEB интерфейс возвращаемся в браузер и жмем Next переходим на страницу Configure DB connection
в поле Database host — указываем адрес сервера 127.0.0.1
Database port — стандартный порт postgres 5432
Database name — имя базы данных zabbixsrv
User — логин пользователя zabbixsrv
Password — ну тут и так все понятно zabbixsrvpassword
Жмем Test connection
если видим зеленый ОК то все нормально (как на скриншоте) можно жать Next.
Тут можно все оставить как есть
Тут проверяем параметры конфигурации.
Даже и описывать нечего, жмем Finish
Попадаем в окно входа, логин Admin пароль zabbix
Наш сервер готов, меняем стандартные пароли и добавляем хосты для мониторинга, и пользуемся.
На этом я и закончу, спасибо что дочитали до конца.
Читайте также: