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

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

Обновлено: 20.12.25

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

Важно

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

MD5: 75DCF2A0A5BE569CF91B762209D68D6C

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/restartsystemctl 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.* для критичных файлов