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

Thank you for reading this post, don't forget to subscribe!

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

 

Установка mysql на CentOS 7

Прак­ти­че­ски ни один web сер­вер сей­час не обхо­дит­ся без mysql. В centos 7 вме­сто mysql уста­нав­ли­ва­ет­ся mariadb, кото­рая име­ет пол­ную сов­ме­сти­мость с mysql, в том чис­ле пони­ма­ет все ее коман­ды. Так что ста­вим на сервер:

# yum install -y mariadb mariadb-server net-tools

Добав­ля­ем в автозапуск:

# systemctl enable mariadb.service
ln -s '/usr/lib/systemd/system/mariadb.service' '/etc/systemd/system/multi-user.target.wants/mariadb.service'

И запус­ка­ем:

# systemctl start mariadb.service

Про­ве­ря­ем, запу­сти­лась ли mysql:

Все в порядке.

Теперь вос­поль­зу­ем­ся скрип­том без­опас­но­сти, кото­рый поз­во­лит задать пароль root и про­из­ве­сти неко­то­рые настройки:

 

Установка php-fpm на CentOS 7

Уста­нав­ли­ва­ем php-fpm и неко­то­рые моду­ли, кото­рые ско­рее все­го при­го­дят­ся в даль­ней­шей работе:

yum install -y php-fpm php-cli php-mysql php-gd php-ldap php-odbc php-pdo php-pecl-memcache php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap

Так же я пред­ла­гаю уста­но­вить APC - бес­плат­ный и откры­тый кэшер кода PHP, кото­рый кэши­ру­ет и опти­ми­зи­ру­ет про­ме­жу­точ­ный код PHP, уско­ряя его испол­не­ние. Уста­но­вим APC из хра­ни­ли­ща PHPpecl. Для того, что­бы ском­пи­ли­ро­вать пакет APC нуж­но уста­но­вить Centos Development tools.

# yum install -y php-devel
# yum groupinstall 'Development Tools'

Ком­пи­ли­ру­ем APC:

# pecl install apc

На все вопро­сы про­сто жмем enter, выби­рая пара­мет­ры по-умолчанию.

Теперь отре­дак­ти­ру­ем /etc/php.ini как нам реко­мен­ду­ет инсталлятор:

# mcedit /etc/php.ini

Зада­ем пара­метр cgi.fix_pathinfo=0 и добав­ля­ем в кон­це стро­ку extension=apc.so
Заод­но уста­но­вим сра­зу же часо­вой пояс: date.timezone = "Europe/Moscow"

Созда­дим файл настро­ек APC:

# mcedit /etc/php.d/apc.ini

Добав­ля­ем php-fpm в автозагрузку:

И запус­ка­ем:

Про­ве­ря­ем:

 

Теперь пра­вим кон­фиг php-fpm, при­во­дим его к сле­ду­ю­ще­му виду:

# mcedit /etc/php-fpm.d/www.conf

Пере­за­пус­ка­ем php-fpm:

# systemctl restart php-fpm.service

 

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

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

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

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

 

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

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

Ста­вим непо­сред­ствен­но web сервер:

# yum install -y nginx

Добав­ля­ем в автозагрузку:

# systemctl enable nginx.service

И запус­ка­ем:

# systemctl start nginx.service

Про­ве­ря­ем, запу­стил­ся ли:

Теперь мож­но зай­ти на тесто­вую стра­нич­ку, что­бы убе­дить­ся, что nginx работает:

http://ip_сервера

Не забудь­те открыть 80-й порт на фаерволе.

мы выне­сем настрой­ки хоста для заб­бик­са в отдель­ный кон­фи­гу­ра­ци­он­ный файл в пап­ку /etc/nginx/conf.d.

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

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

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

# mcedit /etc/nginx/conf.d/zabbix.conf

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

fastcgi_pass 127.0.0.1:9000;

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

# nginx -t

Если все ОК, то даль­ше мож­но при­сту­пать к уста­нов­ке zabbix 3.0.

 

Подключаем официальный репозиторий 3.0:

Уста­нав­ли­ва­ем Zabbix сер­вер с веб-интер­фей­сом и с базой дан­ных MySQL:

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

topsecret пароль поль­зо­ва­те­ля root mysql, это не систем­ный root
zabpassword пароль поль­зо­ва­те­ля zabbix, у кото­ро­го пол­ный доступ к базе mysql zabbix

Теперь импор­ти­ру­ем схе­му БД и началь­ные данные.

Обра­щаю вни­ма­ние на выде­лен­ный путь. Воз­мож­но, путь будет дру­гой, когда вы буде­те уста­нав­ли­вать, так как вый­дет новая вер­сия. Имей­те это ввиду.

Теперь редак­ти­ру­ем файл кон­фи­гу­ра­ции сер­ве­ра заб­бикс. Про­пи­сы­ва­ем дан­ные для под­клю­че­ния к БД.

Изме­ня­ем строки:

Этих мини­маль­ных настро­ек доста­точ­но, для рабо­ты сер­ве­ра. Запус­ка­ем его и добав­ля­ем в автозагрузку.

Про­ве­ря­ем лог файл на нали­чие ошибок.

Если у вас так же, зна­чит все в поряд­ке. Сер­вер штат­но запу­стил­ся и готов к работе.

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

Сохра­ня­ем файл. Теперь запус­ка­ем  php-fpm

systemctl start php-fpm

Мож­но захо­дить на веб интер­фейс по адре­су http://192.168.1.25/zabbix, где 192.168.1.25 ip адрес сер­ве­ра, где уста­нав­ли­ва­ем и настра­и­ва­ем мониторинг.

Откры­ва­ем в бра­у­зе­ре web интер­фейс zabbix. Нас встре­ча­ет стра­ни­ца при­вет­ствия. Если у вас то же самое, вы на вер­ном пути.

Жмем Next step и попа­да­ем на стра­ни­цу про­ве­рок. Если все дела­ли точ­но по инструк­ции, то все про­вер­ки у вас будут пройдены.

Дви­га­ем­ся даль­ше и ука­зы­ва­ем пара­мет­ры для под­клю­че­ния к mysql. Дан­ные те же, что мы ука­зы­ва­ли ранее при созда­нии БД и пользователя.

На сле­ду­ю­щем эта­пе надо ука­зать адрес сер­ве­ра и порт, на кото­ром он будет рабо­тать. Остав­ля­ем зна­че­ния по-умолчанию.

Еше раз про­ве­ря­ем все настрой­ки. Если все в поряд­ке, дви­га­ем­ся даль­ше на заклю­чи­тель­ный этап установки.

Если поучи­ли это сооб­ще­ние, то поздрав­ляю, уста­нов­ка сер­ве­ра мони­то­рин­га Zabbix 3.0 закончена.

 

Нажи­ма­е­те Finish и попа­да­е­те на стра­ни­цу логи­на в систе­му. Дан­ные по умол­ча­нию следующие:

Поль­зо­ва­тель Admin
Пароль zabbix

Нас встре­ча­ет голая панель управ­ле­ния, так как ника­ких пара­мет­ров мы не наблю­да­ем и не име­ем ни одно­го объ­ек­та сбо­ра данных.

Сбор дан­ных мы настро­им чуть поз­же, уста­но­вив zabbix агент на этот же сер­вер. А пока сде­ла­ем неко­то­рые мини­маль­ные и необ­хо­ди­мые настрой­ки на сервере.

Настройка email оповещений

В вер­сии 3.0 нако­нец-то появи­лась настрой­ка уве­дом­ле­ний с авто­ри­за­ци­ей по smtp. Рань­ше для реа­ли­за­ции такой оче­вид­ной и необ­хо­ди­мой функ­ции при­хо­ди­лось поль­зо­вать­ся сто­рон­ни­ми про­грам­ма­ми и скрип­та­ми. Я писал отдель­но об этом - отправ­ка email уве­дом­ле­ний с авто­ри­за­ци­ей smtp. Теперь все это в про­шлом. Настро­им отправ­ку уве­дом­ле­ний через web интерфейс.

Идем в раз­дел Administration -> Media types и нажи­ма­ем на Email.

Ука­зы­ва­ем сле­ду­ю­щие настрой­ки для отправ­ки почты через gmail

Это мы настро­и­ли адрес отправ­ки. Теперь нуж­но поль­зо­ва­те­лю доба­вить адрес для полу­че­ния. Для это­го идем в Administration -> Users, выби­ра­ем поль­зо­ва­те­ля Admin.

Идем в заклад­ку Media и жмем add.

Ука­зы­ва­ем поч­то­вый ящик получателя

Жмем Add, затем Update. Даль­ше нуж­но акти­ви­ро­вать отправ­ку уве­дом­ле­ний по собы­ти­ям. Для это­го идем в Configuration -> Actions и жмем на Disabled, что­бы она ста­ла Enabled.

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

Установка zabbix agent на CentOS 7

Доба­вим теперь хотя бы одно­го аген­та мони­то­рин­га, что­бы про­ве­рить рабо­ту систе­мы. Уста­нав­ли­вать будем на этот же сер­вер. Дела­ет­ся это просто:

Для рабо­ты с сер­ве­ром, кото­рый уста­нов­лен локаль­но на этой же машине, боль­ше ника­ких настро­ек не надо делать. Если же вы буде­те уста­нав­ли­вать zabbix agent на уда­лен­ную маши­ну, то в фай­ле кон­фи­гу­ра­ции аген­та /etc/zabbix/zabbix_agentd.conf нуж­но будет задать сле­ду­ю­щие параметры:

Запус­ка­ем агент и добав­ля­ем в автозагрузку:

Про­ве­ря­ем лог файл.

У меня там сле­ду­ю­щая ошиб­ка. Я знаю с чем она свя­за­на. На сер­ве­ре по-умол­ча­нию уже добав­лен локаль­ный host для мони­то­рин­га, но он отклю­чен. Что­бы его вклю­чить, идем в раз­дел Configuration -> Hosts и акти­ви­ру­ем Zabbix server нажа­ти­ем на Disabled, что­бы он стал Enabled.

Мож­но подо­ждать, либо вруч­ную пере­за­пу­стить агент, что­бы сра­зу про­ве­рить изменения:

Для надеж­но­сти, про­ве­ря­ем еще раз лог файл на нали­чие оши­бок. Их быть не долж­но. Агент зара­бо­тал и начал отправ­лять дан­ные на сер­вер. Что­бы про­ве­рить поступ­ле­ние дан­ных, надо подо­ждать пару минут и идти в раз­дел Monitoring -> Latest data. Выбрать там наш един­ствен­ный хост и нажать Filter.

Вид­но, что дан­ные уже нача­ли поступать.

Теперь попро­бу­ем оста­но­вить агент и про­ве­рить, при­дет ли уве­дом­ле­ние на почту. Идем в кон­соль и выклю­ча­ем агента:

Ждем мини­мум 5 минут. Имен­но такой интер­вал ука­зан по-умол­ча­нию для сра­ба­ты­ва­ния триг­ге­ра на недо­ступ­ность аген­та. После это­го про­ве­ря­ем Dashboard.

При наве­де­нии мыш­ки на циф­ру 1 в столб­це ACTIONS вы уви­ди­те инфор­ма­цию о том, что опо­ве­ще­ние по email было отправ­ле­но поль­зо­ва­те­лю Admin. На почте у вас будет письмо:

После воз­об­нов­ле­ния рабо­ты аген­та, вы еще раз полу­чи­те уве­дом­ле­ние о том, что он теперь доступен.