Данный пост предназначен для всех тех, кто ищет подробное описание процесса установки Zabbix версии 5.4-1 на Ubuntu Server версии 20.04.

Zabbix - это решение распределенного мониторинга корпоративного класса с открытыми исходными кодами.

В данном руководстве мы с Вами рассмотрим случай, когда у нас уже есть сервер с установленной на нем серверной ОС Ubuntu Server 20.04 LTS. (в интернете довольно много руководств по поисковому запросу "установка и первоначальная настройка Ubuntu Server 20.04", поэтому данный процесс описываться в рамках представленного поста не будет).

На сервере обязательным условием будет иметь установленный OpenSSH, а также открыть 22 порт, эти процедуры необходимо проделать чтобы подключаться к серверу по протоколу SSH, например через программное обеспечение PuttY или если вы работаете в linux ОС то через его встроенный терминал.

В моем случае я использую терминал встроенный в ОС Ubuntu, зная ip адрес сервера команда для подключения к нему по протоколу shh выглядит следующим образом:

ssh habr@192.168.0.104

где ssh — это протокол для установки связи между PC и сервером, а далее идет имя пользователя@адрес сервера, в моем случае это habr@192.168.0.104, после чего система при первом подключении спросит Вас уверенны ли Вы, что хотите продолжить подключение:

Ответив системе yes и нажав enter мы соглашаемся, после чего необходимо будет ввести пароль

habr@192.168.0.104's password:

Вводим пароль и попадаем на сервер, выглядит это так:

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

wget https://repo.zabbix.com/zabbix/5.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.4-1%2Bubuntu20.04_all.deb

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

sudo dpkg -i zabbix-release_5.4-1+ubuntu20.04_all.deb

Далее необходимо обновить локальный индекс пакетов до последних изменений в репозиториях с помощью команды:

sudo apt update

На этом этапе мы можем установить пакеты, необходимые для работы, с помощью команды:

sudo apt install -y apache2 apt-transport-https certbot python3-certbot-apache mysql-server zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent

В данном руководстве в качестве веб-сервера будет использован - Apache, а в качестве системы для управления базами данных - MySQL. После завершения операции по установке пакетов нам необходимо включить модуль веб-сервера Apache под названием “rewrite”, делается это с помощью команды:

sudo a2enmod rewrite

Следующим этапом будет создание файла виртуального хоста, с которым в дальнейшем будет работать Zabbix. Для этого воспользуемся текстовым редактором, с помощью команды:

sudo vim /etc/apache2/sites-available/zabbixhabr.local.conf

!!!(вместо zabbixhabr.local укажите свой домен)

Обратите внимание на то, что для доступа к панели управления Zabbix из сети Интернет необходимо указать полноценный домен или субдомен, иметь статический ip адрес и переадресацию портов на Ваш сервер. Я произвожу установку Zabbix локально и его публикацию в дальнейшем не планирую.

Находясь в текстовом редакторе "vim" необходимо нажать “i” на клавиатуре, чтобы перейти в режим редактирования, затем нужно вставить следующую конфигурацию в создаваемый файл для работы веб-сервера:

<VirtualHost *:80>
	ServerAdmin mail@examle.com #тут укажите email администратора вэб сервера
	ServerName domenname.sample #тут укажите домен в моем случае это zabbihabr.local
	DocumentRoot /usr/share/zabbix
	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Далее нажмите на кнопку “Esc”, чтобы выйти из режима редактирования, а затем введите “:x” и нажмите на кнопку “Enter”, чтобы сохранить изменения и выйти из редактора "vim".

Активируем созданный виртуальный хост с помощью команды:

sudo a2ensite zabbixhabr.local.conf

Также в Apache желательно деактивировать виртуальный хост, созданный по умолчанию, с помощью команды:

sudo a2dissite 000-default.conf

Если сейчас попробовать убедиться, что в синтаксисе нового конфигурационного файла Apache нет ошибок, с помощью команды:

sudo apache2ctl configtest

То можно будет столкнуться с тем что сервер ответит нам: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message

Исправить это можно отредактировав файл apache2.conf с помощью комманды:

sudo vim /etc/apache2/apache2.conf

Добавив в нижнюю строку файла ServerName myserver.mydomain.com, в моем случае я пишу ip адрес так как использую локально zabbix ServerName 192.168.0.104

Давайте перезапустим Apache, чтобы применить внесенные изменения, с помощью команды:

sudo systemctl restart apache2

Проверить, что Apache успешно запустился, можно с помощью команды:

sudo systemctl status apache2

Следующим этапом нам необходимо настроить MySQL для работы с Zabbix.

Первое что необходимо сделать, это запустить скрипт “mysql_secure_installation”, который предназначен для обеспечения безопасности MySQL.

Запустить скрипт можно с помощью команды:

sudo mysql_secure_installation

Далее система просит нас ответить на несколько вопросов для обеспечения базового уровня безопасности MySQL.

Первый вопрос о том, хотим ли мы воспользоваться плагином для проверки надежности пароля, который необходимо будет задать позже для пользователя “root”, обладающего правами администратора в MySQL. Так как я использую Zabbix локально то я отвечаю системе нет и она сразу же просит меня ввести пароль для root пользователя mysql:

Далее система спрашивает нас, хотим ли мы удалить анонимных пользователей.

Нажимаем на кнопку “y”, затем “Enter”.

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

Нажимаем на кнопку “y”, затем “Enter”.

После хотим ли мы удалить тестовые базы данных.

Нажимаем на кнопку “y”, затем “Enter”.

И последний вопрос, перезагрузить таблицы привилегий сейчас?

Нажимаем на кнопку “y”, затем “Enter”.

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

Подключиться к консоли управления MySQL можно с помощью команды:

sudo mysql -u root -p

В терминале система запросит у Вас пароль от учетной записи “root”, заданный ранее, после его ввода нажимаем на кнопку “Enter” и попадаем в консоль команд MySql:

В моем случае в качестве имени базы данных для Zabbix я укажу “zabbixhabrdb”.

Итак, создаем базу данных, с помощью команды:

CREATE DATABASE zabbixhabrdb CHARACTER SET utf8 COLLATE utf8_bin;

В качестве имени пользователя, обладающего правами на базу данных для работы Zabbix, я буду использовать “zabbixhabr” с паролем “ZabbHabr2021”.

Создать пользователя и назначить ему пароль можно с помощью команды:

CREATE USER 'zabbixhabr'@'localhost' IDENTIFIED BY 'ZabbHabr2021';

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

GRANT ALL ON zabbixhabrdb.* TO 'zabbixhabr'@'localhost';

Применим внесенные изменения с помощью команды:

FLUSH PRIVILEGES;

Отключиться от консоли управления MySQL можно с помощью команды:

quit

Теперь нам необходимо настроить схему и импортировать данные в ранее созданную базу данных для работы Zabbix. Для этого выполним команду:

zcat /usr/share/doc/zabbix-sql-scripts/mysql/create.sql.gz | mysql -u zabbixhabr -p zabbixhabrdb

В качестве имени базы данных для работы Zabbix используется “zabbixhabrdb”, ав качестве имени пользователя, обладающего правами на базу данных для работы Zabbix, используется “zabbixhabr”. Замените их на свои! Указываем пароль от учетной записи “ZabbHabr2021” в моем случае, и нажимаем на кнопку “Enter”.

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

sudo vim /etc/zabbix/zabbix_server.conf

Нажимаем на кнопку “i”, чтобы перейти в режим редактирования и тут нам будет необходимо найти и вписать следующие параметры, предварительно раскомментировав(удалить символ "#" в начале строки если он имеется) их :

DBHost=localhost

DBName=zabbixhabrdb

DBUser=zabbixhabr

DBPassword=ZabbHabr2021

Введя свои параметры можно нажать “Esc”, чтобы выйти из режима редактирования, затем введите “:x” и нажмите на кнопку “Enter”, чтобы сохранить изменения и выйти из редактора.

Далее необходимо внести изменения в конфигурационный файл Apache, открыв его в текстовом редакторе с помощью команды:

sudo vim /etc/zabbix/apache.conf

Тут нас интересует параметр “php_value date.timezone Europe/Riga”, раскомментируем его, удалив символ “#”. Затем указываем вместо “Europe/Riga”, часовой пояс, в котором находится ваш сервер Zabbix. Список поддерживаемых часовых поясов можно найти по ссылке. Я впишу Europe/Moscow т.к. мой сервер находится в часовом поясе Москвы.

Давайте перезапустим Zabbix, Zabbix Agent и Apache, чтобы применить внесенные изменения, для этого необходимо выполнить команду:

sudo systemctl restart zabbix-server zabbix-agent apache2

После того как сервисы перезапустились мы можем включить их автозапуск при старте операционной системы, для этого выполним команду:

sudo systemctl enable zabbix-server zabbix-agent apache2

Для продолжения процесса установки Zabbix необходимо с рабочей станции перейти по ссылке http://192.168.0.104/setup.php, где 192.168.0.104 - ip моего сервера. Соответственно, вам необходимо указать имя или IP-адрес вашего сервера Zabbix.

Нажимаем на кнопку "Next step" в правом нижнем углу. Далее нас встречает страница "Проверка предпосылок"

Убеждаемся что напротив всех проверит стоит значение "ОК" и снова нажимаем на кнопку "Next step" в правом нижнем углу.

На следующей странице нужно Настроить подключение к БД.

В поле “Database type” выбираем “MySQL”.

Так как база данных для работы Zabbix находится на одном сервере с Zabbix.

В поле “Database host” указываем “localhost”.

В поле “Database port” указываем значение “0”, чтобы использовать порт по умолчанию, для подключения базы данных.

В поле “Database name” указываем “zabbixhabrdb” или ранее указанное Вами имя.

В поле “User” указываем “zabbixhabr” или ранее указанное Вами имя.

В поле “Password” указываем пароль, присвоенный пользователю “zabbixhabr” или указанному Вами пользователю.

После того как мы ввели все данные, нажимаем на кнопку "Next step" в правом нижнем углу.

На следующей странице нужно указать сведения о вашем сервере Zabbix.

В поле “Host” я указываю “localhost” т.к. сервер у меня локальный.

В поле “Port” указываем “10051” он стоит по умолчанию.

Нажимаем на кнопку "Next step" в правом нижнем углу.

На следующей странице мы можем увидеть часовой пояс который мы установили, а также изменить цветовую тему по умолчанию, снова нажимаем на кнопку “Next step” в правом нижнем углу.

На следующей странице мы видим суммарную информацию по установке, и проверив ее, снова нажимаем на кнопку “Next step” в правом нижнем углу.

Все готово для использования Zabbix. Нажимаем на кнопку “Finish” в правом нижнем углу.

Логин для учетной записи администратора Zabbix по умолчанию: Admin

Пароль для учетной записи администратора Zabbix по умолчанию: zabbix

Указываем имя пользователя и пароль учетной записи Zabbix, и нажимаем на кнопку “Sign in”.

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

Комментарии (14)


  1. sudoroot
    29.11.2021 17:12
    +15

    Уважаемый автор, я полагаю в Вашу статью полетит много минусов. И позволю себе постараться объяснить почему. Установка zabbix полностью покрывает вполне хорошая документация, которая к слову на русском языке. Если бы Вы рассказали о каких-то проблемах, о каких-то нюансах, багах, тогда да. А Вы проделали работу по переформулированию официальной документации своими словами. Постарайтесь найти интересный технический случай в своей практике, поделитесь с публикой хабра, и ваша статья будет пользоваться успехом! Ну и не переживайте, и не расстраивайтесь, если первая попытка не удалась! Пишите!


    1. maksimshap Автор
      29.11.2021 19:11

      Спасибо большое за Вашу поддержку, просто я не нашёл подробного наглядного мануала в сети и решил описать свой опыт по установке свежей, актуальной на сегодняшний момент версии zabbix на актуальную версию Ubuntu server. Все таки с предыдущими релизами есть различия небольшие. Спасибо Вам ещё раз за то что поддержали мой пост.


    1. AVX
      29.11.2021 23:09
      +1

      В защиту автора скажу - в документации заббикса (на сайте) очень много ошибок и недочётов. Я как-то пару месяцев назад решил поставить заббикс впервые на centos8+postgresql. Там вот, что могло пойти не так - пошло не так. И команды не те, и последовательность не та, и ещё что-то, я уж не помню что именно - но по документации с сайта заббикс (для версии 5.4, что я ставил) не удалось поставить как надо. И на postresql тоже документация подвела. В итоге где-то частями по интернету нашёл где и как ставится, и поставил, работает.

      Эта статья уж точно полезнее, чем недавняя статья-новость "вот, github упал", что вполне можно и на downdetector посмотреть, кому надо.


    1. sizziff
      30.11.2021 17:20

      Из за "конструктивной критики" и "добрых минусов" десять тысяч раз подумаешь, что бы хоть что то написать на хабре. Пишите зануды себе сами...


      1. AVX
        02.12.2021 14:51

        Пишите!

        Тут надо просто включить здоровый пофигизм в отношении плюсов/минусов. Важно только что можно высказать своё мнение, а не то, кто и как его оценит. Если есть что-то интересное/полезное, и этого нет в интернете - однозначно стоит написать.


  1. denaspireone
    29.11.2021 18:27
    +3

    Уже б тогда писали как собрать zabbix 6 из исходников к примеру на haiku или void linux...


    1. maksimshap Автор
      29.11.2021 19:12

      Если мне придётся столкнуться с такой задачей, то вполне может быть)


  1. Tujh
    29.11.2021 19:40

    Автору для сведения, большую часть статьи можно заменить следующим файлом для Docker Swarm:

    version: "3.8"
    
    services:
      server:
        image: zabbix/zabbix-server-mysql:ubuntu-latest
        environment:
          DB_SERVER_HOST: db
          MYSQL_USER_FILE:  /run/secrets/maria-db-user-name
          MYSQL_PASSWORD_FILE: /run/secrets/maria-db-user-password
        volumes:
          - type: bind
            source: /mnt/docker/volumes/zabbix/export
            target: /var/lib/zabbix/export
          - type: bind
            source: /mnt/docker/volumes/zabbix/snmptraps
            target: /var/lib/zabbix/snmptraps
        networks:
          - zabbix-network
        secrets:
          - maria-db-user-name
          - maria-db-user-password
    
      zbx-web:
        image: zabbix/zabbix-web-nginx-mysql:ubuntu-latest
        environment:
          PHP_TZ: 'Europe/Amsterdam'
          DB_SERVER_HOST: db
          ZBX_SERVER_HOST: server
          MYSQL_USER_FILE:  /run/secrets/maria-db-user-name
          MYSQL_PASSWORD_FILE: /run/secrets/maria-db-user-password
        networks:
          - zabbix-network
          - nginx-connection
        secrets:
          - maria-db-user-name
          - maria-db-user-password
    
      db:
        image: mariadb:latest
        environment:
          MYSQL_ROOT_PASSWORD_FILE: /run/secrets/maria-db-root-password
          MYSQL_USER_FILE:  /run/secrets/maria-db-user-name
          MYSQL_PASSWORD_FILE: /run/secrets/maria-db-user-password
        volumes:
          - type: bind
            source: /mnt/docker/volumes/zabbix/db
            target: /var/lib/mysql
        networks:
          - zabbix-network
        secrets:
          - maria-db-root-password
          - maria-db-user-name
          - maria-db-user-password
    
    secrets:
      maria-db-root-password:
        external: true
      maria-db-user-name:
        external: true
      maria-db-user-password:
        external: true
    
    networks:
      zabbix-network:
        external: true
      nginx-connection:
        external: true
    

    можно и порт открыть, но у меня все сервисы собраны за проксирующим nginx, часть конфига из него, для проксирования WebUI Zabbix, а сервер использует активные соединения к клиентам.

      server {
        listen	80;       		# Listen on port 80
    
        location /monitoring/ {
            sendfile off;
            proxy_pass         http://zabbix/;
            proxy_redirect     default;
            proxy_http_version 1.1;
    
            proxy_set_header   Host              $http_host; # $host;
            proxy_set_header   X-Real-IP         $remote_addr;
            proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
            proxy_set_header   X-Forwarded-Proto $scheme;
            proxy_max_temp_file_size 0;
    
            proxy_connect_timeout      90;
            proxy_send_timeout         90;
            proxy_read_timeout         90;
            proxy_buffering            off;
            proxy_set_header Connection ""; # Clear for keepalive
        }
    


  1. jo_b1ack
    30.11.2021 12:08
    +3

    разве в официальной доке заббикса не тоже самое написано?

    странно читать - я не нашел инструкции, если она прям лежит на офф.сайте.

    проблема всех этих "установок" в том что они очень быстро становятся неактуальными,и соответственно бесполезными


    1. ilyakruchinin
      01.12.2021 05:41
      +1

      Всю статью можно заменить одной ссылкой: https://www.zabbix.com/documentation/5.2/ru/manual/installation


      1. maksimshap Автор
        01.12.2021 22:06
        -1

        Особенно версию 5.4 на мануал от версии 5.2, спасибо за внимательность


        1. Tujh
          02.12.2021 00:24
          +1

          Вверху страницы есть список выбора версий, 5.4 в нём тоже присутствует.

          Ну или перманентная ссылка: https://www.zabbix.com/documentation/5.4/ru/manual/installation


  1. maksimshap Автор
    01.12.2021 22:12
    -1

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


    1. oller
      05.12.2021 11:06
      +1

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

      Здесь уровень пользователей сильно выше, поэтому ваша примитивная статья не найдёт отклика