Обслуживание системы

Базовые действия

Создание дампа базы данных

$ pg_dump -Oc --if-exists имя_базы_данных > имя_файла_дампа

В случае переноса дампа базы данных из PostgreSQL версии 10 в верию 9.x необходимо выполнить:

$ sed -i "/^    AS integer$/d" имя_файла_дампа

Создание архива медиа-файлов

в рабочем каталоге приложения netdb_demo (_project/netdb_demo/) выполнить команду:

$ tar -zcvf путь_к_файлу_архива _media/

Загрузка данных из дампа в базу на развернутом из дистрибутива стенде

Операция выполняется одинаково для всех дистрибутивов.

Необходимо в рабочем каталоге приложения netdb_demo, под активированным окружением выполнить команду:

$ netdb_load_dump fname=путь_к_файлу_дампа

Загрузка пользовательских медиа-файлов (каталог _media)

$ tar zxvf путь_к_файлу_архива_медиафайлов -C путь_к_рабочему_каталогу_приложения_netdb_demo

Изменение адреса техподдержки

В файл _project/netdb_demo/netdb_demo/settings/common.py добавить строку:

SUPPORT_EMAIL = 'email_техподдержки'

и выполнить:

$ netdb_restart

Просмотр логов

Если при запуске процессов приложений или в какой-то другой ситуации возникают ошибки, есть возможность просмотреть логи приложений, которые располагаются:

для приложения netdb_demo в подкаталоге _project/netdb_demo/_log/. Пример таких логов для установленного приложения:

/home/netdbuser/apps/netdbapp/_project/netdb_demo/_log/uwsgi.log
/home/netdbuser/apps/netdbapp/_project/netdb_demo/_log/supervisord.uwsgi.log
/home/netdbuser/apps/netdbapp/_project/netdb_demo/_log/debug.log
/home/netdbuser/apps/netdbapp/_project/netdb_demo/_log/errors.log

для приложения netdb_proj в подкаталоге /netdb_proj/_log/. Пример таких логов для установленного приложения:

/home/netdbuser/apps/netdbapp_memdb/_project/netdb_proj/_log/uwsgi-memdb-uwsgi.memdb.default.log
/home/netdbuser/apps/netdbapp_memdb/_project/netdb_proj/_log/supervisord.memdb.default.uwsgi.log

Также необходимо просматривать логи http-сервера, используемого в качестве фронтенда (Apache или nginx) для поиска возможных ошибок, а также логи PostgreSQL.

Массовая загрузка пользователей

Если при установке системы необходимо загрузить в систему учетные записи пользователей с набором свойств (ФИО, телефон, e-mail, должность и т.п.) и заранее заданными паролями, администратор системы должен выполнить следующие действия:

  1. Сформировать файл users.csv, содержащий список имен пользователей с заданными паролями в формате csv. В каждой строке файла должны содержаться 2 поля: имя пользователя (логин) и его пароль, с разделителем «;» (точка с запятой).

Пример файла users.csv:

AntonovVB@vaz.ru;qdF9cvZk9C4A
SvetlovIA@kamaz.ru;wRT8HpjAX7NP
MakarovGA@vaz.ru;uwdm5KqLx127
  1. Выполнить команду.
cat users.csv | awk -F „;“ „{if ($1 != «» && $2 != «») printf «echo 047– Обрабатывается %s047 ; netdb_command add_user –no-ask –no-strict %s %s n»,$1,$1,$2}“ | bash &> ./add_users.log

Вывод информации о работе команды направляется в лог-файл add_users.log.

  1. Создать в системе реестр «Реестр пользователей» на основе справочника «Пользователи».

Реестр пользователей должен включать системные показатели:

  • «Название»
  • «Организация»
  • «Фамилия»
  • «Имя»
  • «Отчество»
  • «Почта»
  • «Телефон»
  • «Роль»
  • «Администратор?»
  • «Активен?»
  • «Домен»

На рисунке показана структура реестра.

_images/325.png

После создания реестра его необходимо сохранить и перейти в режим просмотра.

  1. Сформировать файл формата xlsx, содержащий данные пользователей для импорта в «Реестр пользователей».

Пример xlsx-файла с данными пользователей.

_images/326.png

Обратите внимание на корректность данных, подготовленных для загрузки:

  • В ячейках, содержащих список ролей (в столбце H) не должно быть символов «перевод строки» и других непечатаемых символов. Наименования ролей должны быть полностью идентичны наименованиям ролей в системном справочнике «Роли».
  • Наименования доменов (в столбце K) должны быть полностью идентичны наименованиям доменов в иерархическом системном справочнике «Иерархическая система доступа».
  • Наименования организаций (в столбце B) должны быть полностью идентичны наименованиям организаций в иерархическом справочнике «Организации».
  1. Импортировать данные из xlsx-файла в «Реестр пользователей».
  • Нажать на кнопку «Импортировать данные из xlsx».
_images/327.png
  • В стандартном диалоговом окне выбрать созданный файл и нажать на кнопку «Ок» во всплывающем окне.
_images/328.png
  • При импорте данных в реестр система проверяет корректность импортируемых данных. В случае получения сообщений об ошибках необходимо поправить данные и повторно выполнить импорт в реестр.
_images/329.png

Системные команды

В составе дистрибутива NetDB поставляется набор скриптов, обеспечивающих выполнение системных management-команд для действий из командной строки.

Для получения полного списка команд необходимо выполнить команду help:

$ netdb_command help

Изменение пароля пользователя-администратора

Для смены пароля пользователя-администратора используется команда reset-admin:

$ netdb_command help reset_admin
Usage: netdb_command reset_admin [options]

Сбросить пароль админа (по умолчанию на "admin").

Options:
  --password=PASSWORD   Новый пароль админа
  --version             show program's version number and exit
  -h, --help            show this help message and exit

Возврат в заданный момент времени

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

$ netdb_command help revert_to
Usage: netdb_command revert_to дата

Возвращает всю базу на состояние в заданный момент времени

формат даты один из: %Y-%m-%d %H:%M:%S, %Y, %d.%m.%Y, %Y-%m-%d,
       %d.%m.%Y %H:%M:%S, %m.%Y, %Y-%m-%d %H:%M, %d.%m.%Y %H:%M

Проверка корректности значения временных интервалов записей базы данных

Запись в базе данных содержит интервал времени ее действия. Команда documentscheck проверяет непротиворечивость этих данных:

$ netdb_command help documentscheck
Usage: netdb_command documentscheck [options]

Document subclasses integrity check

Options:
  -v VERBOSITY, --verbosity=VERBOSITY
     Verbosity level; 0=minimal output, 1=normal output, 2=verbose
     output, 3=very verbose output

Удаление истории изменений

Команда drop_retrospection_data безвозвратно удаляет исторические данные, оставляя только актуальные на данный момент (см. раздел Режим ретроспекции):

$ netdb_command help drop_retrospection_data
Usage: netdb_command drop_retrospection_data [options]

Remove version history from all document subclasses

Options:
  -v VERBOSITY, --verbosity=VERBOSITY
     Verbosity level; 0=minimal output, 1=normal output, 2=verbose
     output, 3=very verbose output

Устранение перекрытия интервалов

Если команда documentscheck сообщает о наличии перекрывающихся интервалов действия записей, то эта команда решает проблему:

$ netdb_command help fixdocuments_overlapping
Usage: netdb_command fixdocuments_overlapping [options]

Fix overlapping interval errors for Document subclasses

Options:
  -v VERBOSITY, --verbosity=VERBOSITY
     Verbosity level; 0=minimal output, 1=normal output, 2=verbose
     output, 3=very verbose output

Восстановление уникальности ссылок element

Сообщение о неуникальности ссылок element выдает команда netdbcheck. Для корректировки значений используется команда:

$ netdb_command help fixnetdb_element_uniqueness
Usage: netdb_command fixnetdb_element_uniqueness [options]

NetDb fix element uniqueness

Options:
  -v VERBOSITY, --verbosity=VERBOSITY
     Verbosity level; 0=minimal output, 1=normal output, 2=verbose
     output, 3=very verbose output

Удаление лишних ссылок element

Корректирует базу данных NetDB для устранения сообщений от netdbcheck команда extra element:

$ netdb_command help fixnetdb_extra_element
Usage: netdb_command fixnetdb_extra_element [options]

Fix extra elements (trancate document_start)

Options:
  -v VERBOSITY, --verbosity=VERBOSITY
     Verbosity level; 0=minimal output, 1=normal output, 2=verbose
     output, 3=very verbose output

Устранение неуникальности ссылок

Устранение важного нарушения в структуре данных NetDB, могущего привести к нарушению работы системы, (сообщение от netdbcheck):

$ netdb_command help fixnetdb_link_uniqueness
Usage: netdb_command fixnetdb_link_uniqueness [options]

NetDb fix links uniqueness

Options:
  -v VERBOSITY, --verbosity=VERBOSITY
     Verbosity level; 0=minimal output, 1=normal output, 2=verbose
     output, 3=very verbose output

Проверка целостности данных

Основная команда для проверки целостности структуры данных NetDB. Выдает сообщения о выявленных нарушениях в структуре, которые могут быть устранены соответствующими fix… командами:

$ netdb_command help netdbcheck
Usage: netdb_command netdbcheck [options]

NetDb integrity check

Options:
  -v VERBOSITY, --verbosity=VERBOSITY
     Verbosity level; 0=minimal output, 1=normal output, 2=verbose
     output, 3=very verbose output

Данную команду можно выполнять периодически для своевременного выявления нарушений в структуре данных и их устранения.

Последовательное устранение всех нарушений

Команда fixnetdb последовательно выполняет все коррекции из fix… команд:

$ netdb_command help fixnetdb
Usage: netdb_command fixnetdb [options]

NetDb fix all of documents and netdb

Options:
  -v VERBOSITY, --verbosity=VERBOSITY
     Verbosity level; 0=minimal output, 1=normal output, 2=verbose
     output, 3=very verbose output

Синхронизация выбранного задания или источника

Команда adapters_sync выполняет синхронизацию выбранного задания или источника:

netdb_command help adapters_sync
Usage: netdb_command adapters_sync [options]

 Выполнить синхронизацию заданного задания или источника.


  Options:
  -v VERBOSITY, --verbosity=VERBOSITY
                        Verbosity level; 0=minimal output, 1=normal output,
                        2=verbose output, 3=very verbose output
  --settings=SETTINGS   The Python path to a settings module, e.g.
                        "myproject.settings.main". If this isn't provided, the
                        DJANGO_SETTINGS_MODULE environment variable will be
                        used.
  --pythonpath=PYTHONPATH
                        A directory to add to the Python path, e.g.
                        "/home/djangoprojects/myproject".
  --traceback           Raise on exception
  --sync-task=SYNC_TASK
                        Выполнить задание по
                        синхронизации по его id
  --adapter-id=ADAPTER_ID
                        Загрузить данные по id
                        коннектора, задания
                        игнорируются
  --version             show program's version number and exit

Удаление данных

Удаление всех данных из справочников:

$ netdb_command help clean_relations
Usage: manage.py clean_relations [options] id id ...>

Clean relations. Discard all elements

Удаление списка справочников (с содержимым):

$ netdb_command help drop_relations
Usage: manage.py drop_relations [options] id id ...>

Drop relations with all elements

Удаление всех значений показателей:

$ netdb_command help drop_descriptor_values
Usage: manage.py drop_descriptor_values [options] id id ...>

Drop all links with descriptors given. EXPERIMENT !!!

Удаление истории изменения (данное удаление необратимо, необходимо предварительно сделать дамп базы данных):

$ netdb_command shell
Python 2.7.15 (default, May 15 2018, 15:37:31)
[GCC 7.3.1 20180303 (Red Hat 7.3.1-5)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from documents.models import FUTURE
>>> from netdb.models import DstAll
>>> for m in DstAll : m.objects.filter ( document_end__lt=FUTURE ).delete ()
...
>>> quit()
$