В статье кратко описана установка системы мониторинга 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 install —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
Продолжение следует…
Ну есть один маленький косячек
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
Ну и »« нужно заменить на » «
Да, кавычки вставляются в блог неправильно. Есть такая проблемма.
двойной дефис у вас неправильно отображается и копируется. автозамену бы убрали.