Расскажу как производится установка zabbix 4.2 на систему CentOS 7. Эта статья будет первая в цикле статей посвященных мониторингу Zabbix. Долго вникал в нюансы работы Zabbix и настало время поделится этими знаниями.

Введение

Устанавливать систему мониторинга будем в контейнере LXC работающем на CentOS 7. Установка Zabbix в контейнере LXC для меня самый оптимальный вариант. Перед обновлением можно сделать снимок и в случае проблем очень оперативно вернуть систему в рабочее состояние.

Более подробно о том как развернуть систему контейнеров LXC на операционной системе CentOS 7 можно из статьи LXC установка на CentOS 7. Узнать как производится работа с контейнерами можно из статьи Работа с LXC контейнерами.

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

Подготовка системы для установки Zabbix

Отключение SELinux

Отключаем SELinux. Его использование и настройка в системе CentOS отдельный разговор.

vi /etc/sysconfig/selinux
= меняем значение =
SELINUX=disabled

Перезагрузим для применения изменений. После перезагрузки проверяем статус:

sestatus
= вывод команды =
SELinux status: disabled

Установка NGINX

Более детально о том как работать с Nginx вы можете из статьи NGINX установка и настройка.

Подключаем репозиторий Nginx и устанавливаем его:

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

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

systemctl start nginx
systemctl enable nginx

В нашем случае Nginx работает в контейнере LXC. Введем в консоли команду:

curl http://localhost
= вывод команды =
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

Как видим Nginx работает.

Установка PHP

Более детально о том как работать с PHP вы можете из статьи PHP от Remi для CentOS 7.

Устанавливать будет версию 7.2 используя репозиторий Remi. Для этого подключаем репозиторий remi и epel-release:

yum install epel-release
rpm -Uhv http://rpms.remirepo.net/enterprise/remi-release-7.rpm

Активируем php 7.2, для этого выполняем команды:

yum install yum-utils
yum-config-manager --enable remi-php72

Устанавливаем php 7.2 и необходимые модули выполнив команду:

yum install php72 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 php-bcmath

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

systemctl start php-fpm
systemctl enable php-fpm

Настроим работу php-fpm через unix сокет. Открываем необходимый конфиг и приведем его к следующему виду:

# vim /etc/php-fpm.d/www.conf
[www]
user = nginx
group = nginx

;listen = 127.0.0.1:9000
listen = /var/run/php-fpm/php-fpm.sock
listen.mode = 0660
listen.owner = nginx
listen.group = nginx

listen.allowed_clients = 127.0.0.1

pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35

slowlog = /var/log/php-fpm/www-slow.log
php_admin_value[error_log] = /var/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on
php_value[session.save_handler] = files
php_value[session.save_path]    = /var/lib/php/session
php_value[soap.wsdl_cache_dir]  = /var/lib/php/wsdlcache

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

systemctl restart php-fpm

Проверяем работу сокета:

ll /var/run/php-fpm/php-fpm.sock
= вывод команды =
srw-rw----. 1 nginx nginx 0 Oct  4 15:08 /var/run/php-fpm/php-fpm.sock

Все работает как надо.

Установка MariaDB

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

Подключаем свежий репозиторий создав необходимый файл следующего содержания:

vim /etc/yum.repos.d/mariadb.repo
= необходимый код =
# MariaDB 10.3 CentOS repository list - created 2018-10-04 12:10 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Устанавливаем последнюю версию MariaDB выполнив команду:

yum install MariaDB-server MariaDB-client

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

systemctl start mariadb
systemctl enable mariadb

Запускаем скрипт начальной конфигурации mysql и задаем пароль для root выполнив команду:

/usr/bin/mysql_secure_installation

Откроем конфигурационный файл сервера MariaDB  и приводим его к следующему виду:

vim /etc/my.cnf.d/server.cnf
= необходимые добавления =
[mysqld]
character_set_server=utf8
collation-server=utf8_bin
init_connect="SET NAMES utf8 collate utf8_bin"
port		= 3306
socket		= /var/lib/mysql/mysql.sock

innodb_file_per_table=1
innodb_buffer_pool_size = 768M # внимание на параметр! установить примерно в 2 раза меньше объема оперативной памяти сервера
innodb_buffer_pool_instances=1 # увеличивать на 1 каждый GB innodb_buffer_pool_size
innodb_flush_log_at_trx_commit = 0
innodb_log_file_size = 512M
innodb_log_files_in_group = 3


Заданы некоторые важные параметры по innodb, в частности указание хранить каждую таблицу в отдельном файле, задан размер и количество бинарных логов и еще несколько настроек, которые важны. В большинстве случае, достаточно будет этих настроек.

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

systemctl restart mariadb
systemctl status mariadb.service

Установка Zabbix

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

Подключение репозитория Zabbix

Подключаем репозиторий версии Zabbix 4.2 выполнив необходимую команду:

rpm -Uvh https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-1.el7.noarch.rpm
= вывод команды =
Загружается https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-1.el7.noarch.rpm
предупреждение: /var/tmp/rpm-tmp.W8KoVE: Заголовок V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY
Подготовка...               ################################# [100%]
Обновление / установка...
   1:zabbix-release-4.2-1.el7         ################################# [100%]

Очищаем и пересоздаем кэш yum:

yum clean all
yum makecache

Установка Zabbix сервера

Произведем установку введя в консоли следующую команду:

yum install zabbix-server-mysql zabbix-web-mysql

Создание базы данных для Zabbix сервера

Создадим базу данных, пользователя zabbix и заполним базу необходимыми данными:

mysql -uroot -p
= указываем пароль root пользователя mariadb =
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 8
Server version: 10.3.14-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

= создание бызы zabbix с необходимыми параметрами =
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.003 sec)

= создание пользователя zabbix с необходимиыми правами =
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'password';
Query OK, 0 rows affected (0.008 sec)

MariaDB [(none)]> exit
Bye

= заполнение базы данных необходимыми параметрами =
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
= пароль пользователя zabbix =
Enter password: 
root@zabbix-lxc-lemp.sevo44.loc / #

Редактируем файл конфигурации сервера Zabbix. Прописываем данные для подключения к БД и некоторые другие параметры:

vim /etc/zabbix/zabbix_server.conf
= необходимые данные =
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=password
ListenIP=0.0.0.0
Timeout=10

Этих минимальных настроек достаточно, для работы сервера. Параметр Timeout увеличен, так как он отвечает за время ожидания ответа от агента. Стандартного значения в 4 секунды бывает недостаточно, когда используется скрипт который долго выполняется для получения метрики.

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

systemctl start zabbix-server
systemctl enable zabbix-server

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

cat /var/log/zabbix/zabbix_server.log
= вывод команды =
2373:20190416:222404.662 Starting Zabbix Server. Zabbix 4.2.0 (revision 91746).
  2373:20190416:222404.667 ****** Enabled features ******
  2373:20190416:222404.667 SNMP monitoring:           YES
  2373:20190416:222404.667 IPMI monitoring:           YES
  2373:20190416:222404.668 Web monitoring:            YES
  2373:20190416:222404.668 VMware monitoring:         YES
  2373:20190416:222404.669 SMTP authentication:       YES
  2373:20190416:222404.669 Jabber notifications:       NO
  2373:20190416:222404.670 Ez Texting notifications:  YES
  2373:20190416:222404.671 ODBC:                      YES
  2373:20190416:222404.671 SSH2 support:              YES
  2373:20190416:222404.672 IPv6 support:              YES
  2373:20190416:222404.672 TLS support:               YES
  2373:20190416:222404.673 ******************************
  2373:20190416:222404.673 using configuration file: /etc/zabbix/zabbix_server.conf
  2373:20190416:222404.720 current database version (mandatory/optional): 04020000/04020000
  2373:20190416:222404.721 required mandatory version: 04020000
  2373:20190416:222404.838 server #0 started [main process]
  2374:20190416:222404.846 server #1 started [configuration syncer #1]
  2375:20190416:222404.855 server #2 started [alerter #1]
  2379:20190416:222404.865 server #6 started [timer #1]
  2377:20190416:222404.872 server #4 started [alerter #3]
  2378:20190416:222404.882 server #5 started [housekeeper #1]
  2376:20190416:222404.891 server #3 started [alerter #2]
  2380:20190416:222404.899 server #7 started [http poller #1]
  2381:20190416:222404.907 server #8 started [discoverer #1]
  2393:20190416:222404.916 server #20 started [poller #4]
  2395:20190416:222404.934 server #22 started [unreachable poller #1]
  2384:20190416:222404.944 server #11 started [history syncer #3]
  2399:20190416:222404.954 server #26 started [trapper #4]
  2387:20190416:222405.009 server #14 started [proxy poller #1]
  2386:20190416:222405.018 server #13 started [escalator #1]
  2388:20190416:222405.030 server #15 started [self-monitoring #1]
  2389:20190416:222405.041 server #16 started [task manager #1]
  2390:20190416:222405.051 server #17 started [poller #1]
  2407:20190416:222405.064 server #34 started [lld manager #1]
  2392:20190416:222405.077 server #19 started [poller #3]
  2394:20190416:222405.089 server #21 started [poller #5]
  2409:20190416:222405.119 server #36 started [lld worker #2]
  2383:20190416:222405.152 server #10 started [history syncer #2]
  2396:20190416:222405.160 server #23 started [trapper #1]
  2385:20190416:222405.172 server #12 started [history syncer #4]
  2398:20190416:222405.187 server #25 started [trapper #3]
  2397:20190416:222405.198 server #24 started [trapper #2]
  2400:20190416:222405.208 server #27 started [trapper #5]
  2401:20190416:222405.215 server #28 started [icmp pinger #1]
  2403:20190416:222405.225 server #30 started [preprocessing manager #1]
  2402:20190416:222405.233 server #29 started [alert manager #1]
  2391:20190416:222405.241 server #18 started [poller #2]
  2408:20190416:222405.252 server #35 started [lld worker #1]
  2382:20190416:222405.260 server #9 started [history syncer #1]
  2406:20190416:222406.068 server #33 started [preprocessing worker #3]
  2404:20190416:222406.104 server #31 started [preprocessing worker #1]
  2405:20190416:222406.135 server #32 started [preprocessing worker #2]

Должен быть примерно такой вывод.

Настройка Nginx

Так как в контейнере будет работать только Zabbix мы отредактируем дефолтный фал приведя его к виду:

vim /etc/nginx/conf.d/default.conf
= необходимый код =
server {
    listen       80;
    server_name  zabbix.sevo44.loc;
    root /usr/share/zabbix;

    location / {
    index index.php index.html index.htm;
    }

    location ~ \.php$ {
    fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include fastcgi_params;
    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_buffers 8 256k;
    fastcgi_buffer_size 128k;
    fastcgi_intercept_errors on;
    fastcgi_busy_buffers_size 256k;
    fastcgi_temp_file_write_size 256k;
        }
}

Проверим конфиг на ошибки и если все в порядке, перезапустим 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 -s reload

Настройка Nginx на хосте LXC

В нашем случаем на хосте на котором работает система LXC необходимо настроить Nginx для проксирования сигналов в контейнер.

В параметрах расписано два варианта работы. Параметры для работы с SSl закоментированны:

vim /etc/nginx/conf.d/proxy-zabbix.sevo44.loc.conf
= необходимый код =
# ssl zabbix.sevo44.loc
#server {
#listen 80;
#server_name zabbix.sevo44.loc www.zabbix.sevo44.loc;
#rewrite ^ https://$server_name$request_uri? permanent;
#}

server {
listen 80;
#listen 443 ssl http2;
server_name zabbix.sevo44.loc www.zabbix.sevo44.loc;

### ssl
#ssl on;
#ssl_certificate /etc/letsencrypt/live/zabbix.sevo44.loc/fullchain.pem;
#ssl_certificate_key /etc/letsencrypt/live/zabbix.sevo44.loc/privkey.pem;
#ssl_session_timeout 5m;
#ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#ssl_dhparam /etc/ssl/certs/dhparam.pem;
#ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
#ssl_prefer_server_ciphers on;
#ssl_session_cache shared:SSL:10m;

#location /.well-known/acme-challenge/ {
#root /var/www/ssl/zabbix.sevo44.loc/;
#}

# Включение сжатия GZIP
# Если используется NGINX proxy надо настраивать на нём!!!
gzip on;
gzip_static on;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript image/x-icon image/svg+xml application/x-font-ttf;
gzip_comp_level 6;
gzip_proxied any;
gzip_min_length 1000;
gzip_disable "msie6";
gzip_vary on;

location / {
proxy_pass http://10.10.0.6:80;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
# Вставил ниже когда было ограничение на зугрузку файлов свыше 1 метра
# так же нужна строчка в файле настройки сайта
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 6000;
proxy_read_timeout 6000;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}

Проверим конфиг на ошибки и если все в порядке, перезапустим 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 -s reload

В случае если вам захочется перевести работу сервера Zabbix на протокол https вам будет достаточно по статье SSL бесплатный для сайта Nginx получить бесплантый сертификат и подредактировать вышеизложенный конфиг.

Настройка Zabbix для работы с Nginx

Важный нюанс. Надо изменить права доступа на некоторые папки. Назначить владельца nginx. Этот шаг нужно будет проделывать после каждого обновления php или zabbix. Связано с тем, что по-умолчанию zabbix идет в комплекте с apache и рассчитан на работу с ним. Поэтому после установки или обновления, он делает его владельцем директории /etc/zabbix/web.

chown -R nginx:nginx /var/lib/php/session
chown -R nginx:nginx /etc/zabbix/web

Настройка DNS для работы с сервером Zabbix

Осталось добавить домен в DNS или как к моем случае добавим строчку в файл /etc/hosts на компьютере с которого будем открыват

vim /etc/hosts
= необходимый параметр =
192.168.0.103 zabbix.sevo44.loc

Порты работы Zabbix

Заостряю ваше внимание на том с какими портами работает Zabbix это важно если в работе вы будете использовать как активный так и пасивный агент. В татье про настройку Zabbix я более подробно распишу как это делается.

В система Zabbix используется два порта:

  • 10050 — порт по которому zabbix опрашивает клиентов (пасивный агент);
  • 10051 — порт на котором zabbix получает данные от активных клиентов (активный агент).

На сервре Zabbix должен быть открыт порт 10051, на клиенте порт 10050.

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

Настройка Zabbix внешнего интерфейса

Переходим к настройки web лица (Frontend). Вводим в браузере доменое имя нашего сервера Zabbix, в моем случае это http://zabbix.sevo44.loc

Видим страницу приветствия.

zabbix_sevo44_1

На следующей странице  происходит проверка параметров перед установкой. Все параметры должы иметь статус OK.

zabbix_sevo44_2

Указываем данные для работы с сервером MariaDB.

zabbix_sevo44_3

Детали Zabbix сервера можно не менять.

zabbix_sevo44_4

После вывода страници с параметами которые вы указали получите финальное сообщение об успешной устаноке web лица.

zabbix_sevo44_5

Окно авторизации Zabbix сервера.

zabbix_sevo44_6

Стандартная учетная запись для входа в web интерфейс zabbix следующая:

  • Admin — пользователь;
  • zabbix — пароль.

После авторизации вы увидите стандартный dashboard.

zabbix_sevo44_7

 

Установка и настройка Zabbix сервера закончена.

Заключение

Из статьи вы узнали как производится установка сервера Zabbix на операционную систему CentOS 7. Расказывать про дальшнейшую настройку сервреа и агентов я специально не стал. Работаю с системой давно, но понять до конца как она работает и как настраивается я смог недано. Статей про установку множество и про начальную настройку тоже, но вот понятныйм языком для людей которые только начинают заниматся администрированием систем я не нашел. Документация Zabbix хороша, но она написана техническим языком который могут понять далеко не все. Например, я долго разбирался с тем как настроить работу активного и пасивного клиента. Знаю точно, что если убрать небольшие сложности при начальном этапе внедрения системы мониторинга Zabbix эта система удовлетварит практически любые требования для мониторинга любых параметров в любой операционной системе.

В следующих статьях я детально раскажу:

  • Как настроить сервер Zabbix;
  • Настроим активных и пасивных агентов в системах Linux и Windows;
  • Научимся обновлять сервер и клиентов (я обновлял с версии 3.0 и сильных сложностей не вознкало).

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Понравилась статья? Поделитесь ей с друзьями!

Похожие по теме записи

Пожалуйста, оставляйте свои комментарии

Мне это важно, так как получая обратную связь я получаю информацию которая позволяет мне улучшить качество написания статей. Кроме того, оставляя комментарии вы помогаете сайту получить более высокий рейтинг у поисковых систем.

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

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