Add request metrics database
This commit is contained in:
@@ -560,3 +560,36 @@ SSH-ключ с локальной машины передан на ВМ 213 в
|
||||
`usage`; авторизованный POST `/recipe/` HTTP 200 с непустыми `text` и `usage`;
|
||||
redirect отсутствует. `gemini-tunnel.service`, `recipe.service` и
|
||||
`elmer.service` имеют статус active. `elmer.service` не перезапускался.
|
||||
|
||||
## Проверка хранения изображений
|
||||
|
||||
В задеплоенном `recipe_service/app.py` изображение читается через
|
||||
`image.read()` в память и передаётся proxy через `requests.post(files=...)`.
|
||||
Операций записи изображения на диск в коде нет; постоянное хранилище для
|
||||
изображений не используется. `recipe.service` active.
|
||||
|
||||
В `/tmp` ВМ 213 обнаружены файлы от предыдущих ручных диагностических
|
||||
запросов, включая `lekar1.png` и JSON-ответы. Они не создаются рабочим
|
||||
pipeline автоматически и требуют отдельного разрешения на удаление. Это
|
||||
отдельный остаток тестовых команд, а не постоянное хранилище приложения.
|
||||
|
||||
## SQLite-статистика запросов
|
||||
|
||||
По команде пользователя добавлена SQLite-база статистики на ВМ 213:
|
||||
`/var/lib/recipe/metrics.sqlite3`. Хранятся request ID, время, полный IP,
|
||||
User-Agent, method/path, MIME и размер изображения, длина prompt, HTTP-статус,
|
||||
длительность, размер ответа, Gemini usage и безопасное описание ошибки.
|
||||
Изображение, prompt, распознанный текст, Bearer-токен и Gemini key в базу не
|
||||
записываются.
|
||||
|
||||
Первый запуск после добавления статистики выявил подтверждённую ошибку
|
||||
`sqlite3.OperationalError: attempt to write a readonly database`: файл базы
|
||||
был `root:root` с правами `644`, а unit использовал `ProtectSystem=strict`.
|
||||
Файл переведён во владение `recipe:recipe` с правами `0660`, в unit добавлены
|
||||
`StateDirectory=recipe` и `StateDirectoryMode=0770`.
|
||||
|
||||
После исправления `recipe.service` active. Таблица `requests` создана
|
||||
автоматически. Проверка записала 401 и успешный OCR: последняя строка содержит
|
||||
IP `127.0.0.1`, MIME `image/png`, размер 531101 байт, длину prompt 88 и
|
||||
непустой usage JSON. Тестовый image-файл удалён после запроса; приложение
|
||||
читает изображение в память и не пишет его на диск.
|
||||
|
||||
Reference in New Issue
Block a user