pult
pult - реализация на Python сервиса регистрации ошибок для 1С:Предприятие 8
Сервис осуществляет регистрацию отчетов об ошибках, отправляемых 1С:Предприятие. См. https://its.1c.ru/db/instrpoly3#content:1190:hdoc, https://its.1c.ru/db/v8320doc#bookmark:dev:TI000002262, https://wonderland.v8.1c.ru/blog/razvitie-mekhanizma-otobrazheniya-oshibok/. Сервис реализован как Python скрипт для mod_wsgi. Скрипт использует SQLite3 для хранения информации об ошибках. Полученные отчеты хранятся в zip файлах без изменений. При регистрации отчетов об ошибках в автоматическим режиме ведется учет уникальных ошибок (по тексту ошибки).
При регистрации новой ошибки есть возможность отправить email списку получателей. Через веб интерфейс можно просмотреть зарегистрированные ошибки и соответствующие им отчеты. Для ошибок можно устанавливать метки. Пример использования меток - если метка выставлена, значит ошибка обработана/зарегистрирована.
Если по ранее зарегистрированной пользователем ошибке будет повторно отправлен отчет с этого же компьютера, то изменится значение в поле "Число отчетов" в форме ошибки, пользовательское описание ошибки будет добавлено к предыдущему описанию. Сам отчет будет хранится в единственном экземпляре. Если в отчете не передана информации о компьютере или же в отчет был приложен файл, то отчет будет зарегистрирован и сохранен.
Описание структуры проекта
init.py - создание SQLite базы
База создается в папке, заданной в переменной
файла
. Для получения доступа из веб сервера к базе необходимо задать переменные
и
в файле
значениями, которые использует веб сервер. Папке, указанной в
необходимо установить владельца и группу теми же значениями, которые использует веб сервер.
prefs.py - настройки сервиса
В переменной
задаются имена конфигурации и их версий, по которым принимаются отчеты об ошибках. Переменная имеет тип словарь (dict).
Ключ - имя конфигурации, значение - список, состящий из 2-х списков.
- 1-й список - список допустимых версий. Если список пустой, то отчеты не принимаются. Пустая строка - принимаются любые версии. Неполное задание версии допускается.
- 2-й список - список email, которым будет отправлено сообщение о регистрации новой ошибки. Если список пустой, то почта для этой конфигурации не отправляется. После внесения изменений в файл может потребоваться перезапуск веб сервера, чтобы настройки применились.
Если переменная
равна
, то не регистрируются ошибки во внешних обработках и внешних отчетах.
В переменный
и
задаются черные и белые списки доступа в виде IP адресов или их маски.
pult.wsgi - основной скрипт
В скрипте реализованы следующие страницы веб интерфейса
s/errorsList - просмотр списка зарегистрированных ошибок
Для того чтобы просмотреть список ошибок, по которым был отправлен отчет, необходимо перейти по ссылке http://your.domain/pult/s/errorsList (в соответствии с указанной ниже настройке сервиса). Список ошибок имеет вид таблицы, в которой:
- N ошибки – порядковый номер ошибки.
- Ошибки, errors – содержание ошибки.
- Конфигурация – конфигурация, в которой возникла ошибка.
- Расширения, extentions – установленные расширения.
- Метка – текстовая информация об ошибке с дополнительной информацией о пользователе и времени последнего изменения метки.
Доступен фильтр на конфигурации.
При нажатии на номер ошибки в табличной части открывается страница reports/N со списком отчетов, на ошибку с номером N.
errorsList - просмотр списка зарегистрированных ошибок
Страница идентична предыдущей, но поле Метка доступно только для просмотра и отсутствует фильтр на конфигурацию.
s/delete/N - просмотр
Удаление ошибки с номером N.
s/reports/N - просмотр
Страница содержит информацию об ошибке и список отчетов по ошибке. Информация об ошибке отображается в таком же объеме как на странице s/errorsList.
Список отчетов содержит следующие колонки: дата, пользователь, IP адрес, с которого пришла ошибка, версия платформы и т.д. В поле "Число отчетов" показывается только отчетов было отправлено по ошибке с номером N с одного компьютера (дублирующиеся отчеты). Если в отчете есть вложенный файл, то в колонке с числом отчетов будет фраза – Файл/скриншот (отчеты с файлами, скриншотами и дополнительными данными, сериализованными в JSON не группируются).
При нажатии на гиперссылку в столбце «Число отчетов» откроется zip архив, в котором будет отчет об ошибке, полученный из 1С:Предприятие.
reports/N - просмотр
Страница идентична предыдущей, но поле Метка у ошибки доступно только для просмотра.
s/settings - текущие настройки сервиса
В настройках указаны содержимое переменной CONFIGS файла с настройками сервиса prefs.py, в которой задаются имена конфигурации и их версий, по которым принимаются отчеты об ошибках.
s/clear - удаление отчетов неподдерживаемых версий и конфигураций
Производится удаление ошибок и отчетов, которые не соответствуют критериям регистрации отчетов, приведенных в переменной
файла
.
Данная страница может быть использована для очистки базы при снятии конфигурации платформы 1С:Предприятия или версии конфигурации с поддержки.
Также выполняется удаление отчетов и ошибок, полученных с IP адреса, внесенного в черный список. При этом не удаляются ошибки, на которые добавлена метка.
Установка
- Подключить модуль mod_wsgi из пакета libapache2-mod-wsgi-py3
- Скопировать файлы pult.wsgi, prefs.py, init.py в папку /var/www/wsgi/pult.
- Внести настройки экземпляра сервиса в prefs.py
- Запустить init.py
- Зарегистрировать приложение WSGI в apache2.conf
WSGIScriptAlias /wsgi/pult /var/www/wsgi/pult/pult.wsgi
Ограничение доступа
Для некотрых разделов сервиса предусмотрена возможность ограничить доступ. Такие разделы начинаются с префикса
. Чтобы ограничения доступа заработали нужно скопировать файл
в папку
, перечислить в нём пользователей и их пароли, а в настройки apache добавить следующий раздел.
<Location "/wsgi/pult/s/">
AuthType Basic
AuthName "Restricted area"
AuthBasicProvider wsgi
WSGIAuthUserScript /var/www/wsgi/auth.wsgi
Require valid-user
</Location>
Пример содержимого файла auth.wsgi
USERS = {
"test" : "test"
}
def check_password(environ, user, password):
if user in USERS:
if password == USERS[user]:
return True
return False
return None
Описание
реализация на Python сервиса регистрации ошибок для 1С:Предприятие 8
Языки
Python