Home » Linux » CentOS » Установка и настройка Zabbix 4.0

Установка и настройка Zabbix 4.0

1-го октября 2018 года вышла новая версия бесплатной системы мониторинга, которую я постоянно использую. Я подробно расскажу об установке и начальной настройке Zabbix 4.0 на примере систем CentOS, Debian, Ubuntu со скриншотами и пояснениями. В этой версии много интересных и полезных нововведений, так что посмотреть на неё однозначно стоит.

Онлайн-курс "Базы данных" – для разработчиков, администраторов СУБД и всех, кто стремится повысить профессиональный уровень, научиться проектировать базы данных и создавать оптимальную структуру их хранения (PostgreSQL, MySQL, Redis, MongoDB, Cassandra и т. д.) Подробности по .

Данная статья устарела, так как вышла новая LTS версия Zabbix 5.0. Используйте мою статью на эту тему - установка и настройка Zabbix 5.

Введение

На сегодняшний день, по моему мнению, из бесплатных систем мониторинга именно Zabbix самая популярная и функциональная. Упоминания о ней я постоянно встречаю в технических статьях специалистов различного масштаба и организаций. К примеру, СберТех использует Zabbix как единую платформу мониторинга. ИТ отдел сети магазинов Магнит так же использует zabbix как основную систему мониторинга. Пару лет назад я смотрел выступление представителя ИТ отдела Магнита, где он подробно описывал структуру системы. На тот момент это была самая крупная инсталляция заббикса с тысячами прокси серверов для сбора данных из магазинов по всей стране. Упоминания о мониторинге заббикс я встречал у специалистов компаний 1С, Крок, Яндекс.Деньги и других. Перечислил только то, что запомнилось.

Нужно понимать, что Zabbix - система мониторинга общего назначения. У нее нет специализации в микросервисы, сеть, железо и т.д. В связи с этим, всегда может найтись инструмент, который сможет выполнять ту или иную задачу удобнее и эффективнее, чем zabbix. Но это не умоляет остальных достоинств системы. Я их вижу в первую очередь в том, что в ней можно настроить мониторинг всего, что угодно. Главное научиться подавать значения в систему. А для этого есть масса инструментов - как самих агентов, так и скриптов, которые можно подключать к сбору данных.

Система мониторинга Zabbix позволяет так или иначе завести на нее все обслуживаемые сервисы. Где-то это может быть не очень просто, но в любом случае, один универсальный инструмент удобнее, чем несколько. Мне всегда удавалось настроить желаемый мониторинг с помощью заббикса. Если не было готовых шаблонов или подходящих агентов для сбора, писал скрипты и передавал ими данные агенту. С моими (и не только) решениями по мониторингу можете познакомиться в отдельном разделе zabbix.

Чем меня еще подкупает zabbix - хорошая документация и большое комьюнити. Много выступлений от различных специалистов с описанием внедрений. Все это облегчает работу с системой. Проще принять решение как поступить в той или иной ситуации. Сами разработчики постоянно проводят встречи, приглашают выступающих, потом выкладывают видео. В общем, система со всех сторон оставляет благоприятное впечатление.

Я буду устанавливать и настраивать работу сервера zabbix на nginx, что несколько отличается от дефолтной установки, которая включает в себя веб сервер apache. В связи с этим, нам необходимо будет подготовиться.

Подготовка сервера CentOS к установке

Centos 7

Первым делом вам необходимо установить и настроить сервер CentOS 7. Перед установкой сервера Zabbix нам также нужно подготовить Web сервер. У меня есть отдельная статья по настройке web сервера на centos. Там все подробно описано. Сейчас же я кратко и без лишних комментариев выполню минимум необходимых действий для работы заббикса. Так же я не буду останавливаться на настройке iptables. Эта отдельная тема и мне не хочется ее касаться в этой статье. Либо настройте сами по моим инструкциям, либо просто отключите firewall:

# systemctl stop firewalld
# systemctl disable firewalld

Подключаем репозиторий 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

Проверяем, работает ли он. Для этого открываем в браузере ссылку http://192.168.13.117/, где 192.168.13.117 - ip адрес настраиваемого сервера.

Стартовая страница Nginx

Если у вас не работает nginx, разберитесь с ним, прежде чем двигаться дальше. В первую очередь проверьте настройки фаервола. Более детально о настройке nginx у меня рассказано отдельно.

Дальше устанавливаем php-fpm. Для этого подключаем репозиторий remi и epel-release.

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

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

# yum install yum-utils
# yum-config-manager --enable remi-php71

Устанавливаем php 7.1 и модули к нему.

# yum install php71 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

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

# netstat -tulpn | grep php-fpm
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      13261/php-fpm: mast

Все в порядке, запустился на порту 9000. Запустим его через unix сокет. Для этого открываем конфиг /etc/php-fpm.d/www.conf и комментируем строку:

# mcedit /etc/php-fpm.d/www.conf
;listen = 127.0.0.1:9000

Вместо нее добавляем несколько других:

listen = /var/run/php-fpm/php-fpm.sock
listen.mode = 0660
listen.owner = nginx
listen.group = nginx

Заодно измените пользователя, от которого будет работать php-fpm. Вместо apache укажите nginx, отредактировав соответствующие параметры.

user = nginx
group = nginx

Перезапускаем 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

На текущий момент с настройкой php-fpm закончили. Продолжаем подготовку сервера к установке zabbix.

Устанавливаем свежую версию MariaDB. Подключаем репозиторий. Для этого создаем файл /etc/yum.repos.d/mariadb.repo следующего содержания.

# mcedit /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 на centos.

# yum install MariaDB-server MariaDB-client

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

# systemctl start mariadb
# systemctl enable mariadb

Запускаем скрипт начальной конфигурации mysql и задаем пароль для root. Все остальное можно оставить по-умолчанию.

# /usr/bin/mysql_secure_installation

Внесем некоторые изменения в стандартный конфиг mariadb, чтобы потом не заниматься очисткой и оптимизацией базы для zabbix. Для этого открываем конфиг mysql /etc/my.cnf.d/server.cnf и приводим его к следующему виду.

# mcedit /etc/my.cnf.d/server.cnf
[client]
port		= 3306
socket		= /var/lib/mysql/mysql.sock
default-character-set=utf8
[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-strict-mode = OFF [server] [galera] [embedded] [mariadb] [mariadb-10.3]

Я добавил минимум настроек, отличных от дефолта. В статье про оптимизацию mysql их приведено гораздо больше, но со временем я понял, что зря это сделал. Реально у меня нет большого опыта в тонкой настройке mysql. Никаких тестов и проверок я не делал, а данные брал на основе других статей в интернете. Не факт, что там не было ошибок. В итоге сейчас тут только заданы некоторые важные параметры по innodb, в частности указание хранить каждую таблицу в отдельном файле, задан размер и количество бинарных логов и еще пару настроек, которые явно будут к месту (innodb_buffer_pool_size, innodb_buffer_pool_instances и innodb_flush_log_at_trx_commit). При желании, вы можете сами заняться тюнингом mysql. В общем случае, достаточно будет текущих настроек.

Перезапустите mariadb и убедитесь, что она запустилась.

# systemctl restart mariadb
# systemctl status mariadb.service

Сервер баз данных mysql для нашего zabbix сервера готов. На этом предварительные настройки сервера закончены. Можно приступать к установке.

Centos 8

Как установить Centos 8 читайте в отдельной статье. Его подготовка к установке zabbix будет проще, так как в базовых репозиториях более свежий софт, который нам подходит. Вначале либо отключите firewalld, либо выполните его настройку. Я не буду на этом останавливаться, так как это тема отдельной статьи.

# systemctl stop firewalld
# systemctl disable firewalld

То же самое касается SELinux. В Centos 8 я еще не разбирался, как его корректно настроить для работы с zabbix-server. Пока отключите, либо сами поищите информацию по настройке. Когда найдете, буду рад, если поделитесь в комментариях.

# mcedit /etc/sysconfig/selinux

Устанавливаем параметр:

SELINUX=disabled

Применяем изменение:

# setenforce 0

Дальше подключаем репозиторий epel.

# dnf install epel-release

Теперь подключим репозиторий nginx. Для этого создаем файл /etc/yum.repos.d/nginx.repo следующего содержания.

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

Устанавливаем nginx, запускаем и добавляем в автозагрузку.

# dnf install nginx
# systemctl start nginx
# systemctl enable nginx

Зайдите по адресу http://ip-сервера/ и убедитесь, что nginx запустился. Теперь отдельно установим php и модули к нему, которые понадобятся.

# dnf install php php-fpm php-cli php-mysqlnd php-gd php-ldap php-odbc php-pdo php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap php-bcmath

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

# systemctl start php-fpm
# systemctl enable php-fpm

Проверяем, стартовал ли указанный в конфиге сокет.

# ll /run/php-fpm/www.sock
srw-rw----+ 1 root root 0 Oct  4 13:14 /run/php-fpm/www.sock

На текущий момент с настройкой php-fpm закончили. Продолжаем подготовку сервера к установке zabbix.

Устанавливаем сервер баз данных Mariadb.

# dnf install mariadb-server mariadb

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

# systemctl start mariadb
# systemctl enable mariadb

Запускаем скрипт начальной конфигурации mysql и задаем пароль для root. Все остальное можно оставить по-умолчанию.

# /usr/bin/mysql_secure_installation

Внесем некоторые изменения в стандартный конфиг mariadb, чтобы потом не заниматься очисткой и оптимизацией базы для zabbix. Для этого открываем конфиг mysql /etc/my.cnf.d/server.cnf и приводим его к следующему виду.

# mcedit /etc/my.cnf.d/mariadb-server.cnf
[client]
port		= 3306
socket		= /var/lib/mysql/mysql.sock
default-character-set=utf8

[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-strict-mode = OFF

Тут заданы некоторые важные параметры по innodb, в частности указание хранить каждую таблицу в отдельном файле, задан размер и количество бинарных логов и еще пару настроек, которые явно будут к месту (innodb_buffer_pool_size, innodb_buffer_pool_instances и innodb_flush_log_at_trx_commit). При желании, вы можете сами заняться тюнингом mysql. В общем случае, достаточно будет текущих настроек.

Перезапустите mariadb и убедитесь, что она запустилась.

# systemctl restart mariadb
# systemctl status mariadb.service

Сервер баз данных mysql для нашего zabbix сервера готов. На этом предварительные настройки сервера закончены. Можно приступать к установке.

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

Для того, чтобы установить Zabbix Server 4.0 на Centos 7 нужно подключить репозиторий актуальной версии.

# rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
Retrieving https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
warning: /var/tmp/rpm-tmp.fCWryx: Header V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:zabbix-release-4.0-1.el7         ################################# [100%]

То же самое делаем для Centos 8.

# rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/8/x86_64/zabbix-release-4.0-2.el8.noarch.rpm

Устанавливаем сам сервер заббикса.

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

В зависимостях пакетов будет httpd, который нам не нужен, так как у нас будет nginx и php7.1, но я не разбирался, как поставить без него. После установки пакетов, создадим базу данных, пользователя zabbix и заполним базу.

# mysql -uroot -p
Enter password:
> create database zabbix character set utf8 collate utf8_bin;
> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabpassword';
exit
# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

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

# mcedit /etc/zabbix/zabbix_server.conf

Изменяем указанные строки, остальные не трогаем:

DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabpassword
ListenIP=0.0.0.0
Timeout=10

Этих минимальных настроек достаточно, для работы сервера. Я рекомендую увеличивать параметр Timeout, так как он отвечает за время ожидания ответа от агента, snmp устройства или внешней проверки. Иногда стандартного значения в 4 секунды бывает недостаточно. В частности, когда используется какой-то скрипт, который долго выполняется для получения метрики. Поставьте секунд 10.

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

# systemctl start zabbix-server
# systemctl enable zabbix-server

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

# cat /var/log/zabbix/zabbix_server.log
Лог запуска Zabbix Server

Настройка SELinux с zabbix

Если у вас включен SELinux, получите ошибку.

cannot start preprocessing service: Cannot bind socket to "/var/run/zabbix/zabbix_server_preprocessing.sock": [13] Permission denied.

Это нормально, сейчас настроим SELinux для нормальной работы Zabbix. Для этого устанавливаем пакет policycoreutils-python, скачиваем готовый модуль для SELinux и применяем его.

# yum install policycoreutils-python
# cd ~
# curl https://support.zabbix.com/secure/attachment/53320/zabbix_server_add.te > zabbix_server_add.te
# checkmodule -M -m -o zabbix_server_add.mod zabbix_server_add.te
# semodule_package -m zabbix_server_add.mod -o zabbix_server_add.pp
# semodule -i zabbix_server_add.pp

Теперь нам надо перезапустить zabbix-server.

# systemctl restart zabbix-server

Если у вас это не получится сделать через systemctl, значит служба зависла. Завершаем ее принудительно и запускаем снова.

# kill -9 `pidof zabbix_server`
# systemctl start zabbix-server

Снова проверяйте log файл. Теперь ошибок быть не должно. Как я уже сказал, если у вас отключен SELinux, то делать описанные выше манипуляции с модулем не надо.

С серверной частью закончили. Нам нужно сделать конфиг nginx для работы web интерфейса zabbix на сервере с Centos 7. Если у вас nginx работает на том же сервере, где сам zabbix, и других виртуальных хостов нет и не будет, то правьте сразу дефолтный - /etc/nginx/conf.d/default.conf. Приводим его к следующему виду:

# mcedit /etc/nginx/conf.d/default.conf
server {
    listen       80;
    server_name  localhost;
    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;
        }
}

Для Centos 8 конфиг будет другой, так как из репозитория zabbix прилетает готовый конфиг для php-fpm. Он находится тут - /etc/php-fpm.d/zabbix.conf. Там указан другой сокет - /run/php-fpm/zabbix.sock, который мы будем использовать.Поменяем в этом конфиге пользователя с apache на nginx и укажем свой часовой пояс.

user = nginx
group = nginx
php_value[date.timezone] = Europe/Moscow

После этого php-fpm надо перезапустить.

# systemctl restart php-fpm

Конфиг nginx default.conf для centos 8 будет таким:

server {
    listen       80;
    server_name  localhost;
    root /usr/share/zabbix;

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

    location ~ \.php$ {
    fastcgi_pass unix:/run/php-fpm/zabbix.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include fastcgi_params;
    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.

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

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

Даем разрешения SELinux для работы заббикса с web сервером и базой данных.

# setsebool -P httpd_can_connect_zabbix on
# setsebool -P httpd_can_network_connect_db on

Я не знаю, насколько последняя настройка актуальна, если подключение к БД локальное. У разработчиков в инструкции сказано, что в случае с postgresql даже если подключаетесь через 127.0.0.1, разрешение выдавать нужно. Насчет mysql нет комментариев.

С серверной частью закончили. Для продолжения установки zabbix сервера переходим к настройке Zabbix Frontend.

Установка сервера Zabbix 4.0 в Ubuntu, Debian

С установкой Zabbix на сервер с Ubuntu или Debian попроще, так как в стандартных репозиториях посвежее версии софта, можно использовать их. Подключаем репозитории zabbix 4.0.

Ubuntu 18:

# wget https://repo.zabbix.com/zabbix/4.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.0-3+bionic_all.deb
# dpkg -i zabbix-release_4.0-3+bionic_all.deb

Debian 9:

# wget https://repo.zabbix.com/zabbix/4.0/debian/pool/main/z/zabbix-release/zabbix-release_4.0-3+stretch_all.deb
# dpkg -i zabbix-release_4.0-3+stretch_all.deb

Debian 10:

# wget https://repo.zabbix.com/zabbix/4.0/debian/pool/main/z/zabbix-release/zabbix-release_4.0-3+buster_all.deb
# dpkg -i zabbix-release_4.0-3+buster_all.deb

Если у вас другие версии систем, то простой найдите ссылки пакетов под свою версию в официальном репозитории — https://repo.zabbix.com/zabbix/4.0/ Дальнейшая установка не будет отличаться от текущей.

Обновляем информацию о репозиториях, а заодно и последние обновления поставим:

# apt update && apt upgrade

Устанавливаем zabbix сервер:

# apt install zabbix-server-mysql zabbix-frontend-php

Он по-умолчанию ставится с apache, который сразу же запускается. Остановим его и отключим:

# systemctl stop apache2
# systemctl disable apache2

Ставим отдельно nginx и php-fpm:

# apt install nginx php-fpm

Запускаем скрипт начальной конфигурации mysql и задаем пароль для root. Все остальное можно оставить по-умолчанию.

# /usr/bin/mysql_secure_installation

Отредактируем некоторые параметры Mariadb в конфиге /etc/mysql/mariadb.conf.d/50-server.cnf. Добавляем туда в секцию [mysqld]:

# mcedit /etc/mysql/mariadb.conf.d/50-server.cnf
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

Перезапустите mariadb и убедитесь, что она запустилась.

# systemctl restart mariadb
# netstat -tulnp | grep mysqld
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      16753/mysqld

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

# mysql -uroot -p
Enter password:
> create database zabbix character set utf8 collate utf8_bin;
> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabpassword';
exit
# zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -p zabbix

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

# mcedit /etc/zabbix/zabbix_server.conf

Изменяем указанные строки, остальные не трогаем:

DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabpassword
ListenIP=0.0.0.0
Timeout=10

Этих минимальных настроек достаточно, для работы сервера. Я рекомендую увеличивать параметр Timeout, так как он отвечает за время ожидания ответа от агента, snmp устройства или внешней проверки. Иногда стандартного значения в 4 секунды бывает недостаточно. В частности, когда используется какой-то скрипт, который долго выполняется, для получения метрики. Поставьте секунд 10.

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

# systemctl start zabbix-server
# systemctl enable zabbix-server

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

# netstat -tulnp | grep zabbix_server
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      16847/zabbix_server

Все в порядке. Запускаем nginx, который у нас будет выступать в качестве web сервера.

# systemctl start nginx
# systemctl enable nginx

Убедимся, что в качестве web сервера работает nginx.

# netstat -tulnp | grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      17075/nginx: master 
tcp6       0      0 :::80                   :::*                    LISTEN      17075/nginx: master 

Нам нужно сделать конфиг nginx для работы web интерфейса zabbix. Если у вас nginx работает на том же сервере, где сам zabbix, и других виртуальных хостов нет и не будет, то правьте сразу дефолтный — /etc/nginx/sites-available/default.conf. Приводим его к следующему виду:

# mcedit /etc/nginx/sites-available/default.conf
server {
    listen       80;
    server_name  localhost;
    root /usr/share/zabbix;

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

    location ~ \.php$ {
    fastcgi_pass unix:/run/php/php7.2-fpm.sock; # проверьте этот путь, для разных версий php он будет разный
    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

С серверной частью закончили. Для продолжения установки zabbix сервера переходим к настройке Zabbix Frontend.

Настройка Zabbix Frontend

Идем в браузер и открываем адрес http://192.168.13.117. Вы должны увидеть установщик Zabbix 4.0.

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

Нажимаем Next step и начинаем настройку web интерфейса. На следующей странице будет проверка требований. У вас должны быть выполнены все требования. В зависимости от системы и версии php, информация будет в каждом случае разниться.

Проверка системных требований к web интерфейсу заббикса

На следующем этапе указываем параметры доступа к базе данных, потом Zabbix server details. Там можно ничего не указывать, а оставить дефолтные параметры. Потом будет страница с проверкой введенных данных. Если все в порядке, то заканчивайте установку. В конце увидите сообщение: Congratulations! You have successfully installed Zabbix frontend.

Завершение установки zabbix server

После нажатия на Finish увидите окно авторизации Zabbix сервера.

Авторизация в Zabbix

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

  • Пользователь Admin
  • Пароль zabbix

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

Начальный экран мониторинга Zabbix

На этом установка бесплатного сервера мониторинга zabbix окончена. Можно приступать к настройке.

Настройка Zabbix Server

Создание учетной записи и смена пароля

Первое, что нужно сделать - сменить стандартные учетные данные для входа. Можно просто поменять пароль пользователя admin, но лучше создать новую учетную запись с правами суперпользователя, а админа удалить. Для этого идем в раздел Administration -> Users и нажимаем Create User.

Добавление нового пользователя в Zabbix

Заполняем все необходимые поля. Можно выбрать русский язык. Обычно я стараюсь работать в английском, но в случае с заббиксом можно сделать исключение. Он очень качественно локализован и проблем не возникает. Не забудьте зайти во вкладку Permissions и выбрать User type - Zabbix Super Admin.

Теперь можно зайти под новым пользователем, а Admin удалить. Но система не даст его удалить, так как он является владельцем некоторых объектов:

  • карты сети - Local Network
  • комплексного экрана Zabbix server
  • панелей Global view и Zabbix server health

Они создаются автоматически при установке заббикса. Вам нужно сменить у них владельца на нового пользователя. После этого стандартного админа можно будет удалить.

Настройка email оповещений

Дальше нужно настроить очень важную часть системы мониторинга - уведомления на email. Без нее система мониторинга не выглядит целостной и полноценной. Zabbix сервер поддерживает отправку почты через сторонние smtp серверы. Настроим один из них. Для этого идем в раздел Администрирование -> Способы оповещений и нажимаем на Email.

Настройка email оповещений в zabbix

Покажу на примере настроек ящика в Яндексе.

Параметры ящика Яндекс для отправки уведомлений

Это мы настроили адрес отправки. Теперь нужно пользователю добавить адрес для получения оповещений. Для этого идем в Администрирование -> Пользователи, выбираем своего пользователя. Идем во вкладку Оповещения и жмем Добавить. Добавляйте свой ящик и нажимайте Обновить.

Добавление адреса получателя уведомлений

Зайдите еще раз в учетную запись и убедитесь, что ящик добавили.

Профиль пользователя с подключенным ящиком для оповещений

Дальше нужно активировать отправку уведомлений по событиям. Для этого идем в Настройка -> Действия и жмем на Деактивировано, чтобы стало Активировано.

Включение оповещений в заббиксе

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

Если вам нужны оповещения в telegram, то читайте отдельную статью на эту тему. Так же рекомендую ознакомиться с материалом на тему настройки повторяющихся уведомлений в заббиксе. Для многих триггеров может оказаться очень полезной возможностью. Например, можно каждый день напоминать об окончании времени делегирования домена, пока он не будет продлен.

Так же zabbix умеет звонить через asterisk для оповещения о событиях.

Изменение шаблона стандартных оповещений

Я обычно изменяю стандартный шаблон уведомлений заббикса. Располагается он в разделе Настройка -> Действия, называется Report problems to Zabbix administrators.

Настройка шаблона почтовых сообщений

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

Разница в шаблонах писем-уведомлений

Мне мой вид кажется более наглядным. Шаблон меняет на следующий:

{HOST.NAME} - {TRIGGER.STATUS}: {TRIGGER.NAME}
Настройка темы в письмах zabbix

Он одинаковый и для проблемы, и для восстановления.

Изменение стандартных шаблонов мониторинга

На своих серверах мониторинга я изменяю некоторые параметры стандартных шаблонов, чтобы было меньше бесполезных и неинформативных срабатываний. Вот список того, что я делаю.

  1. В шаблоне Template App Zabbix Agent отключаю триггер Version of zabbix_agent(d) was changed on {HOST.NAME}. Если его оставить, то после каждого обновления zabbix агента вы будете получать уведомление. Лично мне эта информация не нужна.
  2. В шаблоне Template OS Linux меняю в триггере Disk I/O is overloaded on {HOST.NAME} значение со стандартных 20% до 50%. Я считаю, что начинать беспокоиться и смотреть на машину надо при этом значении. Но вы можете подобрать под свои нужды.
  3. В этом же шаблоне в правиле обнаружения Mounted filesystem discovery добавляю еще один прототип триггера, скопировав Free disk space is less than 20% on volume {#FSNAME}. Новый шаблон полностью идентичен скопированному, только вместо 20% указываю 5% и ставлю важность с "Предупреждение" на "Высокая". Я добавляю еще одно оповещение, если свободного места на дисках остается меньше 5%. Стандартные 20% очень высокий порог, особенно если большой диск. Оперативное решение проблемы не требуется. Из-за этого часто откладываешь чистку диска на потом и забываешь о ней. Теперь будет еще один страховочный триггер, после которого точно надо идти и прямо сейчас разбираться с местом. В триггере на 20% свободного места ставлю разрешение на закрытие триггера вручную.
  4. В этом же шаблоне в триггере Lack of free swap space on {HOST.NAME} меняю порог срабатывания с 50% до 20%, либо вообще отключаю его. Сейчас много серверов работают без swap. Хотя лично я всегда его создаю и подключаю.
  5. В шаблоне Template OS Windows отключаю Правило обнаружения Windows service discovery. В дефолтном варианте оно генерирует очень много ненужных итемов и оповещений. Если нужен мониторинг какой-то службы windows, я делаю для этого отдельный шаблон.

Общие настройки

В общих настройках zabbix server, которые располагаются в разделе Администрирование -> Общие я меняю следующие параметры:

  1. В разделе Рабочее время выставляю актуальные рабочие часы.
  2. В разделе Опции отображения триггеров меняю значения Отображать триггеры в состоянии ОК в течении и Мигание триггеров при изменении состояния на 1 минуту. Это просто мои предпочтения. Мне не нравится, когда триггеры долго мигают, либо висят уже закрытые.
  3. В разделе Прочее меняю Обновление неподдерживаемых элементов данных на 1 минуту. Это актуально во время отладки новых шаблонов.

Установка Zabbix Agent на Linux

Если вы хотите установить zabbix-agent на сам сервер мониторинга, то ничего делать не надо, кроме самой установки. Для других систем необходимо подключить репозитории заббикса, которые мы использовали во время установки сервера. Можете посмотреть их в соответствующих разделах для своей системы.

Установка zabbix agent в Centos:

# yum install zabbix-agent

Тоже самое в Ubuntu/Debian:

# apt install zabbix-agent

Для работы с сервером, который установлен локально на этой же машине, больше никаких настроек не надо делать. Если же вы будете устанавливать zabbix agent на другую машину, то в файле конфигурации агента /etc/zabbix/zabbix_agentd.conf нужно будет задать следующие параметры:

# mcedit /etc/zabbix/zabbix_agentd.conf
Server=192.168.13.117
ServerActive=192.168.13.117
Hostname=srv10 # имя вашего узла мониторинга, которое будет указано на сервере zabbix, Zabbix server если это сам сервер заббикса

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

# systemctl start zabbix-agent
# systemctl enable zabbix-agent

Проверяем лог файл.

# cat /var/log/zabbix/zabbix_agentd.log
 14154:20181004:201307.800 Starting Zabbix Agent [Zabbix server]. Zabbix 4.0.0 (revision 85308).
 14154:20181004:201307.800 **** Enabled features ****
 14154:20181004:201307.800 IPv6 support:          YES
 14154:20181004:201307.800 TLS support:           YES
 14154:20181004:201307.800 **************************
 14154:20181004:201307.800 using configuration file: /etc/zabbix/zabbix_agentd.conf
 14154:20181004:201307.800 agent #0 started [main process]
 14157:20181004:201307.801 agent #3 started [listener #2]
 14159:20181004:201307.802 agent #5 started [active checks #1]
 14155:20181004:201307.804 agent #1 started [collector]
 14158:20181004:201307.806 agent #4 started [listener #3]
 14156:20181004:201307.810 agent #2 started [listener #1]

Все в порядке. Идем в веб интерфейс и проверяем поступление данных. Для этого идем в раздел Мониторинг -> Последние данные. Указываем в разделе Узлы сети Zabbix Server и ждем поступления первых данных. Они должны пойти через 2-3 минуты после запуска агента.

Просмотр поступающих данных

Теперь попробуем остановить агент и проверить, придет ли уведомление на почту. Идем в консоль и выключаем агента:

# systemctl stop zabbix-agent

Ждем минимум 5 минут. Именно такой интервал указан по-умолчанию для срабатывания триггера на недоступность агента. После этого проверяем главную панель, виджет Проблемы.

Проверка отправки уведомлений о проблемах

Проверяйте email ящик. Туда должно прийти уведомление от заббикс сервера.

Установка zabbix агент на Windows

Для полноты картины добавим к серверу один агент, установленный на windows машину и настроим ее мониторинг. Для этого идем на страницу загрузок https://www.zabbix.com/download_agents и скачиваем самую последнюю версию агента для Windows.

Распаковываем архив. Создаем на диске С: папку zabbix и купируем туда следующие файлы:

  • zabbix_agentd.exe
  • zabbix_get.exe
  • zabbix_sender.exe
  • zabbix_agentd.win.conf

Исполняемые файлы берете той разрядности, какая у вас в системе. В исходном архиве есть как x32 так и x64. Дальше открываем командную строку с правами администратора и выполняем следующую команду для установки zabbix agent на windows:

c:/zabbix/zabbix_agentd.exe --config c:/zabbix/zabbix_agentd.win.conf --install
Установка zabbix agent на Windows

Открываем файл zabbix_agentd.win.conf любым текстовым редактором и изменяем следующие параметры:

LogFile=c:\zabbix\zabbix_agentd.log
LogFileSize=1
Server=192.168.13.117
ServerActive=192.168.13.117
Hostname=win10-01

Открываем оснастку со службами, ищем службу с именем Zabbix agent и запускаем ее.

Запуск службы Zabbix Agent в Windows

Не забываем создать разрешающее правило в Брандмауэр, если он у вас включен. Для этого идем в Панель управления\Система и безопасность\Брандмауэр Windows - Дополнительные параметры - Правило для входящих подключений - Создать правило.

  • Тип правила: Для порта;
  • Протоколы и порты: Протокол TCP; Определенные локальные порты: 10050;
  • Действие: Разрешить подключение;
  • Профиль (ставим галочки): Доменный, Частный, Публичный;
  • Имя: Zabbix Agent;

Чтобы работал мониторинг windows машины, нужно добавить на сервер мониторинга host с таким же hostname, что мы указали в конфиге агента. Для этого идем в web панель, открываем раздел Настройка -> Узлы сети и жмем Создать узел.

Добавление нового хоста Windows в Zabbix

На первой вкладке указываем имя хоста, такое же, как на клиенте, добавляем в любую существующую группу и задаем ip адрес компьютера.

Параметры хоста

Потом переходим на вкладку Шаблоны и нажимаем Выбрать. Выбираем шаблон Template OS Windows и жмем маленькую ссылку Добавить, затем большую Добавить.

Подключение шаблона к хосту

Новый host мониторинга добавлен, осталось подождать несколько минут свежих данных. Проверить их можно там, где и раньше, в Последних данных, выбрав новый хост.

Поступление данных с windows машины

На этом установка и настройка мониторинга windows с помощью zabbix agent закончена. Можно добавлять новые компьютеры с разными версиями windows. Одна и та же версия агента подходит для всех, и десктопных, и серверных систем.

Заключение

Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!

На этом установка и базовая настройка сервера мониторинга zabbix 4.0 завершена. Советы, замечания, исправления прошу оставлять в комментариях.

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

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

Мониторинг в Zabbix:

Онлайн курс "Базы данных"

Онлайн-курс "Базы данных" – для разработчиков, администраторов СУБД и всех, кто хочет эффективно работать с любой базой данных (как реляционной, так и нереляционной) с помощью языка структурированных запросов SQL. Курс не для новичков – нужно пройти вступительный тест. Выпускники курса смогут:
  • проектировать базы данных и создавать оптимальную структуру их хранения;
  • различать основные СУБД, которые могут пригодиться разработчику (PostgreSQL, MySQL, Redis, MongoDB, Cassandra и т. д.);
  • освоить синтаксис и особенности работы SQL, DDL, DML;
  • оптимизировать медленные запросы и разбираться с некорректными SQL-запросами;
  • уверенно работать с индексами, оптимизировать, профилировать и обновлять базы данных.
Проверьте себя на вступительном тесте и смотрите программу детальнее по .

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

391 комментарий

  1. Извиняюсь, что не туда написал и не понял сразу, что пишу сообщение внизу, а комментарий появляется наверху)

    • Евгений

      Столкнулся с такой же ошибкой, сейчас помогу, если не хочешь разбираться в причинах, а просто сделать что-то, что бы забикс запустился, пропусти то, что в скобках (он у тебя ругается на то, что у тебя нет файла конфигурации zabbix.conf.php, если по указанному пути перейти/usr/share/zabbix/conf/ увидишь, что там линк zabbix.conf.php который ведет в другую папку, а в это папке ничего нет) он тебе предлагает скачать zabbix.conf.php, скачай его и помести в указанную папку, он там даже даёт тебе ссылку на скачивание, еще у меня проблемы были с тем, что забикс на этот файлик ругался, там он возможно будет писать, что он не может этот файл прочитать, но это уже другая история, если что пиши сюда и обязательно пиши, что забикс пишет)

  2. Здравствуйте. На последней странице такая ошибка появл:
    Alternatively, you can install it manually:
    Download the configuration file
    Save it as "/usr/share/zabbix/conf/zabbix.conf.php"
    Подскажите, что с этим делать? Спасибо.

  3. А на что ругается mariadb когда пишет:
    Failed to resolve typeattributeset statement at /etc/selinux/targeted/tmp/modules/400/mariadb/cil:1
    /usr/sbin/semodule: Failed!
    Selinux отключен.
    Как победить? Или пофиг на это, вроде работает.

  4. Hello everyone,

    after changes parameters :

    [client]
    port = 3306
    socket = /var/lib/mysql/mysql.sock
    default-character-set=utf8

    [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-strict-mode = OFF
    [server]
    [galera]
    [embedded]
    [mariadb]
    [mariadb-10.3]

    i received error. can u help to fix ?

    [root@localhost ~]# systemctl status mariadb.service
    ● mariadb.service - MariaDB 10.3.27 database server
    Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
    Drop-In: /etc/systemd/system/mariadb.service.d
    └─migrated-from-my.cnf-settings.conf
    Active: failed (Result: exit-code) since Tue 2020-11-24 04:23:48 EST; 22s ago
    Docs: man:mysqld(8)
    https://mariadb.com/kb/en/library/systemd/
    Process: 6444 ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS $_WSREP_NEW_CLUSTER $_WSREP_START_POSITION (code=exited, status=1/FAILURE)
    Process: 6376 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= || VAR=`cd /usr/bin/..; /usr/bin/galera_recovery`; [ $? -eq 0 ] && systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1 (code=exited, status=0/SUCCESS)
    Process: 6372 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
    Main PID: 6444 (code=exited, status=1/FAILURE)
    Status: "MariaDB server is down"

    Nov 24 04:23:47 localhost.localdomain systemd[1]: Starting MariaDB 10.3.27 database server...
    Nov 24 04:23:47 localhost.localdomain mysqld[6444]: 2020-11-24 4:23:47 0 [Note] /usr/sbin/mysqld (mysqld 10.3... ...
    Nov 24 04:23:48 localhost.localdomain mysqld[6444]: 2020-11-24 4:23:47 0 [Warning] Could not increase number ...186)
    Nov 24 04:23:48 localhost.localdomain mysqld[6444]: 2020-11-24 4:23:48 0 [ERROR] Unknown collation: 'utf8_bin...in"'
    Nov 24 04:23:48 localhost.localdomain mysqld[6444]: 2020-11-24 4:23:48 0 [ERROR] Aborting
    Nov 24 04:23:48 localhost.localdomain systemd[1]: mariadb.service: main process exited, code=exited, status=1/FAILURE
    Nov 24 04:23:48 localhost.localdomain systemd[1]: Failed to start MariaDB 10.3.27 database server.
    Nov 24 04:23:48 localhost.localdomain systemd[1]: Unit mariadb.service entered failed state.
    Nov 24 04:23:48 localhost.localdomain systemd[1]: mariadb.service failed.
    Hint: Some lines were ellipsized, use -l to show in full.

    • There are an error in config. Should be so:

      ......................
      collation-server=utf8_bin 
      init_connect="SET NAMES utf8 collate utf8_bin"
      ......................
  5. Привет! Подскажите куда копать? Перестал внезапно работать веб-интерфейс.
    Все службы вроде работают, в логах заббикс сервера порядок - работает. Но в веб никак не могу попасть(
    "Nginx 502 Bad Gateway".

    • Надо смотреть лог Nginx и php-fpm. Это ошибка веб сервера. Может php не работает или еще что-то.

  6. Начальник! Насчёт части текста форматирования....

    [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-strict-mode = OFF

    Тут заданы некоторые важные параметры по innodb, в частности указание хранить каждую таблицу в отдельном файле, задан размер и количество бинарных логов и еще пару настроек, которые явно будут к месту (innodb_buffer_pool_size, innodb_buffer_pool_instances и innodb_flush_log_at_trx_commit). При желании, вы можете сами заняться тюнингом mysql. В общем случае, достаточно будет текущих настроек.

  7. Начальник! Отформатируй часть текста в код, а то очень не удобно, долго танцевал и не мог понять что не так. Ставилась точка при переносе, да и не сразу заметный параметры

  8. Подскажите. Есть например служба BITS в windows. Если ее отключить, она через время сама включается. Zabbix постоянно фиксируется, что она то запускается то отключается. Как можно поправить уведомления на данную службу?

    • Что значит поправить? Можно просто вручную зайти на хост и отключить этот триггер, если он не нужен.

  9. Подскажите. Где можно взять исходный zabbix_server.conf, который после установки zabbix 5 создаётся? Нужно посмотреть какие настройки были по умолчанию, до правак.

  10. Спасибо!!

    @Этот шаг нужно будет проделывать после каждого обновления php или zabbix.@

  11. Максим

    Здравствуйте. Возникла проблема с e-mail оповещениями. Триггер срабатывает, но сообщение не отправляется и висит ошибка "Login denied: Authentication failed: 535". Доступ к небезопасным приложениям на gmail разрешил, не знаю что еще можно сделать.

    • Аутентификация не пройдена. Надо логин с паролем проверять. А зачем ставите 4-ю версию? Уже 5-я вышла, смотрите мою новую статью по ней.

  12. Настройка Zabbix Frontend
    Дошел до пункта Configure DB connection

    прописал имя базы и пароль.

    Пишет ошибку The frontend does not match Zabbix database.

    Подскажите пожалуйста. Что не так, как поправить?

    MariaDB [(none)]> SELECT User,Host FROM mysql.user; +--------+-----------+
    | User | Host |
    +--------+-----------+
    | zabbix | % |
    | root | 127.0.0.1 |
    | root | ::1 |
    | root | localhost |
    | zabbix | localhost |
    +--------+-----------+

    Список баз не перечисляет. Хотя базу zabbix создал.

    MariaDB [(none)]> mysql> show databases;
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'mysql> show databases' at line 1

    MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
    ERROR 1007 (HY000): Can't create database 'zabbix'; database exists

    • Точно с нуля ставите? База zabbix у вас судя по всему есть. Скорее всего вы не развернули в ней схему базы и начальные данные. Вот эта команда должна отработать без ошибок:
      zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

  13. Centos8. дошел до systemctl status mariadb.service показал следующее. Это нормально? Как можно исправить?

    ● mariadb.service - MariaDB 10.3 database server
       Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
       Active: active (running) since Sun 2020-05-24 13:18:45 +07; 13s ago
         Docs: man:mysqld(8)
               https://mariadb.com/kb/en/library/systemd/
      Process: 27859 ExecStartPost=/usr/libexec/mysql-check-upgrade (code=exited, status=0/SUCCESS)
      Process: 27789 ExecStartPre=/usr/libexec/mysql-prepare-db-dir mariadb.service (code=exited, status=0/SUCCESS)
      Process: 27765 ExecStartPre=/usr/libexec/mysql-check-socket (code=exited, status=0/SUCCESS)
     Main PID: 27827 (mysqld)
       Status: "Taking your SQL requests now..."
        Tasks: 30 (limit: 4394)
       Memory: 121.1M
       CGroup: /system.slice/mariadb.service
               └─27827 /usr/libexec/mysqld --basedir=/usr
    
    May 24 13:18:44 Zabbix mysqld[27827]: 2020-05-24 13:18:44 0 [Note] Plugin 'FEEDBACK' is disabled.
    May 24 13:18:44 Zabbix mysqld[27827]: 2020-05-24 13:18:44 0 [Warning] mysqld: GSSAPI plugin : default principal 'mariadb/zabbix@' not found in keytab
    May 24 13:18:44 Zabbix mysqld[27827]: 2020-05-24 13:18:44 0 [ERROR] mysqld: Server GSSAPI error (major 851968, minor 2529639093) : gss_acquire_cred failed -Unspecified GSS failure.  Minor code may provide m>
    May 24 13:18:44 Zabbix mysqld[27827]: 2020-05-24 13:18:44 0 [ERROR] Plugin 'gssapi' init function returned error.
    May 24 13:18:44 Zabbix mysqld[27827]: 2020-05-24 13:18:44 0 [Note] Server socket created on IP: '::'.
    May 24 13:18:44 Zabbix mysqld[27827]: 2020-05-24 13:18:44 0 [Note] Reading of all Master_info entries succeeded
    May 24 13:18:44 Zabbix mysqld[27827]: 2020-05-24 13:18:44 0 [Note] Added new Master_info '' to hash table
    May 24 13:18:44 Zabbix mysqld[27827]: 2020-05-24 13:18:44 0 [Note] /usr/libexec/mysqld: ready for connections.
    May 24 13:18:44 Zabbix mysqld[27827]: Version: '10.3.17-MariaDB'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MariaDB Server
    May 24 13:18:45 Zabbix systemd[1]: Started MariaDB 10.3 database server.
    • Вроде запустилось все. Проверьте, работает по факту mariadb или нет.

      • Путём установки сервера заббикса?

      • Почему то ошибку пишет

        [root@Zabbix ~]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
        Enter password:
        ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password: YES)

        • Так прямым текстом написано, что:
          Access denied for user ‘zabbix’@’localhost’
          Пользователь или пароль указаны не верно.

          • Если ввести пароль zabpassword

            ERROR 1184 (08S01) at line 1: Aborted connection 17 to db: 'zabbix' user: 'zabbix' host: 'localhost' (init_connect command failed)

            Сори за дурацкие вопросы:)

            • У юзера zabbix нет доступа к базе zabbix. Судя по всему, не по инструкции настроено. У меня команда назначения прав явно указана.

  14. Сервис firewalld отключен, но после перезагрузки сервера веб-интерфейс админки Zabbix не грузится. Если запустить и остановить firewalld, то начинает работать.
    [root@zabbix ~]# systemctl start firewalld.service
    [root@zabbix ~]# systemctl stop firewalld.service
    [root@zabbix ~]#

    • Посмотрите правила iptables, которые активны после перезагрузки сервера:

      # iptables -L -v -n

      Судя по всему, они загружаются при старте сервера. Надо разбираться откуда они грузятся.

  15. Такой вопрос, в забикс агенте есть возможность запустить скрипт если не будет доступен заббикс сервер?
    Смысл в том чтобы агенты могли посылать команду локальным реле для ребута сетевого оборудования типа родос.

    • Это, кстати, не знаю. По идее, такого функционала у агента нет. Он запускает скрипты по сигналу с сервера. Нужно какими-то внешними скриптами решать вопрос с недоступностью сервера мониторинга.

      • Поковырявшись с агентом, понял несколько вещей, агент может быть как активный (т.е. он посылает запрос на соеденинение ServerActive=) используется порт 10051 out, так и пассивный (т.е. он ждет подключения от сервера Server=) используется порт 10050 in.
        пассивный
        server=server zabbix
        Listenport=10050
        # serveractive=server zabbix
        активный
        # server=server zabbix
        # Listenport=10050
        serveractive=server zabbix
        Начал копать из-за того что один комп подключился без проблем, а второй никак нехотел.
        и для того чтобы не писать имя хоста на каждый комп можно унифицировать
        # Hostname=
        HostnameItem=system.hostname
        для нормальной работы вполне устраивает пассивный режим, если без доп настроек оставить Serveractive=любое, то в логах идут ошибки соединения.

        В общем спасибо за статью, начав разбираться понимаешь, что ничего непонимаешь))

  16. Здравствуйте,
    установил заббих сервер на свою малинку. Пытаюсь настроить отправку email не удается. Вы каким либо образом настраивали smtp-сервер на машине на которой установлен заббикс-сервер? Учетка zabbix@serveradmin.ru она у Вас в яндексе есть? или это Ваша? Пытался использовать и учетку яндекса и gmail не приходят уведомления. Из терминала получалось отправить email. Настраивал smtp по инструкции вот по этой ссылке: https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=244147.

    Помогите пожалйста!

  17. Владимир

    Здравствуйте!
    Спасибо за статью. Всё сделал по инструкции. Сервер сам себя мониторит, а другие тачки в упор не видит. Агента установил на отслеживаемом сервере, запустил, в автозагрузку прописал, конфиг поправил, узел добавил. Имя узнал совпадает с тем, что в конфиге на сервере... Файрволл на сервере zabbix отключил. Но zabbix всё равно упорно говорит, что сервер недоступен. Кто-нибудь сталкивался с такой проблемой?

  18. Сергей

    Делаю все как написано в статье,
    на пункте mcedit /etc/zabbix/zabbix_server.conf
    выдает ошибку - невозможно открыть файл /etc/zabbix/zabbix_server.conf для чтения
    нужно копировать из исходников этот файл и редактировать уже под себя?
    почему изначально его нет?

    • Он должен быть. Это дефолтный конфиг, он создается в момент установки zabbix. Если его нет, значит установка не прошла.

  19. Добрый день!
    А у вас нигде нет описания, как настроить Zabbix в режиме прокси?

  20. Сразу после установки Mysql на Red Hat по умолчанию имеются файлы

    /var/lib/mysql/ibdata1
    /var/lib/mysql/ib_logfile0
    /var/lib/mysql/ib_logfile1

    есть необходимость сразу после установки включить опцию:

    innodb_file_per_table=1

    нужно ли включить опцию, удалить файлы ibdata1, ib_logfile0, ib_logfile1 и запустить Mysql

    или можно просто включить опцию и запустить Mysql?

  21. Руслан

    Подскажите пожалуйста чем вызвано решение по смене фронтенда со стандартного апача на nginx , Есть какие-то бонусы от такого решения ?

    • Каких-то бонусов и принципиальных различий нет. Я лично гораздо чаще использую nginx, нежели apache. Да к тому же в последних версиях дистрибутивов, в бэкенд к апачу ставится тот же самый php-fpm. Я лично не вижу сейчас ни одной причины использовать apache, если вам не нужен .htaccess.

  22. Аноним

    Подскажите пожалуйста чем вызвано решение по смене фронтенда со стандартного апача на nginx , Есть какие-то бонусы от такого решения ?

  23. Дмитрий

    Добрый день, у меня ошибка на веб морде (Zabbix server is running - No ) Все делал по статье.
    Помогите пожалуйста. Может что то подскажете, что еще проверить...

  24. Дмитрий

    Добрый день, у меня ошибка на веб морде (Zabbix server is running - No ) Все делал по статье.
    Помогите пожалуйста. Может что то подскажете, что еще проверить...

  25. Добрый день! Пытаюсь разобраться со следующей проблемой:
    2237:20200303:094544.021 [Z3001] connection to database 'zabbix' failed: [1045] Access denied for user 'zabbix'@'localhost' (using password: YES)
    2237:20200303:094544.021 database is down: reconnecting in 10 seconds
    При том, что у пользователя 'zabbix'@'localhost' есть права на базу zabbix (также экспериментировал с полными правами):
    +------------------------------------------------------------------------------------------------------------------------+
    | Grants for zabbix@localhost |
    +------------------------------------------------------------------------------------------------------------------------+
    | GRANT ALL PRIVILEGES ON *.* TO 'zabbix'@'localhost' IDENTIFIED BY PASSWORD '*5411CEC8C031C193146E796145EF97E3948074EC' |
    | GRANT ALL PRIVILEGES ON `zabbix`.* TO 'zabbix'@'localhost' |
    +------------------------------------------------------------------------------------------------------------------------+
    CentOS v7. SELinux отключен.
    К сожалению, мой уровень знаний базовый. Прошу простить, если вопрос тупой.

    • Тут четко написано, что нет доступа к базе для пользователя zabbix.

      connection to database ‘zabbix’ failed: [1045] Access denied for user ‘zabbix’@’localhost’ (using password: YES)

      Разбирайтесь, почему так.

    • Не вопрос тупой. Я тупой. Банально ошибся в пароле : zab вместо zeb.
      Сервер стартанул, но http://192.168.Х.Х/ до сих пор выдает приветственную страницу nginx.
      Не подскажете, куда копать?

      • Вопрос снят. Если в браузере не указывать порт - приветственная страница nginx, если порт указать - страница zabbix.

  26. После установки Zabbix выдаёт такую ошибку. Подскажите, как исправить? Права на папку уже /var/lib/php/session выдал

    session_start(): open(/var/lib/php/session/sess_13dstr8fmv51gnlpqa40hrchln, O_RDWR) failed: Permission denied (13) [zabbix.php:21 → require_once() → ZBase->run() → ZBase->processRequest() → CController->__construct() → CSession::start() → session_start() in include/classes/core/CSession.php:45]
    session_write_close(): open(/var/lib/php/session/sess_13dstr8fmv51gnlpqa40hrchln, O_RDWR) failed: Permission denied (13) [zabbix.php:21 → require_once() → ZBase->run() → ZBase->processRequest() → CController->__construct() → CSession::start() → session_write_close() in include/classes/core/CSession.php:49]
    session_write_close(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/lib/php/session) [zabbix.php:21 → require_once() → ZBase->run() → ZBase->processRequest() → CController->__construct() → CSession::start() → session_write_close() in include/classes/core/CSession.php:49]
    session_start(): open(/var/lib/php/session/sess_13dstr8fmv51gnlpqa40hrchln, O_RDWR) failed: Permission denied (13) [zabbix.php:21 → require_once() → ZBase->run() → ZBase->processRequest() → CController->run() → CControllerDashboardView->checkInput() → CController->validateInput() → CSession::keyExists() → CSession::open() → session_start() in include/classes/core/CSession.php:145]
    session_write_close(): open(/var/lib/php/session/sess_13dstr8fmv51gnlpqa40hrchln, O_RDWR) failed: Permission denied (13) [zabbix.php:21 → require_once() → ZBase->run() → ZBase->processRequest() → CController->run() → CControllerDashboardView->checkInput() → CController->validateInput() → CSession::keyExists() → CSession::close() → session_write_close() in include/classes/core/CSession.php:156]
    session_write_close(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/lib/php/session) [zabbix.php:21 → require_once() → ZBase->run() → ZBase->processRequest() → CController->run() → CControllerDashboardView->checkInput() → CController->validateInput() → CSession::keyExists() → CSession::close() → session_write_close() in include/classes/core/CSession.php:156]

    • Поменял в файле php.ini

      session.save_path = "/tmp/"

      Теперь

      session_start(): open(/var/lib/php/session/sess_13dstr8fmv51gnlpqa40hrchln, O_RDWR) failed: ???????? ? ??????? (13) [zabbix.php:21 → require_once() → ZBase->run() → ZBase->processRequest() → CController->__construct() → CSession::start() → session_start() in include/classes/core/CSession.php:45]
      session_write_close(): open(/var/lib/php/session/sess_13dstr8fmv51gnlpqa40hrchln, O_RDWR) failed: ???????? ? ??????? (13) [zabbix.php:21 → require_once() → ZBase->run() → ZBase->processRequest() → CController->__construct() → CSession::start() → session_write_close() in include/classes/core/CSession.php:49]
      session_write_close(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/lib/php/session) [zabbix.php:21 → require_once() → ZBase->run() → ZBase->processRequest() → CController->__construct() → CSession::start() → session_write_close() in include/classes/core/CSession.php:49]
      session_start(): open(/var/lib/php/session/sess_13dstr8fmv51gnlpqa40hrchln, O_RDWR) failed: ???????? ? ??????? (13) [zabbix.php:21 → require_once() → ZBase->run() → ZBase->processRequest() → CController->run() → CControllerDashboardView->checkInput() → CController->validateInput() → CSession::keyExists() → CSession::open() → session_start() in include/classes/core/CSession.php:145]
      session_write_close(): open(/var/lib/php/session/sess_13dstr8fmv51gnlpqa40hrchln, O_RDWR) failed: ???????? ? ??????? (13) [zabbix.php:21 → require_once() → ZBase->run() → ZBase->processRequest() → CController->run() → CControllerDashboardView->checkInput() → CController->validateInput() → CSession::keyExists() → CSession::close() → session_write_close() in include/classes/core/CSession.php:156]
      session_write_close(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/lib/php/session) [zabbix.php:21 → require_once() → ZBase->run() → ZBase->processRequest() → CController->run() → CControllerDashboardView->checkInput() → CController->validateInput() → CSession::keyExists() → CSession::close() → session_write_close() in include/classes/core/CSession.php:156]

      • [Session]
        ; Handler used to store/retrieve data.
        ; http://php.net/session.save-handler
        session.save_handler = files
        
        ; Argument passed to save_handler.  In the case of files, this is the path
        ; where data files are stored. Note: Windows users have to change this
        ; variable in order to use PHP's session functions.
        ;
        ; The path can be defined as:
        ;
        ; session.save_path = "/var/lib/php
        ;
        ; where N is an integer.  Instead of storing all the session files in
        ; /path, what this will do is use subdirectories N-levels deep, and
        ; store the session data in those directories.  This is useful if you
        ; or your OS have problems with lots of files in one directory, and is
        ; a more efficient layout for servers that handle lots of sessions.
        ;
        ; NOTE 1: PHP will not create this directory structure automatically.
        ;         You can use the script in the ext/session dir for that purpose.
        ; NOTE 2: See the section on garbage collection below if you choose to
        ;         use subdirectories for session storage
        ;
        ; The file storage module creates files using mode 600 by default.
        ; You can change that by using
        ;
        ;     session.save_path = "N;MODE;/path"
        ;
        ; where MODE is the octal representation of the mode. Note that this
        ; does not overwrite the process's umask.
        ; http://php.net/session.save-path
        
        ; RPM note : session directory must be owned by process owner
        ; for mod_php, see /etc/httpd/conf.d/php.conf
        ; for php-fpm, see /etc/php-fpm.d/*conf
        
        session.save_path = "/tmp/"
        
        ; Whether to use cookies.
        ; http://php.net/session.use-cookies
        session.use_cookies = 1
        
        ; http://php.net/session.cookie-secure
        ;session.cookie_secure =
        
        ; This option forces PHP to fetch and use a cookie for storing and maintaining
        ; the session id. We encourage this operation as it's very helpful in combating
        ; session hijacking when not specifying and managing your own session id. It is
        ; not the end all be all of session hijacking defense, but it's a good start.
        ; http://php.net/session.use-only-cookies
        session.use_only_cookies = 1
        
        ; Name of the session (used as cookie name).
        ; http://php.net/session.name
        session.name = PHPSESSID
        
        ; Initialize session on request startup.
        ; http://php.net/session.auto-start
        session.auto_start = 0
        
        ; Lifetime in seconds of cookie or, if 0, until browser is restarted.
        ; http://php.net/session.cookie-lifetime
        session.cookie_lifetime = 0
        
        ; The path for which the cookie is valid.
        ; http://php.net/session.cookie-path
        session.cookie_path = /
        
        ; The domain for which the cookie is valid.
        ; http://php.net/session.cookie-domain
        session.cookie_domain =
        
        ; Whether or not to add the httpOnly flag to the cookie, which makes it inaccessible to browser scripting languages such as JavaScript.
        ; http://php.net/session.cookie-httponly
        session.cookie_httponly =
        
        ; Handler used to serialize data.  php is the standard serializer of PHP.
        ; http://php.net/session.serialize-handler
        session.serialize_handler = php
        
        ; Defines the probability that the 'garbage collection' process is started
        ; on every session initialization. The probability is calculated by using
        ; gc_probability/gc_divisor. Where session.gc_probability is the numerator
        ; and gc_divisor is the denominator in the equation. Setting this value to 1
        ; when the session.gc_divisor value is 100 will give you approximately a 1% chance
        ; the gc will run on any give request.
        ; Default Value: 1
        ; Development Value: 1
        ; Production Value: 1
        ; http://php.net/session.gc-probability
        session.gc_probability = 0
        
        ; Defines the probability that the 'garbage collection' process is started on every
        ; session initialization. The probability is calculated by using the following equation:
        ; gc_probability/gc_divisor. Where session.gc_probability is the numerator and
        ; session.gc_divisor is the denominator in the equation. Setting this value to 1
        ; when the session.gc_divisor value is 100 will give you approximately a 1% chance
        ; the gc will run on any give request. Increasing this value to 1000 will give you
        ; a 0.1% chance the gc will run on any give request. For high volume production servers,
        ; this is a more efficient approach.
        ; Default Value: 100
        ; Development Value: 1000
        ; Production Value: 1000
        ; http://php.net/session.gc-divisor
        session.gc_divisor = 1000
        
        ; After this number of seconds, stored data will be seen as 'garbage' and
        ; cleaned up by the garbage collection process.
        ; http://php.net/session.gc-maxlifetime
        session.gc_maxlifetime = 1440
        
        ; NOTE: If you are using the subdirectory option for storing session files
        ;       (see session.save_path above), then garbage collection does *not*
        ;       happen automatically.  You will need to do your own garbage
        ;       collection through a shell script, cron entry, or some other method.
        ;       For example, the following script would is the equivalent of
        ;       setting session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes):
        ;          find /path/to/sessions -cmin +24 | xargs rm
        
        ; PHP 4.2 and less have an undocumented feature/bug that allows you to
        ; to initialize a session variable in the global scope.
        ; PHP 4.3 and later will warn you, if this feature is used.
        ; You can disable the feature and the warning separately. At this time,
        ; the warning is only displayed, if bug_compat_42 is enabled. This feature
        ; introduces some serious security problems if not handled correctly. It's
        ; recommended that you do not use this feature on production servers. But you
        ; should enable this on development servers and enable the warning as well. If you
        ; do not enable the feature on development servers, you won't be warned when it's
        ; used and debugging errors caused by this can be difficult to track down.
        ; Default Value: On
        ; Development Value: On
        ; Production Value: Off
        ; http://php.net/session.bug-compat-42
        session.bug_compat_42 = Off
        
        ; This setting controls whether or not you are warned by PHP when initializing a
        ; session value into the global space. session.bug_compat_42 must be enabled before
        ; these warnings can be issued by PHP. See the directive above for more information.
        ; Default Value: On
        ; Development Value: On
        ; Production Value: Off
        ; http://php.net/session.bug-compat-warn
        session.bug_compat_warn = Off
        
        ; Check HTTP Referer to invalidate externally stored URLs containing ids.
        ; HTTP_REFERER has to contain this substring for the session to be
        ; considered as valid.
        ; http://php.net/session.referer-check
        session.referer_check =
        
        ; How many bytes to read from the file.
        ; http://php.net/session.entropy-length
        ;session.entropy_length = 32
        
        ; Specified here to create the session id.
        ; http://php.net/session.entropy-file
        ; Defaults to /dev/urandom
        ; On systems that don't have /dev/urandom but do have /dev/arandom, this will default to /dev/arandom
        ; If neither are found at compile time, the default is no entropy file.
        ; On windows, setting the entropy_length setting will activate the
        ; Windows random source (using the CryptoAPI)
        ;session.entropy_file = /dev/urandom
        
        ; Set to {nocache,private,public,} to determine HTTP caching aspects
        ; or leave this empty to avoid sending anti-caching headers.
        ; http://php.net/session.cache-limiter
        session.cache_limiter = nocache
        
        ; Document expires after n minutes.
        ; http://php.net/session.cache-expire
        session.cache_expire = 180
        
        ; trans sid support is disabled by default.
        ; Use of trans sid may risk your users security.
        ; Use this option with caution.
        ; - User may send URL contains active session ID
        ;   to other person via. email/irc/etc.
        ; - URL that contains active session ID may be stored
        ;   in publicly accessible computer.
        ; - User may access your site with the same session ID
        ;   always using URL stored in browser's history or bookmarks.
        ; http://php.net/session.use-trans-sid
        session.use_trans_sid = 0
        
        ; Select a hash function for use in generating session ids.
        ; Possible Values
        ;   0  (MD5 128 bits)
        ;   1  (SHA-1 160 bits)
        ; This option may also be set to the name of any hash function supported by
        ; the hash extension. A list of available hashes is returned by the hash_algos()
        ; function.
        ; http://php.net/session.hash-function
        session.hash_function = 0
        
        ; Define how many bits are stored in each character when converting
        ; the binary hash data to something readable.
        ; Possible values:
        ;   4  (4 bits: 0-9, a-f)
        ;   5  (5 bits: 0-9, a-v)
        ;   6  (6 bits: 0-9, a-z, A-Z, "-", ",")
        ; Default Value: 4
        ; Development Value: 5
        ; Production Value: 5
        ; http://php.net/session.hash-bits-per-character
        session.hash_bits_per_character = 5
        
        ; The URL rewriter will look for URLs in a defined set of HTML tags.
        ; form/fieldset are special; if you include them here, the rewriter will
        ; add a hidden  field with the info which is otherwise appended
        ; to URLs.  If you want XHTML conformity, remove the form entry.
        ; Note that all valid entries require a "=", even if no value follows.
        ; Default Value: "a=href,area=href,frame=src,form=,fieldset="
        ; Development Value: "a=href,area=href,frame=src,input=src,form=fakeentry"
        ; Production Value: "a=href,area=href,frame=src,input=src,form=fakeentry"
        ; http://php.net/url-rewriter.tags
        url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
        
        ; Enable upload progress tracking in $_SESSION
        ; Default Value: On
        ; Development Value: On
        ; Production Value: On
        ; http://php.net/session.upload-progress.enabled
        ;session.upload_progress.enabled = On
        
        ; Cleanup the progress information as soon as all POST data has been read
        ; (i.e. upload completed).
        ; Default Value: On
        ; Development Value: On
        ; Production Value: On
        ; http://php.net/session.upload-progress.cleanup
        ;session.upload_progress.cleanup = On
        
        ; A prefix used for the upload progress key in $_SESSION
        ; Default Value: "upload_progress_"
        ; Development Value: "upload_progress_"
        ; Production Value: "upload_progress_"
        ; http://php.net/session.upload-progress.prefix
        ;session.upload_progress.prefix = "upload_progress_"
        
        ; The index name (concatenated with the prefix) in $_SESSION
        ; containing the upload progress information
        ; Default Value: "PHP_SESSION_UPLOAD_PROGRESS"
        ; Development Value: "PHP_SESSION_UPLOAD_PROGRESS"
        ; Production Value: "PHP_SESSION_UPLOAD_PROGRESS"
        ; http://php.net/session.upload-progress.name
        ;session.upload_progress.name = "PHP_SESSION_UPLOAD_PROGRESS"
        
        ; How frequently the upload progress should be updated.
        ; Given either in percentages (per-file), or in bytes
        ; Default Value: "1%"
        ; Development Value: "1%"
        ; Production Value: "1%"
        ; http://php.net/session.upload-progress.freq
        ;session.upload_progress.freq =  "1%"
        
        ; The minimum delay between updates, in seconds
        ; Default Value: 1
        ; Development Value: 1
        ; Production Value: 1
        ; http://php.net/session.upload-progress.min-freq
        ;session.upload_progress.min_freq = "1"
    • Судя по всему что-то не так выдали. Есть четкое указание, что с правами проблемы.

      session_start(): open(/var/lib/php/session/sess_13dstr8fmv51gnlpqa40hrchln, O_RDWR) failed: Permission denied

      • chmod 777 /var/lib/php/session/sess_13dstr8fmv51gnlpqa40hrchln

      • Теперь в файле несколько файлов появилось
        sess_138pel2nchmqf8fbngc6b5h905 sess_13dstr8fmv51gnlpqa40hrchln sess_hrrhvs7215ak4v6issdkm3tsh5 sess_l6c112300c25ldjuc9lcmh2dj5 sess_t7emjpgind0rckca4r4ofokb0

        Содержимое одинаковое

        serverCheckResult|b:0;serverCheckTime|i:1582269869;

      • Аноним

        Заработало

  27. Мой сервер случайно выключили из розетки и теперь mysql (mariadb) упала и сколько не перезагружал, субд не запускается, пишет
    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
    это при попытке в ручную подключился к субд, поковыряться.
    у меня одна мысль - как полностью вычистить субд и заново установить?
    я знаю что вы мне сможете подсказать! ))

    • Полная очистка бд равносильна установки zabbix с нуля. Смотрите лог mysql сервера после запуска. Там будет указана ошибка из-за которой сервер не запускается. Скорее всего все можно восстановить, либо потерять только одну таблицу.

  28. Замените строку - #yum install MariaDB-server MariaDB-client
    На - #yum install mariadb-server mariadb-client
    так как в репозитории названия без капса.

  29. Про настройку Selinux на Centos 8 написано здесь:
    https://ahmermansoor.blogspot.com/2019/12/install-zabbix-4-server-on-centos-8.html
    По крайней мере у меня получилось.

  30. Огромное спасибо за статью.

    Подскажите, может кто сталкивался с такой проблемой:

    В системе время стоит правильное, а на гарфиках разница 6 часов. Сделал все по статье, в "/etc/nginx/conf.d/default.conf" стоит нужная зона.

    Может кто знает, как решить данную проблему?
    Заранее спасибо!

  31. Спасибо за статейку . Моща
    Не приходят письма на gmail . Вычитал что гугл блокирует вход сторонним приложениям . Как побороть эту штуку ?

    • Вроде не блокирует ничего. Я не сталкивался. Если все правильно настроить, письма ходят. Это же обычная smtp авторизация.

    • насчет gmail не скажу, в яндексе в разделе безопасность есть создать пароль приложения как раз для работы сторонних служб, возможно в гугле тоже.

  32. Ставлю на чистой деб10ке, всё по пунктам. И в месте экспорта структуры БД ловлю ошибку

    # zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -p zabbix
    Enter password:
    ERROR 1050 (42S01) at line 1: Table 'users' already exists

    Что не так?

    • Ну и как следствие, при попытке запуска забикса

      cannot use database "zabbix": its "users" table is empty

    • Снёс базу, создал заново.
      Импортируем (в начале описался, вместо экспорта), получаем

      ERROR 1118 (42000) at line 1278: 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.

      Предварительная настройка БД конечно же сделана. По данной ошибке гуглися innodb_log_file_size, но мы же его увеличили.

  33. Приветствую.
    Ну, не знаю, Владимир. Видимо у меня руки из ж... растут. Уже с год не могу по вашим разным инструкциям этот чертов Zabbix поставить. То одно, то другое. Вот теперь выдает:
    Проблема: cannot install the best candidate for the job
    - nothing provides libssh2.so.1()(64bit) needed by zabbix-server-mysql-4.0.16-1.el8.x86_64
    (try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)
    на моменте установки самого Zabbix...
    Все равно, большое спасибо за ваши труды.

  34. Приветствую, очень прошу помочь, у меня возникла следующая проблема: всё делал по гайду, всё установлено, конфиги подкорректированы, логи без ошибок. Однако при попытке зайти в инсталлятор через браузер упорно вылезает страница nginx. В чём может быть проблема и какое есть решение? Заранее спасибо за помощь.

    • Очевидно, что что-то не так настроено в nginx. Какая именно страница nginx вылезает?

      • Стартовая,привествующая
        (Welcome to nginx!
        If you see this page, the nginx web server is successfully installed and working. Further configuration is required.

        For online documentation and support please refer to nginx.org.
        Commercial support is available at nginx.com.

        Thank you for using nginx.)

        • Ну точно, к гадалке не ходи :) Проверяйте настройку nginx. У вас судя по всему не указан путь к исходникам заббикс - /usr/share/zabbix

          Есть же видео, посмотрите, как я настраиваю и повторите. Уже не знаю, как еще подробнее это все описать.

          • Разобрался,в итоге,как бы это нелепо не звучало,всё было в порядке,но надо было в адресной строке в браузере приписать /index.php,хотя я был уверен,что должна быть автоматическая переадресация.
            Спасибо большое за помощь и за ваш контент,очень помогает!

  35. Собственно вот что пишет: при запуске агента на файл-сервере, который я буду мониторить
    30501:20200121:125307.542 using configuration file: /etc/zabbix/zabbix_agentd.conf
    30501:20200121:125307.552 agent #0 started [main process]
    30514:20200121:125307.553 agent #3 started [listener #2]
    30515:20200121:125307.554 agent #4 started [listener #3]
    30516:20200121:125307.554 agent #5 started [active checks #1]
    30513:20200121:125307.554 agent #2 started [listener #1]
    30512:20200121:125307.554 agent #1 started [collector]
    30516:20200121:125307.559 no active checks on server [10.200.197.200:10051]: host [ufs] not found
    то есть я указал имя сервера в конф файле, а он мне вот что в итоге выдаёт

  36. Александр

    # systemctl restart mariadb
    # netstat -tulnp | grep mysqld
    tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 16753/mysqld
    Вот тут му перезапускаем службу mariadb? Или masql? Потому что mariadb при этом пишет не найдена

    • Пробуйте тогда mysqld перезапускать. В разных дистрибутивах она может по-разному называться. Где-то mariadb, а где-то по старинке mysql или mysqld.

  37. Александр

    День добрый! Делал установку по статье для убунту 16.04. Однако не вижу установщик Zabbix 4.0 при вводе локального ip пк. Пишет страница не найдена. Ip v6 отключал. Куда копать?

  38. Доброго времени суток!
    Владимир, подскажите, пожалуйста, кок можно дать доступ только на чтение (на уровне гостя) к комплексным экранам определённому пользователю, например "outsource"?! Спасибо!

    • Не понял, в чем конкретно проблема? Стандартная модель прав доступа не позволяет это сделать? По-моему, через стандартную систему прав доступа это можно настроить.

    • Добрый день. Описываю по шагам, как это сделать.
      1. Переходите Администрирование - Группа пользователей. Создаете группу называете как вам удобно (например Outsource), - переходите во вкладку Права доступаи выбираете тут группу в которую входят узлы из комплексного экрана (например у вас есть 2 сервера в группе Гипервизоры и из этих двух серверов вы создали комплексный экран) Так вот, выбирается эта группа Гипервизоры и дается для нее права доступа Чтение.
      Нажимаете Сохранить(обновить)
      2. Переходите АДминистрирование - Пользователи и нажимаете создать пользователя. Называете как вам удобно (например outsource), выбираете для него группу(созданная вами в шаге 1), задаете пароль, далее переходите во вкладку Права доступа и выставляете Тип пользователя Zabbix Пользователь. Нажимаете сохранить (обновить)
      3. Перейдите Мониторинг - Комплексные экраны и в списке есть ваш комплексный экран, нажимаете на нем Свойства переходите во вкладку Общий доступ и тут вы видите Список групп и Список пользователей для общего доступа, выбираете группу созданную вами на шаге1 и пользователя на шаге 2 и даете им ТОлько чтение. Нажимаете Сохранить (обновить)
      4. Перейдите Мониторинг - Карты сетей и выбираете ту карту сетей, в которую сходят узлы из которых вы создали комплексный экран, нажимаете на нем свойства переходите во вкладку Общий доступ и тут вы видите Список групп и Список пользователей для общего доступа, выбираете группу созданную вами на шаге1 и пользователя на шаге 2 и даете им ТОлько чтение. Нажимаете Сохранить (обновить) и всё.
      Логинитесь под созданным пользователем и убеждаетесь, что доступен комплексный экран и изменить вы не можете его.

  39. Добрый день. Все делал по инструкции, а файл create.sql.gz не создался в директории. Была ли такая проблема у кого? как быть в этом случае?

    gzip: /usr/share/doc/zabbix-server-mysql/create.sql.gz: No such file or directory

    • Такая же ситуация, решили вопрос?

    • Сергей

      "gzip: /usr/share/doc/zabbix-server-mysql/create.sql.gz"
      Видимо невнимательно чиали, в инструкции после 'zabbix-server-mysql ' стоит *, либо поставьте ее, либо проверьте как точно называется папка zabbix-server-mysql.

  40. День добрый , настраиваю на 10 дебиане, все шаги прошел , при запуске веб интерфейса вижу
    Debian LogoApache2 Debian Default Page
    Сам apache отключал, как указано в статье, php nginx запущен
    если пробовать запустить ip/zabbix вижу это 404 Not Found
    nginx/1.14.2
    php 7.3 вот конфиг

    server {
    listen 80;
    server_name localhost;
    root /usr/share/zabbix;

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

    location ~ \.php$ {
    fastcgi_pass unix:/run/php/php7.3-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;
    }
    }

    никак не могу догнать где ошибка.

  41. Добрый день! Два раза повторял установку, но апач продолжает работать. ubuntu 18.04 server
    Что я делаю не так?

  42. Валерий

    Я так понимаю, ответом мне ваша же статья)
    https://serveradmin.ru/centos-8-locale-for-language-ru_ru-is-not-found-on-the-server/

    • Да, все верно. Я как раз с этой же проблемой столкнулся, когда zabbix на centos 8 перенес.

  43. Валерий

    Глупый вопрос, но я с CentOS практически не работаю. Как сгенерировать и установить русскую локаль в 8-й версии? Не могу переключиться на русский язык в Zabbix

  44. # mcedit /etc/nginx/sites-available/default
    При выполнении данной команды у меня ошибка.
    Насколько я понимаю, из-за того что в каталоге nginx у меня нет папки sites-available. Я что-то неправильно сделал? Почему-то не вижу в комментариях такого вопроса. Как это можно исправить?

    • Судя по всему что-то не так. Можете зайти в директорию /etc/nginx и посмотреть, что у вас там есть. Вам надо отредактировать дефолтный конфиг. Обычно он называется default.conf.

    • В статье ошибка была, файл называется default.conf, а не default.

  45. Дмитрий

    Из мана с сайт nginx
    baseurl=http://nginx.org/packages/centos/$releasever/$basearch/

    в статье пропущено /centos/ в части про 8 центось

    • Не понял, что именно пропущено? Там указан вот этот урл:

      baseurl=http://nginx.org/packages/centos/$releasever/$basearch/

      Как и должно быть.

      • Дмитрий

        Да, прошу прощения. Понедельник, утро...
        А в каком месте я что-то не учел если после всех действий получаю 403 вместо веб интерфейса?

        • Дмитрий

          Еще два раза прошелся по мануалу. Ставил с нуля центось 8, все перепроверил. 403 ошибка при попытке зайти по адресу.

  46. Добрый день. Подскажите пожалуйста как можно мониторить Микотик, настроенный на два провайдера со статическими ip адресами по SNMP. Не хочется создавать 2 узла сети на каждый ip микротика. Микротик настроен так, что если ложится 1 провайдер то влючается 2 и при появлении 1 отрубается 2 канал. Не знал в какой раздел написать, поэтому написал сюда. За ранее благодарен

    • Интересный вопрос. Так сходу не придумаю, как лучше сделать. Иногда в моей схеме у меня к мониторингу подключение идет через vpn. В таком случае добавлять микротик можно по адресу vpn сети. Второй костыльный вариант - сделать триггер и скрипт, который при отключении ip адреса микротика будет через api заббикса менять ip адрес в свойставх хоста с микротиком.

      Может что-то еще получше придумать. Когда реализуете, поделитесь, как в итоге сделали. Интересно.

  47. Михаил

    Уважаемый автор!
    Спасибо за развернутую статью.
    Уже 2й раз пользуюсь подробными мануалами на этом сайте
    Отблагодарил малой суммой
    Пишу не хвастовства ради, а чтобы вы знали - ваш труд ценят.

    • Спасибо, я знаю, что ценят. Посещаемость сайта тому подтверждение и многотысячные просмотры статей. В статьях счетчики просмотров реальные.

  48. всё делал по вашей инструкции

    после того как добавляю в автозагрузку , появляется ошибка
    [root@localhost]# systemctl enable zabbix-server
    Failed to lookup unit file state: Invalid argument

    что делать?

  49. Добрый день, поставил centos 8 minimal на hyper-V
    пробую поставить zabbix
    появляется ошибка
    curl: (22) The requested URL returned error: 404

    всё что я пытаюсь установить через rpm -Uvh https://
    не получается
    ping на все сайты идут

    • Попробуйте загрузить через wget и установить через rpm, указывая локальный файл. А вообще - 404 это ошибка веб сервера. Либо урл неправильный, либо удаленный сервер не отвечает. Можно попробовать скачать пакеты с другого компьютера и потом скопировать на целевой сервер.

      • на обычном компьютере когда centos ставил всё нормально скачивает.
        Проблема в hyper V скорее всего

  50. Пиздец,я 3 дня возился с разными мануалами по теме установки заббикса.
    И знаете что?
    Это просто восхитительная статья,которая помогла мне черт подери его установить!
    если что у меня бунта 18.04 . устанавливал на виртуалке.
    среди проблем были проблемы с загрузкой служб,и я скажу вам одно - читайте логи!большинство проблем было связано с грамматическими ошибками при редактировании конфигов!
    Автор ты боженька!
    спсибо

  51. Добрый день. Мониторю Микротики 3 шт. (2 во внутренней сети и 1 внешний). Шаблон скопировал стандартный (для модификации при необходимости). Данный шаблон создает прототипы графиков по трафику на интерфейсах микротика. Создаю панель мониторинга для 1 микротика в вэб интерфейсе с графиками (графики динамические) другими ИД. При выборе в этой же панели другого микрота графики остаются прежними от ! микротика. В комплексных экранах работает нормально, графики меняются в зависимости от выбранного роутера. подскажите плиз в чем может быть проблема?

  52. Андрей

    Приветствую! Спасибо за хорошую статью. Заббикс сервер запустил, но до css и js нет доступа. для папки /usr/share/zabbix выдал права 755 и привязал к группе и пользователю www-data. Но это не помогло/ Помогите советом.

  53. Александр

    # zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -p zabbix
    очевидно опечатка
    # zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -u zabbix -p zabbix
    Ну и указать какой пароль именно потом вводить
    А так - ПРОСТО ШИКАРНАЯ СТАТЬЯ! СПАСИБО!

  54. Привет всем. Есть вопрос: установил все работает, но не могу зайти по адресу http://192.168.2.233/zabbix пишет (404 Not Found) ,вхожу только если ввожу этот адрес с http://192.168.2.233/zabbix.php?action=dashboard.view Я так понимаю нужно до настроить NGINX. Куда копать? спасибо

    • 192.168.2.233/zabbix это линк на директорию /zabbix, а 192.168.2.233/zabbix.php?action=dashboard.view линк на корень домена, где вызывается скрипт zabbix.php

      Вы заббикс установили в корень сервера. Просто откройте http://192.168.2.233 и увидите дашборд.

      • вот что выскакивает http://file.sampo.ru/qsdqgk/

        • Что-то в nginx не донастроили, проверяйте внимательно. Пример конфига в статье есть, он 100% рабочий. Если что-то не понятно, есть видео. Там наглядно показана вся настройка. Ошибиться нет шанса, если внимательно проверить и сделать по статье и видео.

          У вас вместо заббикса дефолтная страница nginx грузится. Возможно путь к root разделу с исходниками заббикса не указали или ошиблись в нем.

  55. Привет ,в системе zabbix при выборе Способы оповещений я выбираю по Email, и там уже включаю функцию Аутентификация имя пользователя и пароль email который я открыл для zabbix, все данные вроде бы прописаны правильно но оповещения по email не приходит . а вот если Аутентификация отключить оповещений работает просто без Аутентификация. в чём может быть проблема и как её решить?

    • Надо смотреть лог zabbix сервера, там могут быть подсказки, почему не уходит оповещение по email. Если без аутентификации уходят сообщения, это повод повнимательнее посмотреть на почтовый сервер. Он не должен позволять отправлять почту без аутентификации. Это большая дыра в безопасности.

  56. Здраствуйте. Во первых хотель бы сказать спосибо за статю:) У меня вот такая сетуациа и я прашу помоч мне
    У меня zabbix 4.2.6, php 9.3, mariadb 10.3
    все хорошо работает около 300 хастов, вот толко когда хачу настроить Action то прападает связ с базой

    Details Media type test failed.
    Cannot read the response, check connection with the Zabbix server "localhost".
    лог maria db Oct 04 16:27:15 zabbixnew mysqld[3639]: 2019-10-04 16:27:15 48 [Warning] Aborted connection 48 to db: 'zabbix' user: 'zabbix' host: 'localhost' (Got an error reading communication packets)

    max-connection I set 300

    • Не знаю, чем тут могу помочь. У вас какие-то проблемы с соединением с базой, копайте в эту сторону. К тому же подсказка есть:

      Aborted connection 48 to db: ‘zabbix’ user: ‘zabbix’ host: ‘localhost’ (Got an error reading communication packets)

      Может лимиты на соединения кончаются или еще что-то.

  57. Обновил статью, добавил описание установки на новую CentOS 8.

  58. Добрый день. Помогите разобраться. Застрял на этапе запуска mariadb. Выводятся следующие сообщения: Failed to execute operation: No such file or directory и Failed to start mysql.service: Unit not found. Спасибо.

    • Судя по всему установка либо вообще не прошла, либо были ошибки. Попробуйте переустановить mariadb. Если нужна более детальная помощь, создайте тему на форуме и выложите подробности ошибки и ваших действий.

      • Просмотрел лог установки и обнаружил, что не хватает пакета deltarpm. После установки пакета все стартануло. Спасибо!

  59. Добрый день! Столкнулся вот с чем:
    rpm -Uhv http://rpms.remirepo.net/enterprise/remi-release-7.rpm
    Retrieving http://rpms.remirepo.net/enterprise/remi-release-7.rpm
    warning: /var/tmp/rpm-tmp.KYE33M: Header V4 DSA/SHA1 Signature, key ID 00f97f56: NOKEY
    error: Failed dependencies:
    epel-release = 7 is needed by remi-release-7.7-1.el7.remi.noarch

    Если выполнить rpm -Uhv http://rpms.remirepo.net/enterprise/remi-release-8.rpm, то команда выполняется успешно, но потом
    yum-config-manager --enable remi-php71
    Error: No matching repo to modify: remi-php71.

    Помогите угадать версию yremi-php

    • В общем вот, что я сделал:
      yum-config-manager --enable remi-php74

      Потом
      yum install php74

      А вот при выполнении команды на установку остальных модулей пхп получаем это:
      Last metadata expiration check: 0:01:00 ago on Thu 26 Sep 2019 10:44:25 AM EEST.
      No match for argument: php-fpm
      No match for argument: php-cli
      No match for argument: php-mysql
      No match for argument: php-gd
      No match for argument: php-ldap
      No match for argument: php-odbc
      No match for argument: php-pdo
      No match for argument: php-pecl-memcache
      No match for argument: php-opcache
      No match for argument: php-pear
      No match for argument: php-xml
      No match for argument: php-xmlrpc
      No match for argument: php-mbstring
      No match for argument: php-snmp
      No match for argument: php-soap
      No match for argument: php-zip
      Error: Unable to find a match

    • Только что проверил, у меня без проблем установился этот репозиторий.

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

      Только перед этим не забудьте поставил epel-release. В статье это указано, а вы, похоже, не выполнили, вот и получили ошибку.

      epel-release = 7 is needed