tech-log-analysis
$
npx mdskill add SteelMorgan/1c-agent-based-dev-framework/tech-log-analysisManages the full lifecycle of 1C Tech Log for diagnosing technical issues like slow queries and deadlocks.
- Helps diagnose performance problems such as slow SQL queries, deadlocks, and platform exceptions.
- Integrates with 1C Tech Log for configuration, collection, and analysis of log data.
- Uses specific event triggers and algorithms to guide log searches and diagnostic steps.
- Presents results through structured log outputs and configuration backups for recovery.
SKILL.md
.github/skills/tech-log-analysisView on GitHub ↗
--- name: tech-log-analysis description: Работа с технологическим журналом 1С (Tech Log). Навык учит агента управлять полным жизненным циклом ТЖ — настройка, включение, сбор, анализ, восстановление — и диагностировать технические проблемы, например, медленные запросы, блокировки, исключения. --- # Работа с технологическим журналом 1С (Tech Log) ТЖ нагружает систему. Включать точечно, с минимальным набором событий. Всегда восстанавливать конфигурацию после диагностики. Для Vanessa — ТЖ последний источник диагностики; сначала `event-log-analysis` и визуальная проверка UI-блокеров. Для ошибок и аудита действий пользователей — `event-log-analysis`. --- ## Когда применять | Триггер | Действие | |---------|----------| | Медленный запрос — нужно найти SQL | `search_tech_log` с `name: "DBMSSQL"` / `"DBPOSTGRS"` | | Блокировки, deadlock | `search_tech_log` с `name: "TLOCK"` / `"TDEADLOCK"` / `"TTIMEOUT"` | | Исключение платформы не в ЖР | `search_tech_log` с `name: "EXCP"` | | Долгий серверный вызов | `search_tech_log` с `name: "CALL"` или `"SCALL"` | | Статус ТЖ неизвестен | `logc_get_techlog_config` — прочитать конфигурацию | | ТЖ не ведётся | Полный цикл (см. алгоритм ниже) | --- ## Полный цикл диагностики Единый алгоритм для пассивного (ждём воспроизведения) и активного (запускаем тест) режимов. **1. Сохранить конфигурацию** ``` logc_save_techlog() ``` Возвращает `backup_id` — сохранить для шага 7. **2. Настроить события** ``` logc_configure_techlog( location: "/var/log/1c/techlog", history: 24, events: ["EXCP", "DBMSSQL", "TLOCK", "TDEADLOCK"] ) ``` **3. Проверить, что сбор идёт** ``` logc_get_actual_log_timestamp() ``` **4. Воспроизвести проблему / дождаться воспроизведения** **5. Smart polling готовности лога** До 10 попыток с паузой 3–5 сек: `logc_get_actual_log_timestamp() >= целевое_время`. Если не дошло — сообщить пользователю, не делать выводов по неполному окну. **6. Прочитать записи** ``` search_tech_log( from: "2025-02-11T14:00:00Z", to: "2025-02-11T14:15:00Z", name: "DBMSSQL", min_duration: 1000 ) ``` **7. Восстановить конфигурацию** ``` logc_restore_techlog(backup_id: "...") ``` **8. Подтвердить статус пользователю**: `ТЖ восстановлен` / `ТЖ отключён` / `Минимальный профиль (события: ...)`. Шаги 1 и 7 — **обязательны**. Никогда не оставлять ТЖ включённым после диагностики без явного согласования. --- ### Варианты цикла **ТЖ уже настроен администратором** — только чтение: 1. `logc_get_techlog_config` → убедиться в наличии нужных событий. 2. `logc_get_actual_log_timestamp` → сбор актуален. 3. `search_tech_log` → читать записи. 4. НЕ изменять конфигурацию — ТЖ не наш. **Срочное отключение** (диск заполняется): `logc_disable_techlog()`. После решения — `logc_restore_techlog(backup_id)`. **Минимальный мониторинг** (вместо полного отключения, только по согласованию): события `["EXCP", "CONN"]`. Зафиксировать в ответе активные события и ответственного. --- ## События ТЖ | Событие | Когда использовать | |---------|--------------------| | `EXCP` | Ошибки, не видные в ЖР | | `DBMSSQL` | Медленные запросы MS SQL | | `DBPOSTGRS` | Медленные запросы PostgreSQL | | `TLOCK` | Конфликты блокировок | | `TDEADLOCK` | Взаимоблокировки | | `TTIMEOUT` | Таймауты блокировок | | `CALL` / `SCALL` | Медленные серверные вызовы | | `CONN` | Проблемы подключения | | `SDBL` | Трансляция запросов в SQL | **Стандартный набор:** `["EXCP", "DBMSSQL", "TLOCK", "TDEADLOCK"]` --- ## Capabilities | Capability | Назначение | |------------|------------| | `search_tech_log` | Поиск по записям ТЖ | | `logc_get_techlog_config` | Прочитать текущую конфигурацию ТЖ | | `logc_save_techlog` | Сохранить конфигурацию перед изменением | | `logc_configure_techlog` | Настроить события, путь, период хранения | | `logc_get_actual_log_timestamp` | Проверить, что сбор идёт | | `logc_restore_techlog` | Восстановить сохранённую конфигурацию | | `logc_disable_techlog` | Отключить ТЖ | | `navigate_symbol` | Переход к коду по контексту из записи ТЖ | --- ## Типичные ошибки | Ошибка | Обходной путь | |--------|---------------| | Забыли `logc_save_techlog` перед настройкой | Спросить пользователя о текущей конфигурации | | ТЖ не активен после `configure` | Платформа требует перезапуска служб | | `logc_get_actual_log_timestamp` не обновляется | Служба не перезапущена или неверный `location` | | Слишком много событий — диск заполняется | Ограничить набор событий; уменьшить `history` | | `search_tech_log` возвращает пусто | Проверить окно времени; событие должно быть после включения ТЖ | --- depends_on: [] ---