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 порту. Я обычно изменяю эту настройку на использование доменных сокетов. Так шустрее и безопаснее.

error

Забегая наперёд скажу, что нужно отредактировать некоторые параметры 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 5.4, Nginx, PostgreSQL 13 + TimescaleDB в Centos 8 / Rocky Linux 1

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

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

Читайте также: