Table of Contents

Диагностика и устранение неполадок

Продукты: МоиОтчеты Корпоративный Сервер

Если при установке или запуске приложения возникли проблемы, данный раздел поможет вам в их устранении.

Миграции

Корпоративный сервер предусматривает автоматическое применение миграций при запуске приложения. Ручное управление миграциями, как правило, не предусмотрено для конечного пользователя.
Хотя сервер имеет встроенный механизм восстановления после сбоев, определённые проблемы могут быть вызваны внешними факторами — например, отключением питания или потерей соединения с базой данных.

Если во время выполнения миграций произойдёт разрыв соединения с базой данных, система активирует режим блокировки и предотвратит запуск бэкенда для защиты целостности базы данных. В таком случае потребуется ручное восстановление состояния миграций.

Важно: Рекомендуется всегда создавать резервную копию базы данных перед обновлением версии корпоративного сервера. Это позволит оперативно восстановить работоспособность системы в случае возникновения ошибок.

Если резервная копия отсутствует, можно воспользоваться инструментами разработчика. Следует учитывать, что использование этих инструментов может привести к потере данных, однако они позволяют восстановить целостность базы данных и обеспечить стабильную работу сервера.

Для ознакомления с инструментами разработчика перейдите в соответствующий раздел.

Инструменты разработчика

Стандартная поставка корпоративного сервера поддерживает развертывание с использованием docker-compose и Kubernetes. В данной документации рассматриваются только эти два способа развертывания.
Если у вас возникли сложности или требуется дополнительная помощь, вы можете обратиться в нашу службу технической поддержки.

Docker

Чтобы использовать инструменты разработчика, необходимо временно остановить работающий экземпляр бэкенда. Выполните следующие команды:

  1. Проверка состояния контейнеров

Получите список запущенных контейнеров:

docker-compose -f /путь/к/папке/docker-compose.yml ps

Обратите внимание: для выполнения всех команд необходим файл docker-compose.yml. Убедитесь, что текущая директория содержит этот файл, либо указывайте путь к нему с помощью параметра -f.

  1. Остановка контейнера бэкенда

Остановите нужный контейнер (например, fr-backend):

docker-compose -f /путь/к/папке/docker-compose.yml stop fr-backend
  1. Запуск контейнера с инструментами разработчика

Для работы с инструментами разработчика создайте новый контейнер и подключите его к той же сети, которая используется в docker-compose.yml.

Сначала проверьте доступные сети:

docker network ls

Затем выполните команду запуска контейнера. Не забудьте заменить debian-2026.2.13 на актуальный тег, который указан в вашем файле docker-compose.yml:

docker run -it --network corporate_fr-cs -v /путь/к/папке/appsettings.Production.json:/app/appsettings.Production.json fastreport-corporate-server-backend:debian-2026.2.13 /bin/bash

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

dotnet FastReport.Cloud.Backend.dll -- --corporate-dev-tools

Следуйте инструкциям, отображаемым в терминале. После завершения работы выйдите из контейнера:

exit
  1. Перезапуск основного сервиса

После использования инструментов разработчика перезапустите бэкенд:

docker-compose -f /путь/к/папке/docker-compose.yml start fr-backend

Kubernetes

Для использования инструментов разработчика необходимо временно остановить работающий экземпляр бэкенд-сервиса. Выполните следующие шаги:

  1. Проверка состояния deployment

Получите список запущенных deployment-объектов. Обратите внимание на количество активных реплик — это значение потребуется на следующем этапе:

kubectl get deployments --namespace fr-corporate

Важно: укажите корректное пространство имён. В данном примере используется fr-corporate.

  1. Остановка подов путём масштабирования до нуля реплик

Установите количество реплик равным нулю, чтобы остановить соответствующие поды:

kubectl scale --replicas=0 deployment/fr-backend --namespace fr-corporate
  1. Запуск контейнера с инструментами разработчика

Создайте файл my-debug-pod.yml со следующим содержимым:

apiVersion: v1
kind: Pod
metadata:
  name: my-debug-pod
  namespace: fr-corporate
spec:
  containers:
    - name: app
      image: fastreport-corporate-server-backend:debian-2026.2.13
      command: ["/bin/bash"] 
      args: ["-c", "while true; do sleep 10; done"]
      tty: true
      volumeMounts:
        - mountPath: /app/appsettings.Production.json
          name: config-volume
          subPath: appsettings.Production.json
  volumes:
    - name: config-volume
      configMap:
        name: fast-report-config
        items:
          - key: appsettings.Production.json
            path: appsettings.Production.json
        defaultMode: 420

Примените манифест:

kubectl apply -f my-debug-pod.yml --namespace fr-corporate
  1. Подключение к поду

Подключитесь к созданному поду:

kubectl exec -it my-debug-pod --namespace fr-corporate -- /bin/bash

Запустите утилиту разработчика:

dotnet FastReport.Cloud.Backend.dll -- --corporate-dev-tools

Следуйте инструкциям в терминале. По завершении работы выйдите из контейнера:

exit
  1. Удаление отладочного пода

После выполнения всех операций удалите временный под:

kubectl delete pod my-debug-pod --namespace fr-corporate
  1. Восстановление количества реплик

Верните deployment к исходному количеству реплик (например, 1):

kubectl scale --replicas=1 deployment/fr-backend --namespace fr-corporate