Перейти к основному содержимому

Импорт: RocketChat → Time

Выгрузка данных из RocketChat в формат Time

Для выгрузки понадобится time-etl-rocketchat — утилита для выгрузки и конвертации данных из RocketChat в формат Time.

Установка утилиты time-etl-rocketchat

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

  1. Установить Node.js Version 6.11.0 LTS или выше.

  2. Скачать исходники из https://data.tinkoff.ru.

    Доступ для скачивания следует запросить у сотрудников Т-Банка. Перейдя по ссылке, нужно зайти в директорию time-etl-rocketchat и использовать последнюю версию.

  3. Установить JS зависимости:

    cd time-etl-rocketchat && npm install
  4. Сконфигурировать файл context/config.js

    1. Скопировать пример конфигурации

      cp context/config.example.rocketchat.js context/config.js
    2. Установить source.uri — это DSN базы данных MongoDB, которая используется в текущей инсталляции RocketChat.

    3. Установить define.ldap_auth_service — возможные значения: 'ldap', 'gitlab' и может отсутствовать. Если в RocketChat использовать тип авторизации по логину и паролю, то стоит этот параметр оставить пустым.

    4. Установить source.uploadsPath для загруженных файлов (аватарки пользователей и вложения). Опционально.

    5. Установить source.customEmojiPath для кастомных эмоций. Опционально.

    6. Установить target.filesPath для вывода импортируемых данных. Опционально.

    7. Дополнительные настройки конфигурации. Параметры настройки define.team можно будет изменить в Системной консоли Time.

      • define.posts.s3_file_download — возможность переиспользования s3 бакета из RocketChat в Time, когда файлы по сообщениям не будут скачиваться. Нужно в Time прописать такие же настройки для s3 как в RocketChat.
      • define.posts.fromTs — выгружаться будут сообщения от этой даты, в этом формате
      • define.posts.maxCount — выгрузить определенное количество постов
      • define.posts.batch_size — количество параллельных обработок постов, можно уменьшить при высокой нагрузке по CPU при работе скрипта.
      • define.posts.mongodb_batch_size — количество полученных сообщений из mongoDB за один раз, можно уменьшить при высоком потреблении памяти в mongoDB.
      • define.posts.count_total — определяет нужно ли подсчитывать общее количество сообщений в базе и выводе информации в консоль.
      • define.directChannels.batch_size — количество параллельных обработок личных переписок, можно уменьшить при высокой нагрузке по CPU при работе скрипта.
      • define.team.name — название команды в Time после импорта.
      • define.team.display_name — название команды Time, которые будут видеть пользователи в UI, после импорта. define.team.description - описание команды в Time
      • define.team.type — тип команды в Time, возможные значения: I (доступ только по инвайту), O (доступ возможен по регистрации). Рекомендуемое значение I
      • define.team.allow_open_invite — возможность любому участнику присоединиться к команде в Time.

Запуск миграции

Запустить скрипт миграции:

npm run start:rocketchat

Загрузка данных

Нужно заархивировать полученный файл, а также директорию с вложениями и аватарками, указанные в config/config.rocketchat.js, в один zip-архив:

zip -r data.zip data.jsonl files/

Данный архив нужно загрузить в Time. Загрузка данных в Time описана в разделе Загрузка данных.

FAQ

При экспорте данных выполнение скрипта миграции как-то визуализируется в консоли?

Ответ

Нет, такая возможность отсутствует.

Скрипт зависает при выгрузке постов, в консоли ничего нет

Ответ

Проверьте наличие индексов в коллекции rocketchat_message в MongoDB. Инструкция по получению списка индексов: https://www.mongodb.com/docs/v3.0/tutorial/list-indexes/.