Передовые виртуальные и выделенные серверы для проектов любой сложности и структуры.
 Подписывайтесь на Telegram канал!

Расскажу как производится установка 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]
bind-address = 0.0.0.0 # разрешает подключение со всех хостов
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_format=barracuda
innodb_file_per_table=1
innodb_buffer_pool_size = 1G # установить примерно в 2 раза меньше объема оперативной памяти сервера
innodb_buffer_pool_instances=1
innodb_flush_log_at_trx_commit = 0
innodb_log_file_size = 512M
innodb_strict_mode = 0
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
Enter password: указываем пароль root пользователя mariadb
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
Enter password: пароль пользователя zabbix
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 увеличен, так как он отвечает за время ожидания ответа от агента. Стандартного значения в 3 секунды бывает недостаточно, когда используется Zabbix proxy или скрипт который долго выполняется для получения метрики. В случае переодических отсутсвиях данных в графиках поиграйте с этим параметром.

Запускаем 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 =
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 необходимо выполнить следующие команды:

= открыть порт 10051 =
firewall-cmd --permanent --zone=public --add-service=zabbix-server

= применить изминения =
firewall-cmd --reload

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

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

Переходим к настройки web лица. Вводим в браузере доменое имя нашего сервера 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. Проблема говорит о том что агент не доступен. При установке я специально не стал устанавливать агент, так как в следующей статье я подробно расскажу как устанавливать агентов на разные системы.

Заключение

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

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

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

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

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

4 комментариев для статьи “Установка Zabbix 4.2

  1. Добрый день!

    Не заполнялась база данных из архива, выдавала ошибку

    Row size too large (> 8126). Changing some columns to TEXT or
    BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.

    В файле /etc/my.cnf.d/server.cnf надо добавить параметр: innodb_strict_mode = 0, перезапустить сервис: systemctl restart mariadb
    После чего можно пробовать дальше, но будет ругаться на то, что часть таблиц уже создана. Я просто удалил БД zabbix и созда её заново.

    1. Вы совершенно правы. На обновленной версии в статусе сервера mariadb были ошибки «[Warning] InnoDB: Cannot add field `poc_2_screen` in table `zabbix`.`host_inventory` because after adding it, the row size is 8288 which is greater than maximum allowed size (8126) for a record on index leaf page.» Лечится добавлением параметра что сказали и последующем редактированием поля.
      Спасибо за информацию. Статью подправил.

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

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