# Zabbix Server 6 в Docker

**URL:** <https://383.su/t/zabbix-server-6-v-docker/296>\
**Category:** Софт\
**Tags:** zabbix\
**Created:** [25.Май.2024 12:43:51 UTC](https://383.su/t/zabbix-server-6-v-docker/296 "2024-05-25T12:43:51Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![cyb3r](https://383.su/user_avatar/383.su/cyb3r/32/1273_2.png) [@cyb3r](https://383.su/u/cyb3r)\
**Post date:** [25.Май.2024 12:43:51 UTC](https://383.su/t/zabbix-server-6-v-docker/296/1 "2024-05-25T12:43:51Z")

</div>

Zabbix это бесплатный и надежный инструмент корпоративного уровня с открытым исходным кодом, используемый для мониторинга и анализа производительности компонентов. Zabbix предлагает мониторинг сетей в режиме реального времени, выявляет неисправности, как только они возникают, и отправляет оповещения команде реагирования. Это помогает обеспечить непрерывность бизнеса. Zabbix имеет ядро, основанное на языке C с фронтендом Java и PHP.

Архитектура Zabbix&nbsp; **состоит из Zabbix сервера** &nbsp;и клиентов. Сервер обычно взаимодействует с нативными клиентами, известными как&nbsp; **Zabbix агенты**. Агентом может быть система Linux, Windows или NIX. Zabbix агент — это клиентское программное обеспечение, установленное на клиентской машине для сбора журналов мониторинга и отправки их на сервер.

Ниже приведена иллюстрация архитектуры Zabbix.

 ![](https://383.su/uploads/default/original/2X/d/d08c073a55d42c63b5890686e5ace417f73b3840.png)

Последний релиз, Zabbix 6.0 LTS, имеет множество удивительных функций, которые включают в себя:

- **Машинное обучение** для мониторинга базовых показателей с расширенным обнаружением аномалий.
- **Добавлены улучшения безопасности** с политикой сложности паролей для пользовательского интерфейса Zabbix и журналом аудита для всех операций пользователей и API.
- **Высокая производительность**** , доступность и масштабируемость** – Zabbix 6.0 LTS имеет прокси для обеспечения автоматической балансировки нагрузки и HA, нативную настройку HA для Zabbix Server, улучшения производительности API и масштабируемое хранилище истории.
- **Корреляция событий и корпоративная консоль аварийной сигнализации** — она имеет возможность выполнять фильтрацию, дедупликацию и агрегацию событий с помощью правил предварительной обработки событий, возможность вручную скрывать и приостанавливать проблемы на определенный период времени, а также представление проблем, оптимизированное для более быстрого решения проблем и совместной работы.
- **Мониторинг бизнес-сервисов (BSM)** с поддержкой оповещений об изменениях статуса сервиса, мультитенантность для сервисов, анализ влияния, импорт/экспорт для дерева сервисов, возможность масштабирования до 100 КБ бизнес-сервисов и т. д.
- **Расширенная визуализация** – включает в себя многоуровневые графики, аннотации графиков, расширенные виджеты состояния узлов сети, виджеты событий с течением времени, географические карты и т.д.

Теперь давайте углубимся в суть и посмотрим, как мы можем запустить Zabbix Server 6.0 LTS в Docker Containers.

## Шаг 1 – Установите Docker Runtime в систему

Для этого руководства нам нужно установить Docker Engine. Если он у вас уже установлен, то вы можете пропустить этот шаг. В противном случае установите Docker Engine с помощью приведенных ниже команд, которые лучше всего подходят для вашей системы.

Самый быстрый способ установить docker — использовать следующие команды:

```
curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh
```

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

**В Debian:**

```
sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
```

**В Ubuntu:**

```
sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
```

**На RHEL/CentOS 8/Rocky Linux 8/Alma Linux 8:**

```
sudo dnf install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo dnf -y install docker-ce docker-ce-cli containerd.io
```

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

```
$ docker --version
Docker version 24.0.7, build afdd53b
```

Запустите и включите службу Docker.

```
sudo systemctl enable --now docker
```

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

```
sudo usermod -aG docker $USER
newgrp docker
```

**В macOS:**

```
brew cask install docker
```

## Шаг 2 – Создайте постоянные тома данных Zabbix

Для того, чтобы данные Zabbix сохранялись, нам нужно создать тома для данных. Для Zabbix нам понадобятся следующие тома:

```
sudo mkdir /zabbix-data
sudo mkdir /zabbix-data/alertscripts
sudo mkdir /zabbix-data/externalscripts
sudo mkdir /zabbix-data/export
sudo mkdir /zabbix-data/modules
sudo mkdir /zabbix-data/enc
sudo mkdir /zabbix-data/ssh_keys
sudo mkdir /zabbix-data/mibs
sudo mkdir /zabbix-data/snmptraps
sudo mkdir -p /zabbix-nginx/nginx
sudo mkdir /zabbix-nginx/modules
sudo mkdir /zabbix-mysql
```

Установите правильные разрешения:

```
sudo chmod 777 -R /zabbix-data/
sudo chmod 777 -R /zabbix-nginx/
sudo chmod 777 /zabbix-mysql/
```

В системах на базе Hel отключите SELinux или установите его в разрешительный режим, как показано ниже:

```
sudo setenforce 0
sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config
```

## Шаг 3 – Запустите Zabbix Server 6.0 LTS в контейнерах Docker

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

У нас будут следующие контейнеры:

- **Сервер MySQL**
- **Zabbix сервер** – с поддержкой баз данных MySQL
- **Веб-интерфейс Zabbix** – основан на веб-сервере Nginx с поддержкой базы данных MySQL
- **Zabbix прокси** – с поддержкой базы данных MySQL
- **Zabbix Java Gateway**

Используя docker, вы можете просто запустить контейнеры, как показано ниже:

Начните с создания выделенной сети для всех компонентов Zabbix:

```
docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 zabbix-net
```

Подтвердить, что создание прошло успешно

```
$ docker network list
NETWORK ID NAME DRIVER SCOPE
652e3aadefbc bridge bridge local
6854c55d5ecb host host local
7460cfbf8c6c none null local
0f1961d58b8e zabbix-net bridge local
```

- **Контейнер сервера MYSQL**

Теперь создадим контейнер базы данных MySQL для Zabbix:

```
docker run --name mysql-server -t \
      -e MYSQL_DATABASE="zabbixdb" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="Passw0rd" \
      -e MYSQL_ROOT_PASSWORD="StrongPassword" \
      --network=zabbix-net \
      -d mysql:8.0 \
      --character-set-server=utf8 --collation-server=utf8_bin \
      --default-authentication-plugin=mysql_native_password
```

- **Zabbix Java шлюз**

Следующим контейнером, который будет развернут, будет Zabbix Java gateway.

```
docker run --name zabbix-java-gateway -t \
      --network=zabbix-net \
      --restart unless-stopped \
      -d zabbix/zabbix-java-gateway:alpine-6.0-latest
```

- **Zabbix сервер**

Разверните Zabbix сервер с поддержкой базы данных MySQL и свяжите его с созданным экземпляром MySQL. Не забудьте подставить правильные данные:

```
docker run --name zabbix-server-mysql -t \
      -e DB_SERVER_HOST="mysql-server" \
      -e MYSQL_DATABASE="zabbixdb" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="Passw0rd" \
      -e MYSQL_ROOT_PASSWORD="StrongPassword" \
      -e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
      --network=zabbix-net \
      -p 10051:10051 \
      --restart unless-stopped \
      -d zabbix/zabbix-server-mysql:alpine-6.0-latest
```

- **Веб-интерфейс Zabbix**

Создайте веб-интерфейс Zabbix и свяжите его с созданным Zabbix сервером и MySQL.

```
docker run --name zabbix-web-nginx-mysql -t \
      -e ZBX_SERVER_HOST="zabbix-server-mysql" \
      -e DB_SERVER_HOST="mysql-server" \
      -e MYSQL_DATABASE="zabbixdb" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="Passw0rd" \
      -e MYSQL_ROOT_PASSWORD="StrongPassword" \
      --network=zabbix-net \
      -p 80:8080 \
      --restart unless-stopped \
      -d zabbix/zabbix-web-nginx-mysql:alpine-6.0-latest
```

Проверьте, запущены ли контейнеры:

```
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
81ce9d2dc99a mysql:8.0 "docker-entrypoint.s…" 18 seconds ago Up 17 seconds 3306/tcp mysql-server
070f11ee0d29 zabbix/zabbix-web-nginx-mysql:alpine-6.0-latest "docker-entrypoint.sh" 7 minutes ago Up 7 minutes 8443/tcp, 0.0.0.0:80->8080/tcp, :::80->8080/tcp zabbix-web-nginx-mysql
fb53558cb096 zabbix/zabbix-server-mysql:alpine-6.0-latest "/sbin/tini -- /usr/…" 7 minutes ago Up About a minute 0.0.0.0:10051->10051/tcp, :::10051->10051/tcp zabbix-server-mysql
ba2f317cb29a zabbix/zabbix-java-gateway:alpine-6.0-latest "docker-entrypoint.s…" 7 minutes ago Up 7 minutes 10052/tcp zabbix-java-gateway
```

Эта служба будет доступна на хост-машине через порт 80/TCP. Теперь вы можете получить доступ к веб-интерфейсу Zabbix через порт&nbsp; **_80_**.

### Запустите Zabbix Server 6.0 LTS с помощью Docker Compose.

Установите Docker compose в своей системе с помощью команды:

```
### CentOS / RHEL ###
sudo yum -y install curl wget
### Debian / Ubuntu ###
sudo apt update
sudo apt install -y curl wget

```

Скачайте Docker Compose в Linux.

```
curl -s https://api.github.com/repos/docker/compose/releases/latest | grep browser_download_url | grep docker-compose-linux-x86_64 | cut -d '"' -f 4 | wget -qi -
```

Сделайте двоичный файл исполняемым.

```
chmod +x docker-compose-linux-x86_64
```

Переместите файл в папку PATH.

```
sudo mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
```

Проверьте установку.

```
$ docker-compose version||docker compose version
Docker Compose version v2.21.0
```

Создайте файл docker-compose для контейнеров:

```
vim docker-compose.yml
```

Файл будет содержать следующие строки:

```
version: '3.5'
services:
 mysql-server:
  image: mysql:8.0
  networks:
   - zbx_net
  command:
   - mysqld
   - --character-set-server=utf8
   - --collation-server=utf8_bin
   - --default-authentication-plugin=mysql_native_password
  environment:
   - MYSQL_USER=zabbix
   - MYSQL_DATABASE=zabbixdb
   - MYSQL_PASSWORD=PasswOrd
   - MYSQL_ROOT_PASSWORD=StrongPassword
   - ZBX_JAVAGATEWAY=zabbix-java-gateway
  volumes:
   - /zabbix-mysql:/var/lib/mysql:rw
 zabbix-server-mysql:
  image: zabbix/zabbix-server-mysql:alpine-latest
  networks:
   - zbx_net
  ports:
   - 10051:10051
  volumes:
   - /etc/localtime:/etc/localtime:ro
   - /etc/timezone:/etc/timezone:ro 
   - /zabbix-data/alertscripts:/usr/lib/zabbix/alertscripts:ro
   - /zabbix-data/externalscripts:/usr/lib/zabbix/externalscripts:ro
   - /zabbix-data/export:/var/lib/zabbix/export:rw
   - /zabbix-data/modules:/var/lib/zabbix/modules:ro
   - /zabbix-data/enc:/var/lib/zabbix/enc:ro
   - /zabbix-data/ssh_keys:/var/lib/zabbix/ssh_keys:ro
   - /zabbix-data/mibs:/var/lib/zabbix/mibs:ro
   - /zabbix-data/snmptraps:/var/lib/zabbix/snmptraps:rw
  environment:
   - DB_SERVER_HOST=mysql-server
   - MYSQL_DATABASE=zabbixdb
   - MYSQL_USER=zabbix
   - MYSQL_PASSWORD=PasswOrd
   - MYSQL_ROOT_PASSWORD=StrongPassword
   - ZBX_JAVAGATEWAY=zabbix-java-gateway
depends_on:

mysql-server

zabbix-web-nginx-mysql:
image: zabbix/zabbix-web-nginx-mysql:alpine-6.0-latest
networks:

```

Удалите текущие контейнеры:

```
for i in mysql-server zabbix-java-gateway zabbix-server-mysql zabbix-web-nginx-mysql; do
  docker rm -f $i
done
```

Запустите контейнеры:

```
docker-compose up -d
```

Пример выходных данных выполнения:

```
[+] Running 1/1
 ⠿ zabbix-server-mysql Pulled 1.3s
[+] Running 5/5
 ⠿ Network rocky_zbx_net Created 0.1s
 ⠿ Container rocky-zabbix-java-gateway-1 Started 0.6s
 ⠿ Container rocky-mysql-server-1 Started 0.5s
 ⠿ Container rocky-zabbix-server-mysql-1 Started 1.1s
 ⠿ Container rocky-zabbix-web-nginx-mysql-1 Started 1.4s
```

Проверьте, запущены ли контейнеры:

```
$ docker-compose ps
NAME COMMAND SERVICE STATUS PORTS
rocky-mysql-server-1 "docker-entrypoint.s…" mysql-server running 33060/tcp
rocky-zabbix-java-gateway-1 "docker-entrypoint.s…" zabbix-java-gateway running 0.0.0.0:10052->10052/tcp, :::10052->10052/tcp
rocky-zabbix-server-mysql-1 "/sbin/tini -- /usr/…" zabbix-server-mysql running 0.0.0.0:10051->10051/tcp, :::10051->10051/tcp
rocky-zabbix-web-nginx-mysql-1 "docker-entrypoint.sh" zabbix-web-nginx-mysql running 0.0.0.0:80->8080/tcp, 0.0.0.0:443->8443/tcp, :::80->8080/tcp, :::443->8443/tcp
```

Вам необходимо разрешить сервисы через брандмауэр:

```
##For firewalld
sudo firewall-cmd --permanent --add-port=10051/tcp
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --reload

```

## Шаг 4 – Доступ к веб-интерфейсу Zabbix 6.0 LTS

Веб-интерфейс Zabbix 6.0 теперь доступен на порту 80 и может быть доступен с помощью URL [http://IP\_address](http://ip_address/) или [http://domain\_name](http://domain_name/)

 ![](https://383.su/uploads/default/original/2X/1/1654ef6d0d9f00ab76f79eceb01ae0fb7dbc3294.png)

Войдите в систему, используя учетные данные по умолчанию:

```
Username: Admin
Password: zabbix
```

После успешного входа в систему вы должны увидеть панель управления ниже:

 ![](https://383.su/uploads/default/original/2X/2/20d7fd59014ff18daee815223df20445a3ebe1d5.png)

Измените пароль администратора в разделе **Администрирование** \> **Пользователи** \> **Пароль администратора** \> \> **Изменить пароль**.

 ![](https://383.su/uploads/default/original/2X/5/5f3eac8bae6bc35125cbf87a9f1c9537b4daba98.png)

После установки предпочтительного пароля нажмите&nbsp; **кнопку «Обновить»**

## Шаг 5 – Настройте целевой узел сети Zabbix мониторинга.

Теперь мы настроим этот сервер для мониторинга, установив пакет Zabbix агента на клиентскую машину. Пакет Zabbix агента может быть установлен следующим образом:

```
##On Rhel/CentOS/Rocky Linux/Alma Linux
sudo rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-1.el8.noarch.rpm
sudo yum install zabbix-agent zabbix-sender -y
#Ubuntu
wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-1+ubuntu20.04_all.deb
sudo dpkg -i zabbix-release_6.0-1+ubuntu20.04_all.deb
sudo apt update
sudo apt install zabbix-agent zabbix-sender

```

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

```
sudo vim /etc/zabbix/zabbix_agentd.conf
```

Отредактируйте файл, как показано ниже:

```
# On line 117 - Specify Zabbix server IP Address
Server=192.168.205.11
On line 158 - Specify Zabbix server ( For active checks)
ServerActive=192.168.205.11
On line 169 - Set hostname of the Zabbix agent

```

Запустите и включите услугу:

```
sudo systemctl start zabbix-agent
sudo systemctl enable zabbix-agent
```

Также необходимо разрешить порт через брандмауэр:

```
sudo firewall-cmd --permanent --add-port=10050/tcp
sudo firewall-cmd --reload
```

### Добавление Zabbix агента на Zabbix сервер

Zabbix агент теперь можно добавить на сервер, перейдя в&nbsp; **Конфигурация** &nbsp;\>&nbsp; **Узлы сети** &nbsp;\>&nbsp; **Создать узел сети**.

Вам необходимо предоставить:

- **Имя хоста** Zabbix агента для мониторинга должно совпадать с именем, введенным в конфигурационный файл агента.
- Видимое имя Zabbix агента.
- Выберите группу или добавьте новую группу в поле «Группы».
- IP адрес Zabbix агента
- Порт сервиса Zabbix агента, порт по умолчанию _10050_

Заполните данные, как показано ниже:

 ![](https://383.su/uploads/default/original/2X/a/af25fc9740b537f957326f2bab19f193fa2d44ff.png)

Не забудьте добавить шаблоны мониторинга в зависимости от того, что вы хотите отслеживать на агенте: Затем нажмите **кнопку «Добавить** », чтобы добавить агента. После добавления агент будет доступен, как показано ниже:

 ![](https://383.su/uploads/default/original/2X/9/9c13b0420925388ac6dbfd10f887885f63ec26cc.png)

После добавления перейдите в **раздел Мониторинг**  **узлов \> и** выберите нужный узел сети для мониторинга. Затем выберите графики для просмотра данных.

 ![](https://383.su/uploads/default/original/2X/4/40729ea1139087b0fd5f58aa3de75f212b698acd.jpeg)

На этом мы заканчиваем это руководство о том, как запустить Zabbix Server 6.0 LTS в Docker Containers. Мы также рассмотрели, как Zabbix агенты могут быть добавлены на сервер. Я надеюсь, что это существенно.
