Продукты Р7
Корпоративный сервер 2024
Корпоративный сервер 2024
Сервер документов
Сервер документов
Редакторы документов
Редакторы документов
Корпоративный сервер 2019
Корпоративный сервер 2019
Графика
Графика
ВКС и мессенджер
ВКС и мессенджер
Мобильные редакторы
Мобильные редакторы
Почтовый сервер
Почтовый сервер
Органайзер
Органайзер
Сервер лицензирования
Сервер лицензирования
Файл-Экспресс
Файл-Экспресс
Аналитика
Аналитика
Дополнительно
Часто задаваемые вопросы
Разработчикам
Интеграции
Новые возможности

Реиндекс Монитор: инструкция по установке и работе плагина на Корпоративный сервер 2024 (Linux)

Обновлено: 10.07.26

Инструкция актуальна для версии продукта: 2025.3.12.15877

Скачать плагин

Важно

Скачать плагин можно по ссылке ↗

MD5: D6F0435ABFEB1B9A9401C3C1758A1015

1. Список необходимых пакетов (для ВМ без внешних репозиториев и без доступа в интернет)

1.1. Что должно быть установлено (пакеты/команды)

На сервере Корпоративный сервер 2024 (где админка + nginx).

Обязательно:

  • python3 + python3-venv + python3-pip (скрипт пытается ставить системные пакеты);
  • aiohttp: критично для backend (import aiohttp).
Уточнение

В офлайне самый простой вариант — именно системный пакет python3-aiohttp, чтобы не зависеть от pip-скачивания.
Дополнительно (обычно уже есть в системе, но важно):

  • ss (из iproute2) или lsof — скрипт проверяет занятость порта через них;
  • Стандартные утилиты: bash, grep, sed, perl, cp, mkdir и т.п. (скрипт активно патчит файлы).

Для RabbitMQ.

Обязательно:

  • rabbitmq_management;
  • rabbitmq_shovel.
  • rabbitmq_shovel_management
    Скрипт пытается включить их локально через rabbitmq-plugins enable —offline …

2. Назначение скрипта

Скрипт r7-reindex-monitor-install.sh делает установку/обновление и (при необходимости) удаление:

  1. Разворачивает backend в /opt/r7-reindex-monitor и лог в /var/log/r7-reindex-monitor.log
  2. Создаёт systemd-сервис r7-reindex-monitor + logrotate
  3. Копирует JS в /var/www/r7-office/admin/assets/
  4. Патчит nginx-конфиг (добавляет location /reindex-monitor/ с проксированием и websocket-заголовками).
  5. Патчит index.html админки, чтобы подключить:
    • /assets/inject-manager.js
    • /assets/inject-reindex-tab.js
    • /assets/inject-reindex-card.js

Также есть режим деинсталляции (с опцией удалять/не удалять inject-manager.js).

3. Подготовка перед запуском

3.1. Подготовить файлы рядом со скриптом

В одной папке должны лежать:

  • app.py;
  • inject-reindex-card.js
  • inject-reindex-tab.js
  • inject-manager.js ( лежит в архиве, нужен если его ещё нет в assets) — скрипт копирует его только если отсутствует.

3.2. Для офлайн установки подготовка пакетов

1. На ВМ заранее скачайте .deb/.rpm пакеты:

  • python3, python3-venv, python3-pip, python3-aiohttp
  • iproute2 (для ss) и/или lsof

2. Установите:

  • Debian/Ubuntu:
    dpkg -i *.deb

    (Важно скачать все зависимости)

  • RHEL-like:
    rpm -Uvh *.rpm

3.3. Проверить, что админка стоит в ожидаемых путях

Скрипт рассчитывает на:

  • assets: /var/www/r7-office/admin/assets
  • index: /var/www/r7-office/admin/index.html
  • nginx conf: /etc/nginx/sites-available/admin

3.4. Если RabbitMQ не на localhost — заранее отредактировать app.py

По умолчанию backend ходит в RabbitMQ management на localhost:15672 и guest/guest.

Если у вас иначе, правите RABBIT_HOST / RABBIT_USER / RABBIT_PASSWORD и потом перезапускаете сервис.

4. Запуск скрипта

4.1. Запуск установки

unzip plugin-reindex.zip -d plugin-reindex && cd plugin-reindex
chmod +x r7-reindex-monitor-install.sh
sudo ./r7-reindex-monitor-install.sh

Скрипт требует root.

Для установки выбираем Y:

Вводим свой порт или оставляем по умолчанию (скрипт проверит свободен ли порт и если он занят, то предложит выбрать другой):

Далее происходит установки и вывод конечного результата:

При повторном запуске скрипта он предложит:

  1. Переустановить / обновить (если вносились изменения после установки);
  2. Удалить (удаляет в обратном порядке, но предложит оставить inject-manager.js, на случай установки других плагинов);
  3. Выход (выйти из скрипта).

4.2. Проверка после установки

systemctl status r7-reindex-monitor --no-pager # для проверки статуса работы сервиса
journalctl -u r7-reindex-monitor -n 200 --no-pager # для проверки лога работы сервиса
nginx -t # для проверки конфигурации nginx
systemctl reload nginx # для мягкого рестарта сервиса nginx

4.3. Удаление

sudo ./r7-reindex-monitor-install.sh # для запуска переустановки/обновления/удаления
sudo ./r7-reindex-monitor-install.sh --uninstall # для запуска удаления без inject-manager
sudo ./r7-reindex-monitor-install.sh --uninstall --purge-manager # если хотите убрать и inject-manager

5. Порядок работы скрипта и последовательность шагов

Последовательность работы установки:

  1. Проверка порта (занят/свободен);
  2. Определение пакетного менеджера и установка пакетов;
  3. Установка aiohttp;
  4. Включение rabbit-плагинов (если команда доступна на этой машине);
  5. Проверка наличия файлов рядом со скриптом;
  6. Копирование backend в /opt/r7-reindex-monitor
  7. Создание systemd-сервиса + logrotate;
  8. Копирование JS в assets (inject-manager не перезаписывается, если уже есть);
  9. Патч nginx location /reindex-monitor/ (с websocket-заголовками);
  10. Патч index.html: добавление <script src="/assets/..."> и контроль порядка (manager должен идти до tab);
  11. systemctl daemon-reload, enable/restart сервиса.

6. Как работает плагин (что с чем взаимодействует)

6.1. Общая архитектура

Компоненты:

1. Frontend-инъекции в админке R7:

  • inject-manager.js — «движок» вкладок/панелей (общий менеджер);
  • inject-reindex-tab.js — вкладка «Реиндекс» (основной UI);
  • inject-reindex-card.js — карточка «RabbitMQ» на странице «Обзор».

2. Backend-сервис (app.py, aiohttp) — отдаёт API и WS, ходит в RabbitMQ management API, частично проксирует reindex-команды в портал.

Снаружи пользователь всегда работает через админку, а админка ходит:

  • В /reindex-monitor/api/... (HTTP)
  • В /reindex-monitor/ws (WebSocket)
    Оба пути nginx проксирует на локальный backend

6.2. Backend (app.py) — что именно делает и как

6.2.1. Конфиг и очереди

  • Порт backend: аргумент командной строки, иначе 40820;
  • RabbitMQ management API: http://:15672/api, креды guest/guest по умолчанию;
  • Интервал опроса очередей: каждые 2 секунды;
  • Список отслеживаемых очередей (в т.ч. error-очереди);
  • Режимы реиндекса: 1-документы / 2-контакты / 3-почта;
  • Для прогресса режимов используются очереди (например документы = Reindex.Documents + Indexing.Document).

6.2.2. Опрос RabbitMQ и расчёт статистики

Backend читает статистику очередей через RabbitMQ Management HTTP API:

  • URL шаблон: /api/queues/%2F/
  • Из ответа берёт:
    • messages_ready (ready)
    • messages_unacknowledged (unacked)
    • messages (total)

Если ответ не 200 — кладёт error: «HTTP <код>».

Если исключение — error: «connection error».

6.2.3. Push-обновления в браузер (WebSocket)

Backend держит список websocket-клиентов и рассылает им JSON через broadcast().

Фоновая задача stats_poller:

  • Раз в UPDATE_INTERVAL обновляет state.stats = await get_queue_stats()
  • Рассылает сообщение {type:"stats", queues:..., timestamp:...}

6.2.4. HTTP API backend (ключевые)

  • GET /api/stats — вернуть текущие stats по очередям
  • GET /api/reindex/progress?mode=N — прогресс по режиму на основе текущих state.stats
  • POST /api/errors/retry — «вернуть из ошибок»: создаёт shovel
  • POST /api/errors/clear — очистить error-очередь через purge
  • POST /api/rabbitmq/restart — systemctl restart rabbitmq-server

6.2.5. Очистка очереди (stop) и «возврат из ошибок»

Очистка очереди делается DELETE-запросом:

DELETE /api/queues/%2F//contents

«Возврат из ошибок» делается созданием shovel через:

PUT /api/parameters/shovel/%2F/

С параметрами:

  • src-queue = error очередь;
  • dest-queue = целевая;
  • delete-after: «queue-length»

И src/dest-uri указывают localhost (shovel исполняется на стороне RabbitMQ).

6.3. Frontend: вкладка «Реиндекс» (inject-reindex-tab.js)

6.3.1. Куда ходит

Все запросы идут через nginx-прокси по префиксу:

  • API_PREFIX = ‘/reindex-monitor/api’

Плюс websocket:

  • WS_PATH = ‘/reindex-monitor/ws’

UI делает:

  • Регулярный polling раз в 3000мс;
  • Параллельно пытается держать WS для быстрых обновлений (там же ws, wsActive, reconnect).

6.3.2. Что отображает

  • Очереди в фиксированном порядке QUEUE_ORDER;
  • Названия очередей на русском языке QUEUE_TITLES;
  • Три режима реиндекса с описаниями;
  • Для расчёта прогресса режимов используется соответствие очередей и внутренний PROGRESS_STATE для скорости/дельт.

6.3.3. Какие действия делает (кнопки)

По URL видно, что вкладка умеет:

  • Старт/стоп реиндекса:
    • ${API_PREFIX}/reindex/start
    • ${API_PREFIX}/reindex/stop
  • Прогресс:
    • ${API_PREFIX}/reindex/progress
  • Работа с ошибками:
    • ${API_PREFIX}/errors/retry
    • ${API_PREFIX}/errors/clear
  • restart RabbitMQ:
    • ${API_PREFIX}/rabbitmq/restart

6.4. Frontend: карточка на «Обзоре» (inject-reindex-card.js)

  • Вставляется только на странице “Обзор” (проверка pathname);
  • Рендерит карточку “RabbitMQ” и показывает статусы/очереди из набора QUEUES;
  • Выделяет error-очереди (для подсветки);
  • Дальше карточка обновляется из backend stats (и/или WS — см. остальную часть файла, логика там построена вокруг актуальных queues).

6.5. Что именно меняется в системе (для эксплуатации/аудита)

Установка затрагивает:

  • /opt/r7-reindex-monitor/app.py
  • /etc/systemd/system/r7-reindex-monitor.service
  • /etc/logrotate.d/r7-reindex-monitor
  • /etc/nginx/sites-available/admin (+ блок location /reindex-monitor/);
  • /var/www/r7-office/admin/assets/* (JS-файлы);
  • /var/www/r7-office/admin/index.html (подключение <script>).

Скрипт делает резервные копии .bak.* для критичных файлов.

Была ли эта статья полезной?

Поделитесь пожалуйста своим мнением

      В статье есть ошибкиРекомендации не помоглиТекст трудно понятьСодержание статьи не соответствует заголовкуДругое