Установка Zabbix 3.0.3 на Centos 7.2

On 09/07/2016, in Zabbix, by Алексей Волобуев

В статье кратко описана установка системы мониторинга Zabbix 3-ей версии. Используются для работы nginx, php-fpm, MariaDB. Оптимизация этого ПО не будет. Желающие тонко настроить данные программы могут обратиться в Интернет.

Система мониторинга Zabbix будет ставиться на свежеустановленную систему Centos 7.2. Сервер виртуальный, на гипервизоре VMware.

Подготовка системы.

Заходим в систему под root

Для установки с чистого листа выполним 2 команды

#yum clean all
#yum makecache

Вместо родных VMware Tools поставим Open Source аналог

#yum install open-vm-tools

Перезагружаем сервер

#shutdown -r now

Обновляем систему

#yum update -y

Устанавливаем репозиторий EPEL

#yum install epel-release

Устанавливаем программы, которые в дальнейшем понадобятся

#yum install wget nano

Отключаем возможность заходить по ssh под пользователем root

#nano /etc/ssh/sshd_config

Меняем строку
PermitRootLogin yes на PermitRootLogin no

Перезагружаем сервис

#systemctl reload sshd.service

Отключаем SELinux, (холивар разводить не надо, это не рекомендуется делать, но упрощает жизнь)

#nano /etc/sysconfig/selinux

находим строку
SELINUX=permissive или SELINUX=enforcing

Приводи ее к виду
SELINUX=disabled

Перезагружаем сервер

#shutdown -r now

Настройка менеджера пакетов

Ограничиваем количество установленных версий пакетов до 3-х (например количество версий установленного ядра):

#nano /etc/yum.conf
installonly_limit=3

Устанавливаем дополнительное ПО для работы с менеджером пакетов

#yum -y install yum-cron yum-utils

Включаем проверку новых версий пакетов (информация о новых версиях будет приходить по почте, сами пакеты обновляться автоматически не будут):

#nano /etc/yum/yum-cron.conf

Изменяем строку download_updates

download_updates = no

Добавляем сервис в автозагрузку и стартуем его

#systemctl enable yum-cron.service
#systemctl start yum-cron.service

Устанавливаем Nginx

Добавляем репозиторий

#yum install http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
#yum install nginx

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

# systemctl enable nginx.service

И запускаем:

# systemctl start nginx.service

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

# netstat -tulpn | grep nginx

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 21585/nginx: master

Eсли мы попробуем подключиться к серверу Nginx, по IP адресу сервера, то у нас ничего не получится т.к. этого не дает сделать файерволл, создадим разрешающее правило:

#firewall-cmd —zone=public —add-service=http —permanent

В будущем планирую подключаться через https, поэтому сразу добавляю

#firewall-cmd —zone=public —add-service=https —permanent

Перезапустим файерволл, чтобы применить изменения

#firewall-cmd —reload

Пробуем зайти и видим стандартную страницу Nginx. Отлично все работает.

Установка MariaDB

В Centos 7 вместо mysql устанавливается mariadb, которая имеет полную совместимость с mysql, в том числе понимает все ее команды. Так что ставим на сервер:

# yum install -y mariadb mariadb-server

Вносим изменения (полная настройка здесь не рассматривается)

# nano /etc/my.cnf

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

#Движок по-умолчанию InnoDB
default_storage_engine=InnoDB
#Писать каждую таблицу в отдельный файл
innodb_file_per_table=1

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

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

# systemctl enable mariadb.service

И запускаем:

# systemctl start mariadb.service

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

# netstat -tulpn | grep mysql

tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2482/mysqld

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

# /usr/bin/mysql_secure_installation

Установка PHP-FPM

В базе идет php версии 5.4, поставим php 5.6.
Подключим репозиторий Remi:

#yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
#yum —enablerepo=remi,remi-php56 install php-opcache php-cli php-pear php-pdo php-mysqlnd php-pgsql php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml php-fpm php php-bcmath php-ldap

Выставляем свою таймзону:

#nano /etc/php.ini
date.timezone = «Europe/Moscow»

И правим параметр cgi.fix_pathinfo
cgi.fix_pathinfo=0

Создаем свой пул php-fpm:

#cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/zabbix.conf
#nano /etc/php-fpm.d/zabbix.conf

; Start a new pool named ‘www’.
; the variable $pool can we used in any directive and will be replaced by the
; pool name (‘www’ here)
[zabbix]

Меняем юзера и группу
user = nginx
group = nginx

#меняем стандартный порт
listen = 127.0.0.1:9001

# максимальное количество рабочих процессов
pm.max_children = 10
# число запущенных процессов при старте сервера
pm.start_servers = 2
# минимальное и максимальное количество процессов в простое
pm.min_spare_servers = 1
pm.max_spare_servers = 3

; Set session path to a directory owned by process user
php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/zabbixsession
php_value[soap.wsdl_cache_dir] = /var/lib/php/zabbixwsdlcache

Сохраняем файл, выходим.

Создаем соответствующие директории:

#mkdir -p /var/lib/php/zabbixsession/
#mkdir -p /var/lib/php/zabbixwsdlcache

Даем права пользователю nginx:

#chown -R nginx:nginx /var/lib/php/zabbixsession/
#chown -R nginx:nginx /var/lib/php/zabbixwsdlcache

Прописываем в автозагрузку и стартуем:

# systemctl enable php-fpm.service
# systemctl start php-fpm.service

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

# netstat -tulpn | grep php
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 2882/php-fpm: maste
tcp 0 0 127.0.0.1:9001 0.0.0.0:* LISTEN 2882/php-fpm: maste

Установка Zabbix

Есть прекрасное описание установки на сайте Zabbix, следуем ему

Устанавливаем репозиторий

#rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
#yum install zabbix-server-mysql zabbix-web-mysql

Подготавливаем MAriaDB к работе с Zabbix. Информация отсюда (ссылка):
Заходим в MariaDB:

#mysql -uroot -p<password>

Создаем БД zabbix, пользователя Zabbix с паролем ZabbixZabbix и даем права на БД.

create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@localhost identified by ‘ZabbixZabbix’;
# Обновляем привилегии
flush privileges;
quit;

Сейчас версия zabbix 3.0.3, путь к файлам следующий:

/usr/share/doc/zabbix-server-mysql-3.0.3/

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

#zcat /usr/share/doc/zabbix-server-mysql-3.0.3/create.sql.gz | mysql -uroot -pMysqlroot57\$ndsr zabbix

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

# nano /etc/zabbix/zabbix_server.conf

Изменяем строки:
Размер файл для логов в Мб, при достижении этого объема будет ротация
LogFileSize=10

DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=ZabbixZabbix
DBSocket=/var/lib/mysql/mysql.sock

Прописываем в автозагрузку

# systemctl enable zabbix-server

Запустим Zabbix сервер.

# systemctl start zabbix-server

Проверим статус

# systemctl status zabbix-server

Проверим логи на предмет ошибок

#tail -f /var/log/zabbix/zabbix_server.log

Создадим файл /etc/nginx/conf.d/zabbix.conf, где опишем параметры нашего виртуального хоста для веб-сервера nginx (в данном примере веб-сервер будет считать zabbix сервером по-умолчанию)

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

server {
listen 80 default_server;
server_name monit.xxx.ru;
root /usr/share/zabbix;
index index.php;
# Disable access to important zabbix locations
location ~* ^/(conf|api|include)($|\/) {
deny all;
}

location /
{
root /usr/share/zabbix;
try_files $uri $uri/ /index.php?q=$uri&$args;
}
location ~ \.php$
{

include /etc/nginx/fastcgi_params;

fastcgi_param DOCUMENT_ROOT /usr/share/zabbix;
fastcgi_param SCRIPT_FILENAME /usr/share/zabbix$fastcgi_script_name;
fastcgi_param PATH_TRANSLATED /usr/share/zabbix$fastcgi_script_name;

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_index index.php;
fastcgi_buffers 8 256k;
fastcgi_buffer_size 128k;
fastcgi_intercept_errors on;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_pass 127.0.0.1:9001;
# fastcgi_pass unix:/var/lib/php/php-fpm.sock;

fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;

}

location ~ /\.
{ deny all; }

location = /favicon.ico
{
log_not_found off;
access_log off;
}

}

Проверяем конфигурации nginx

# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Делаем рестарт nginx

#systemctl restart nginx.service

Пытаемся зайти на веб-морду, получаем 500-ю ошибку

2016/07/09 22:09:15 [error] 3324#3324: *1 FastCGI sent in stderr: «PHP message: PHP Warning: require_once(/etc/zabbix/web/maintenance.inc.php): failed to open stream: Permission denied in /usr/share/zabbix/include/classes/core/ZBase.php on line 286
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: 93.XXX.XXX.XXX, server: monit.XXXX.ru, request: «GET / HTTP/1.1», upstream: «fastcgi://127.0.0.1:9001», host: «gw2.XXXXt.ru»

Смотрим, что у нас с правами

#ls -l /etc/zabbix/
total 16
drwxr-x—. 2 apache apache 32 Jun 26 14:27 web
-rw-r——. 1 root zabbix 14920 Jun 26 15:14 zabbix_server.conf

Права по-умолчанию выданы пользователю apache, меняем их на нужного пользователя

#chown -R nginx:nginx /etc/zabbix/web/

После этого заходим на веб-морду и настраиваем подключение.
Значения по-умолчанию для входа:

Логин: Admin
Пароль: zabbix

Обязательно меняем пароль пользователя Admin. Для этого в меню выбираем «Administrations -> Users»
Далее выбираем нужного пользователя, кнопку «Change Password»
Для дальнейшей работы, необходимо открыть в файерволе порты TCP 10050 и 10051:

# firewall-cmd —permanent —add-port=10050/tcp
# firewall-cmd —permanent —add-port=10051/tcp

Перечитываем правила файерволла

# systemctl reload firewalld

Продолжение следует…

Tagged with:  

4 Responses to Установка Zabbix 3.0.3 на Centos 7.2

  1. Евгений:

    Ну есть один маленький косячек

    nginx: [emerg] a duplicate default server for 0.0.0.0:80 in /etc/nginx/conf.d/zabbix.conf:2
    nginx: configuration file /etc/nginx/nginx.conf test failed

  2. Евгений:

    Ну и »« нужно заменить на » «

  3. Да, кавычки вставляются в блог неправильно. Есть такая проблемма.

  4. Сергей:

    двойной дефис у вас неправильно отображается и копируется. автозамену бы убрали.

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

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