Расскажу как производится установка 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
Видим страницу приветствия.
На следующей странице происходит проверка параметров перед установкой. Все параметры должы иметь статус OK.
Указываем данные для работы с сервером MariaDB.
Детали Zabbix сервера можно не менять.
После вывода страници с параметами которые вы указали получите финальное сообщение об успешной устаноке web лица.
Окно авторизации Zabbix сервера.
Стандартная учетная запись для входа в web интерфейс zabbix следующая:
- Admin — пользователь;
- zabbix — пароль.
После авторизации вы увидите стандартный dashboard.
Установка и настройка Zabbix сервера закончена.
По умолчанию в система настроен один хост для мониторинга и это сам сервер zabbix. Проблема говорит о том что агент не доступен. При установке я специально не стал устанавливать агент, так как в следующей статье я подробно расскажу как устанавливать агентов на разные системы.
Заключение
Из статьи вы узнали как производится установка сервера Zabbix на операционную систему CentOS 7. Рассказывать про дальнейшую настройку сервера и агентов я специально не стал. Работаю с системой давно, но понять до конца как она работает и как настраивается я смог недавно. Статей про установку множество и про начальную настройку тоже, но вот понятным языком для людей которые только начинают заниматься администрированием систем я не нашел. Документация Zabbix хороша, но она написана техническим языком который могут понять далеко не все. Например, я долго разбирался с тем как настроить работу активного и пассивного клиента. Знаю точно, что если убрать небольшие сложности при начальном этапе внедрения системы мониторинга Zabbix эта система удовлетворит практически любые требования для мониторинга любых параметров в любой операционной системе.
В следующих статьях я детально расскажу:
- Как настроить сервер Zabbix;
- Настроим активных и пасивных агентов в системах Linux и Windows;
- Научимся обновлять сервер и клиентов (я обновлял с версии 3.0 и сильных сложностей не вознкало).
Будет множество статей о том как производить мониторинг разных параметров.
Здравствуйте,
Алексей, Вам не приходилось сталкиваться с настройкой trap-ов в zabbix?
Пока нет.
Добрый день!
Не заполнялась база данных из архива, выдавала ошибку
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 и созда её заново.
Вы совершенно правы. На обновленной версии в статусе сервера 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.» Лечится добавлением параметра что сказали и последующем редактированием поля.
Спасибо за информацию. Статью подправил.