Суббота, 18.05.2024, 13:33
Приветствую Вас Гость | RSS
UBUNTOLOG
Главная | Каталог статей | Регистрация | Вход
Форма входа

Меню сайта
Категории раздела
Server [44]
WEB [14]
Все что связанно с web технологиями
Desktop [11]
Все что связанно с рабочей станцией
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Главная » Статьи » WEB

    ZABBIX IN DOCKER-COMPOSE

    ZABBIX IN DOCKER-COMPOSE


    Поднимаем zabbix на docker контейнерах
      zabbix-postgres:
      База для заббикса
      
      zabbix-postgres-backups:
      Бэкап БД
      
    traefik-certificates

    Бесплатные сертификаты let's encript с реверспрокси сервером

    Создадим папки
    /zabbix-docker/ - для docker
    /src/ - для Базы postgres

    mkdir -R /opt/zabbix-docker/src/
    cd /opt/zabix-docker

    Создадим файд docker-compose.yml

    vim docker-compose.yml

    version: '2.3'

    volumes:
      zabbix-postgres:
      zabbix-postgres-backups:
      traefik-certificates:

    services:
      postgres:
        # Image tag (replace with yours)
        image: postgres:12.5
        volumes:
          - ./src/zabbix-postgres:/var/lib/postgresql/data
        environment:
          # Database name (replace with yours)
          POSTGRES_DB: zabbixdb
          # Database user (replace with yours)
          POSTGRES_USER: zabbixdbuser
          # Database password (replace with yours)
          POSTGRES_PASSWORD: YourStrongPassword
        restart: unless-stopped

      zabbix:
        # Image tag (replace with yours)
        image: zabbix/zabbix-server-pgsql:ubuntu-5.2.4
        environment:
          DB_SERVER_HOST: postgres
          DB_SERVER_PORT: 5432
          # Database name (replace with yours)
          POSTGRES_DB: zabbixdb
          # Database user (replace with yours)
          POSTGRES_USER: zabbixdbuser
          # Database password (replace with yours)
          POSTGRES_PASSWORD: YourStrongPassword
          ZBX_VALUECACHESIZE: 64M
          ZBX_CACHESIZE: 128M
          ZBX_TRENDCACHESIZE: 128M
        ports:
          - "10051:10051"
        restart: unless-stopped
        depends_on:
          - postgres

      web:
        # Image tag (replace with yours)
        image: zabbix/zabbix-web-apache-pgsql:ubuntu-5.2.4
        environment:
          DB_SERVER_HOST: postgres
          DB_SERVER_PORT: 5432
          # Database name (replace with yours)
          POSTGRES_DB: zabbixdb
          # Database user (replace with yours)
          POSTGRES_USER: zabbixdbuser
          # Database password (replace with yours)
          POSTGRES_PASSWORD: YourStrongPassword
          ZBX_SERVER_HOST: zabbix
          ZBX_SERVER_PORT: 10051
          # Timezone (replace with yours) https://www.php.net/manual/en/timezones.php
          PHP_TZ: Europe/Kiev
        healthcheck:
          test: ["CMD", "curl", "-f", "http://localhost:8080/"]
          interval: 10s
          timeout: 5s
          retries: 3
          start_period: 90s
        labels:
          - "traefik.enable=true"
          # Zabbix URL (replace with yours)
          - "traefik.http.routers.zabbix.rule=Host(`your.domain.ua`)"
          - "traefik.http.routers.zabbix.service=zabbix"
          - "traefik.http.routers.zabbix.tls.certresolver=letsencrypt"
          - "traefik.http.routers.zabbix.entrypoints=websecure"
          - "traefik.http.services.zabbix.loadbalancer.passhostheader=true"
          - "traefik.http.services.zabbix.loadbalancer.server.port=8080"
        restart: unless-stopped
        depends_on:
          - postgres
          - zabbix

      agent:
        # Image tag (replace with yours)
        image: zabbix/zabbix-agent:ubuntu-5.2.4
        environment:
          # Zabbix Hostname (replace with yours)
          # Set as DNS name on Zabbix server host configuration screen to make checks of Zabbix server itself
          ZBX_HOSTNAME: your.domain.ua
          ZBX_SERVER_HOST: 0.0.0.0/0
        ports:
          - "10050:10050"
        restart: unless-stopped
        depends_on:
          - postgres
          - zabbix

      traefik:
        # Image tag (replace with yours)
        image: traefik:2.4
        command:
          - "--global.checkNewVersion=true"
          - "--global.sendAnonymousUsage=false"
          - "--api=true"
          - "--log.level=WARN"
          - "--entryPoints.web.address=:80"
          - "--entryPoints.websecure.address=:443"
          - "--providers.docker=true"
          - "--providers.docker.endpoint=unix:///var/run/docker.sock"
          - "--providers.docker.exposedByDefault=false"
          - "--certificatesresolvers.letsencrypt.acme.tlschallenge=true"
          # Email for Let's Encrypt (replace with yours)
          - "--certificatesresolvers.letsencrypt.acme.email=bezbomgat@gmail.com"
          - "--certificatesresolvers.letsencrypt.acme.storage=/etc/traefik/acme/acme.json"
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock
          - traefik-certificates:/etc/traefik/acme
        ports:
          - "80:80"
          - "443:443"
        labels:
          - "traefik.enable=true"
          # Traefik URL (replace with yours)
          - "traefik.http.routers.default.rule=Host(`traefik.your.domain.ua`)"
          - "traefik.http.routers.default.service=api@internal"
          - "traefik.http.routers.default.tls.certresolver=letsencrypt"
          - "traefik.http.routers.default.entrypoints=websecure"
          - "traefik.http.services.default.loadbalancer.passhostheader=true"
          - "traefik.http.services.default.loadbalancer.server.port=8080"
          - "traefik.http.routers.default.middlewares=authtraefik"
          # Basic Authentication for Traefik Dashboard
          # Username: traefikadmin (replace with yours)
          # Passwords must be encoded using MD5, SHA1, or BCrypt
          - "traefik.http.middlewares.authtraefik.basicauth.users=traefikadmin:DaJtGnncrsuc2C/+WolAQ25H0Jw="
          - "traefik.http.routers.http-catchall.rule=hostregexp(`{host:.+}`)"
          - "traefik.http.routers.http-catchall.entrypoints=web"
          - "traefik.http.routers.http-catchall.middlewares=redirect-to-https"
          - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
        restart: unless-stopped

      backups:
        # Image tag (replace with yours)
        image: postgres:12.5
        # Database backups prune interval (replace with yours). Default is 7 days.
        # find /srv/zabbix-postgres/backups -type f -mtime +7 | xargs rm -f

        # Zabbix backups interval (replace with yours). Default is 1 day.
        # sleep 24h

        # Run zabbix-restore-database.sh to restore database if needed.
        command: sh -c 'sleep 30m
                 && while true; do
                 PGPASSWORD="$$(echo $$POSTGRES_PASSWORD)"
                 pg_dump
                 -h postgres
                 -p 5432
                 -d zabbixdb
                 -U zabbixdbuser | gzip > /srv/zabbix-postgres/backups/zabbix-postgres-backup-$$(date "+%Y-%m-%d_%H-%M").gz
                 && find /srv/zabbix-postgres/backups -type f -mtime +7 | xargs rm -f
                 sleep 24h; done'
        volumes:
          # Database backups location
          - zabbix-postgres-backups:/srv/zabbix-postgres/backups
        environment:
          # Database password (replace with yours)
          POSTGRES_PASSWORD: YourStrongPassword
        restart: unless-stopped
        depends_on:
          - postgres
          - zabbix
          

    Запускаем

    docker-compose -f docker-compose.yml -p zabbix up -d

    Docker скачает и поднимет все контейнеры

    Заходим по доменному имени

    Имя и пароль по умолчанию Admin zabbix

    Сразу их меняем
    User setting - Change password

    Добавляем сервер в хост zabbix

    Configuration - Hosts - Zabbix server - Interface

    ставим DNS и вписуем доменное имя Update через время ждем коннекта


    AGENT-ZABBIX

    Добавляем репозиторий

    rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm

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

    yum install zabbix-agent


    Настройка агента

    Генерируем PSK

    sudo sh -c "openssl rand -hex 32 > /etc/zabbix/zabbix_agentd.psk"


    Правим конфиг агента

    vim /etc/zabbix/zabbix_agentd.conf

    LogFile=/var/log/zabbix/zabbix_agentd.log
    LogFileSize=1
    EnableRemoteCommands=1
    ServerActive=your.domain.ua
    Server=your.domain.ua
    Hostname=host.name.agent
    TLSConnect=psk
    TLSAccept=psk
    TLSPSKIdentity=PSK 001
    TLSPSKFile=/etc/zabbix/zabbix_agentd.psk

    Копируем ключь

    cat /etc/zabbix/zabbix_agentd.psk

    # Перезапуск агента Zabbix

    service zabbix-agent restart

    # Автозапуск службы  zabbix-agent при запуске системы

    systemctl enable zabbix-agent

    systemctl status zabbix-agent 


    Добавляем правила Firewall

    Добавляем зону для мониторинга с определенного ip сервера

    firewall-cmd --new-zone=monitoring --permanent
    firewall-cmd --reload
    firewall-cmd --get-zones
    firewall-cmd --zone=monitoring --add-source=10.10.10.5/20 --permanent
    firewall-cmd --zone=monitoring --add-port={8887/tcp,10050/tcp,10051/tcp}  --permanent
    firewall-cmd --reload
    firewall-cmd --zone=monitoring --list-all


    Подготовка nginx к мониторингу


    Создаем конфиг vim /etc/nginx/bx/conf/zabbix_nginx.conf

    server {
        listen 127.0.0.1:8885;
        server_name localhost;
        server_name_in_redirect off;
        keepalive_timeout    0;
        allow    127.0.0.1;
        allow    ::1;
        deny    all;
        access_log    off;

            location = /nginx-status {
        stub_status    on;
        allow 127.0.0.1;
        deny all;
            }
    }


    Провряем

    nginx -t
    nginx -s reload

    curl http://localhost:8885/nginx-status

    Active connections: 89 
    server accepts handled requests
     1374661 1374661 9511381 
    Reading: 0 Writing: 1 Waiting: 87

    zabbix_agentd -t web.page.get[localhost,nginx-status,8885]

    eb.page.get[localhost,nginx-status,80]       [t|HTTP/1.1 200 OK
    Server: nginx/1.16.1
    Date: Mon, 15 Mar 2021 07:48:43 GMT
    Content-Type: text/plain
    Content-Length: 106
    Connection: close
    X-Content-Type-Options: nosniff
    X-Frame-Options: SAMEORIGIN

    Active connections: 1 
    server accepts handled requests
     3576 3576 4206 
    Reading: 0 Writing: 1 Waiting: 0 ]


    На сервере zabbix


    Configuration - Hosts - New
    Hostname - your hostnsme zabbix agent
    Groups - Linux servers
    Interface - your hostnsme zabbix agent
    Templates - Nginx by Zabbix agent - add
     
     Опять заходим на наш хост - Templates - кликаем на шаблоне  Apache by Zabbix agent
    Заходим в Tags и добавляем тэги

    {$S_HOST} - localhost название виртуального хоста
    {$S_PATH} - nginx-status?auto путь к странице со статистикой
    {$S_PORT} - 8885 порт сервера nginx, на котором работает статистика


    Подготовка apache к мониторингу для сайта на bitrixvm

    добавьте в конфиг apache примерно следующие настройки.
    Создадим кастомный конфиг

    vim /etc/httpd/bx/custom/zabbix-agent.conf

    <Location "/server-status">
        SetHandler server-status
        Require host localhost
    </Location>

    Bitrixenv автоматически все настроит, если вы через консольное меню включите Monitoring in pool. Запустится роль ansible, которая настроит в том числе apache, установит и запустит nagios и munin. Если они вам не нужны, то просто добавьте приведенный выше кусок конфига в 

    vim /etc/httpd/bx/custom/zabbix-agent.conf

    Listen localhost:8887
    <IfModule mod_status.c>
        ExtendedStatus On
    </IfModule>
    <VirtualHost localhost:8887>
        <Location /server-status>
            SetHandler server-status
            Require ip 127.0.0.1
        require ip ::1
        </Location>
    </VirtualHost>


    После этого проверьте настройки apache и перезапустите его.

    apachectl -t

    apachectl restart


    Проверяем состояние apache

    curl http://localhost:8887/server-status?auto

    Total Accesses: 3
    Total kBytes: 1
    Uptime: 95
    ReqPerSec: .0315789
    BytesPerSec: 10.7789
    BytesPerReq: 341.333
    BusyWorkers: 1
    IdleWorkers: 109
    Scoreboard: __W____________________


    И на всякий случай проверьте, что zabbix-agent может получать эту же информацию.

    zabbix_agentd -t web.page.get[localhost,server-status?auto,8887]

    web.page.get[localhost,server-status?auto,8887] [t|HTTP/1.1 200 OK
    Date: Tue, 09 Mar 2021 09:42:44 GMT
    Server: Apache/2.4.6 (CentOS)
    Content-Length: 261
    Connection: close
    Content-Type: text/plain; charset=ISO-8859-1

    Total Accesses: 5
    Total kBytes: 2
    Uptime: 215
    ReqPerSec: .0232558
    BytesPerSec: 9.52558
    BytesPerReq: 409.6
    BusyWorkers: 1
    IdleWorkers: 109
    Scoreboard: _____W___________________________


    На сервере zabbix


    Configuration - Hosts - New
    Hostname - your hostnsme zabbix agent
    Groups - Linux servers
    Interface - your hostnsme zabbix agent
    Templates - Apache by Zabbix agent - add
     
     Опять заходим на наш хост - Templates - кликаем на шаблоне  Apache by Zabbix agent
    Заходим в Tags и добавляем тэги

    {$S_HOST} - localhost название виртуального хоста
    {$S_PATH} - server-status?auto путь к странице со статистикой
    {$S_PORT} - 8887 порт сервера apache, на котором работает статистика

    Подготовка mysql к мониторингу


    Добавляем данные для мониторинга mysql

    vim /etc/zabbix/zabbix_agentd.d/template_db_mysql.conf

    UserParameter=mysql.ping[*], mysqladmin -h"$1" -P"$2" ping
    UserParameter=mysql.get_status_variables[*], mysql -h"$1" -P"$2" -sNX -e "show global status"
    UserParameter=mysql.version[*], mysqladmin -s -h"$1" -P"$2" version
    UserParameter=mysql.db.discovery[*], mysql -h"$1" -P"$2" -sN -e "show databases"
    UserParameter=mysql.dbsize[*], mysql -h"$1" -P"$2" -sN -e "SELECT COALESCE(SUM(DATA_LENGTH + INDEX_LENGTH),0) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='$3'"
    UserParameter=mysql.replication.discovery[*], mysql -h"$1" -P"$2" -sNX -e "show slave status"
    UserParameter=mysql.slave_status[*], mysql -h"$1" -P"$2" -sNX -e "show slave status"


    Перезапускаем агента

    systemctl restart zabbix-agent

    Делаем базу и пользователя для мониторинга в mysql

    mysql -uroot -p
    CREATE USER 'zbx_monitor'@'%' IDENTIFIED BY 'TTRy1bRRgLIB';
    GRANT USAGE,REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO 'zbx_monitor'@'%';
    FLUSH PRIVILEGES;
    quit

    Смотрим домашнюю директорию агента

    cat /etc/passwd | grep zabbix
    zabbix:x:990:986:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin

    Если нет, то создаем

    mkdir /var/lib/zabbix

    И ложим в директорию фаил с данными для подключению к БД

    vim /var/lib/zabbix/.my.cnf

    [client]
    user=zbx_monitor
    password=TTRy1bRRgLIB
    host=localhost
    [mysqladmin]
    user=zbx_monitor
    password=TTRy1bRRgLIB
    host=localhost

    Даем права к своей папке zabbix 

    chown -R zabbix. /var/lib/zabbix
    chmod 400 /var/lib/zabbix/.my.cnf


    На сервере zabbix

    Качаем шаблон к себе на машину

    wget https://git.zabbix.com/projects/ZBX/repos/zabbix/raw/templates/classic/template_db_mysql.xml?at=da494b5b6eb3a5c3018a5385ca12663a7025625a

    Configuraion - Temolates - import

    Configuration - Hosts - New
    Hostname - your hostnsme zabbix agent
    Groups - Linux servers
    Interface - your hostnsme zabbix agent
    Templates - MySQL by Zabbix agent - add
     



    Источник: https://serveradmin.ru/monitoring-web-servera-nginx-i-php-fpm-v-zabbix/#_php-fpm, https://www.youtube.com/watch?v=PT_uq
    Категория: WEB | Добавил: Vyacheslav (16.03.2021)
    Просмотров: 724 | Комментарии: 1 | Рейтинг: 0.0/0
    Всего комментариев: 0
    Имя *:
    Email *:
    Код *:
    Copyright VR © 2024
    Сделать бесплатный сайт с uCoz