среда, 26 августа 2026 г.

Установка zabbix в контейнер Docker. Мониторинг хоста через agent

Создаем директорию для контейнера zabbix
# mkdir /mnt/data/docker_projects/zabbix

Создаем конфигурацию PostgreSQL
# nano /mnt/data/docker_projects/zabbix/postgresql.conf
listen_addresses = '*'
port = 5432
max_connections = 100
shared_buffers = 1GB
effective_cache_size = 3GB
maintenance_work_mem = 256MB
checkpoint_completion_target = 0.9
wal_buffers = 16MB
default_statistics_target = 500
random_page_cost = 1.1
effective_io_concurrency = 200
work_mem = 64MB
min_wal_size = 1GB
max_wal_size = 4GB


В интерфейсе portainer переходим в окружение local.
Выбираем пункты меню Stacks --> + Add Stack.
Прописываем имя в поле Name - zabbix/
Оставляем выбор метода задания параметров Web editor.
В поле редактора конфига вносим конфигурацию:
x-logging: &default-logging
  driver: json-file
  options:
    max-size: "50m"
    max-file: "3"
services:
  postgresql:
    image: postgres:16-alpine
    container_name: zabbix-postgres
    restart: unless-stopped
    environment:
      POSTGRES_USER: zabbix
      POSTGRES_PASSWORD: SecurePassword123
      POSTGRES_DB: zabbix
    volumes:
      - /mnt/data/docker_projects/zabbix/data_pgsql:/var/lib/postgresql/data:z
      - /mnt/data/docker_projects/zabbix/postgresql.conf:/etc/postgresql/postgresql.conf
    networks:
      - zabbix-net
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U zabbix -d zabbix"]
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 30s
    cpus: 1.5
    mem_limit: 2g
    logging: *default-logging
  zabbix-server:
    image: zabbix/zabbix-server-pgsql:ubuntu-7.0-latest
    container_name: zabbix-server
    restart: unless-stopped
    environment:
      TZ: Europe/Samara
      DB_SERVER_HOST: postgresql
      POSTGRES_USER: zabbix
      POSTGRES_PASSWORD: SecurePassword123
      POSTGRES_DB: zabbix
      ZBX_CACHESIZE: 512M
      ZBX_HISTORYCACHESIZE: 128M
      ZBX_VALUECACHESIZE: 256M
      ZBX_STARTPOLLERS: 20
      ZBX_STARTTRAPPERS: 10
      ZBX_STARTDISCOVERERS: 5
    volumes:
      - /mnt/data/docker_projects/zabbix/data_zabbix_server:/var/lib/zabbix:z
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "10051:10051"
    depends_on:
      postgresql:
        condition: service_healthy
    networks:
      - zabbix-net
    cpus: 1.5
    mem_limit: 2g
    logging: *default-logging
 
  zabbix-web:
    image: zabbix/zabbix-web-apache-pgsql:ubuntu-7.0-latest
    container_name: zabbix-web
    restart: unless-stopped
    environment:
      PHP_TZ: Europe/Samara
      ZBX_SERVER_HOST: zabbix-server
      DB_SERVER_HOST: postgresql
      POSTGRES_USER: zabbix
      POSTGRES_PASSWORD: SecurePassword123
      POSTGRES_DB: zabbix
    ports:
      - "8080:8080"
    depends_on:
      zabbix-server:
        condition: service_started
      postgresql:
        condition: service_healthy
    networks:
      - zabbix-net
    cpus: 0.5
    mem_limit: 512m
    logging: *default-logging
networks:
  zabbix-net:
    driver: bridge


Открываем порт 8080 для zabbix:
# firewall-cmd --permanent --add-port=8080/tcp && firewall-cmd --reload

Открываем WEB-интерфейс http://IP:8080/
Логин / пароль по умолчанию: Admin / zabbix
Сразу меняем пароль в разделе User settings --> Profile --> Change password // новый_пароль
Перезаходим в Zabbix Admin / новый_пароль

Zabbix агент на хостовой машине:
Добавить репозиторий Zabbix на хостовую машину и настроить агента zabbix
# rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rocky/9/x86_64/zabbix-release-latest.el9.noarch.rpm
# dnf clean all
# dnf install zabbix-agent -y

Настроить конфигурацию агента, что бы он в ативном режиме отправлял данные на сервер.
# nano /etc/zabbix_agentd.conf
Главные директивы:
  ServerActive=127.0.0.1:10051
  Hostname=rossyp
  RefreshActiveChecks=60

Заводим агента Zabbix в работу:
# systemctl enable zabbix-agent
# systemctl start zabbix-agent
# systemctl status zabbix-agent


В Интерфейсе Zabbix необходимо корректно прописать host, на который будут поступать данные от агента.
В активном режиме (Active Mode) агент сам инициирует соединение. Вот так прописывается хост:
Data collection → Hosts → Create host.
Host name: точное значение параметра Hostname из конфига агента rossyp.
Templates: шаблон Linux by Zabbix agent active.
Host groups: Linux servers.

Комментариев нет:

Отправить комментарий