13 KiB
Файловая 1С Detmir: промышленное развёртывание ClickHouse/Grafana контура
Документ фиксирует production-схему для файловой 1С без вмешательства в содержимое базы.
Контур предназначен для среды, где:
- 1С работает как файловая база на Windows/RDP host;
- на хост 1С нельзя ставить тяжёлые сервисы;
- нужен audit/detection/investigation слой, а не только KPI;
- Grafana уже поднята отдельно от ноутбука.
Документ описывает реально проверенную схему, а не только scaffold.
1. Границы и гарантии
Этот контур:
- не открывает 1С через
COM,Configurator,Designer; - не меняет
1Cv8.1CD; - работает только как
read-only export/telemetryвокруг файловой базы; - читает:
ibases.v8i,- наличие и размеры
1Cv8.1CD, 1Cv8Log,- файловые маркеры занятости,
- host telemetry Windows.
Это принципиально. Любые действия, которые пишут обратно в 1С, в этот контур не входят.
2. Production topology
2.1 Узлы
192.168.100.18- Windows / RDP host с файловой 1С
- источник
read-onlytelemetry/export
10.10.10.2- backend узел file-1C analytics
ClickHouse- ETL/ingest
- detections
- cases
- proof-check
10.10.10.11- production
Grafana - готовые dashboards
- production
10.10.10.13- основной
AW-rusсервер - в file-1C pipeline не является обязательным runtime-компонентом
- основной
2.2 Поток данных
Windows file 1C host (192.168.100.18)
├─ ibases.v8i inventory
├─ 1Cv8.1CD file metadata
├─ 1Cv8Log metadata
├─ file-base busy markers
└─ host telemetry
↓
export-upload-file-1c-telemetry.ps1
↓ scp
10.10.10.2 /opt/activitywatch/clickhouse-1c/landing/*
↓
run_ingest_cycle.sh
├─ raw tables
├─ core tables
├─ entity_timeline
├─ detections
└─ cases
↓
Grafana 10.10.10.11
3. Что считается готовым контуром
Контур считается рабочим, если одновременно выполняется всё:
- Windows scheduled task
ActivityWatch File1C Uploadзапускается по расписанию. - На
10.10.10.2работаетaw-1c-ingest.timer. - На
10.10.10.2работаетaw-1c-proofcheck.timer. ClickHouseсодержит живые строки в:documentsreglog_eventsaudit_eventshost_eventsentity_timelinedetectionscases
- В
Grafanaна10.10.10.11dashboards открываются и смотрят в datasourceclickhouse-1c.
4. Каталоги и артефакты
4.1 На Windows 192.168.100.18
C:\ProgramData\AWatch-rus\deployment-config.jsonC:\ProgramData\AWatch-rus\export-upload-file-1c-telemetry.ps1C:\ProgramData\AWatch-rus\logs\file1c-telemetry.logC:\ProgramData\AWatch-rus\ssh\awops_ed25519
4.2 На backend 10.10.10.2
- root:
/opt/activitywatch/clickhouse-1c
- landing:
/opt/activitywatch/clickhouse-1c/landing/documents/opt/activitywatch/clickhouse-1c/landing/reglog/opt/activitywatch/clickhouse-1c/landing/audit/opt/activitywatch/clickhouse-1c/landing/host
- archive:
/opt/activitywatch/clickhouse-1c/archive
- runtime:
/opt/activitywatch/clickhouse-1c/.env/opt/activitywatch/clickhouse-1c/etl/config.yml/opt/activitywatch/clickhouse-1c/.venv
4.3 systemd units на 10.10.10.2
aw-1c-ingest.serviceaw-1c-ingest.timeraw-1c-proofcheck.serviceaw-1c-proofcheck.timer
5. Развёртывание с нуля
5.1 Backend на 10.10.10.2
Playbook:
Команда:
ansible-playbook -i /mnt/usb_hdd2/Projects/ActivityWatch-Russian/ansible/inventory.ini \
/mnt/usb_hdd2/Projects/ActivityWatch-Russian/ansible/deploy_file_1c_analytics.yml
Что делает:
- ставит
docker.io,docker-compose,python3-venv,python3-pip; - раскладывает
clickhouse-1cв/opt/activitywatch/clickhouse-1c; - поднимает
ClickHouse; - создаёт
.envиetl/config.yml; - включает
aw-1c-ingest.timer; - включает
aw-1c-proofcheck.timer.
5.2 Windows uploader на 192.168.100.18
Playbook:
Команда:
ansible-playbook -i /mnt/usb_hdd2/Projects/ActivityWatch-Russian/ansible/inventory.ini \
/mnt/usb_hdd2/Projects/ActivityWatch-Russian/ansible/deploy_file_1c_windows_telemetry.yml
Что делает:
- копирует
export-upload-file-1c-telemetry.ps1; - обновляет
deployment-config.json; - создаёт/обновляет scheduled task
ActivityWatch File1C Upload.
5.3 Production Grafana на 10.10.10.11
Grafana уже должна содержать:
- datasource
clickhouse-1c - folder
1C File Analytics - dashboards:
1c-file-exec1c-file-ops1c-file-audit1c-file-detections1c-file-investigation1c-file-data-quality
См.:
6. Обязательный post-step на Windows
6.1 Почему он нужен
Создание file-1C scheduled task через schtasks по умолчанию использует SYSTEM.
Для этой конкретной задачи production-схема должна использовать рабочий principal, а не SYSTEM.
Проверенная рабочая учётка:
SHARKON2025\Администратор
6.2 Команда переключения principal
На 192.168.100.18:
schtasks /Change /TN "\ActivityWatch File1C Upload" /RU "SHARKON2025\Администратор" /RP "<LOCAL_ADMIN_PASSWORD>"
6.3 Проверка
schtasks /Query /TN "\ActivityWatch File1C Upload" /V /FO LIST
Ожидается:
Run As User: АдминистраторLast Result: 0
6.4 Важный нюанс
Код rollout уже пропатчен так, чтобы не откатывать существующий principal обратно на SYSTEM при следующих targeted deploy.
Это защита от регрессии, но не хранение пароля в репозитории.
7. Ручная верификация после deploy
7.1 Windows task
schtasks /Run /TN "\ActivityWatch File1C Upload"
schtasks /Query /TN "\ActivityWatch File1C Upload" /V /FO LIST
Локальный лог:
Get-Content -Tail 80 C:\ProgramData\AWatch-rus\logs\file1c-telemetry.log
7.2 Backend ingestion
AW_1C_ROOT=/opt/activitywatch/clickhouse-1c /opt/activitywatch/clickhouse-1c/ops/run_ingest_cycle.sh
7.3 Freshness proof
AW_1C_ROOT=/opt/activitywatch/clickhouse-1c /opt/activitywatch/clickhouse-1c/ops/check_ingest_freshness.sh
Ожидается строка вида:
freshness documents=0h reglog=0h audit=0h host=0h threshold=8h
7.4 Счётчики ClickHouse
docker exec aw-rus-1c-clickhouse clickhouse-client \
--user default --password change-me --database analytics_1c \
-q "SELECT count() FROM documents"
Аналогично:
reglog_eventsaudit_eventshost_eventsentity_timelinedetectionscases
8. Production state, подтверждённое в этой среде
Подтверждённые живые значения:
documents = 46reglog_events = 94audit_events = 46host_events = 1entity_timeline = 186detections = 12cases = 12
Подтверждённые состояния:
aw-1c-proofcheck.timer = active/enabled- scheduled task
\ActivityWatch File1C Upload:Run As User: АдминистраторLast Result: 0
9. Что именно собирается
9.1 documents
Не документы изнутри 1С, а inventory snapshot по файловым базам:
- имя infobase;
- owner;
- статус
online/busy; - стабильно вычисляемый
doc_idпоbaseIdили path.
9.2 reglog_events
Не парсинг бинарного reglog, а metadata/operational signals:
- наличие и активность
1Cv8Log; - размер
.lgp; - busy markers;
1Cv8JobScheduler.
9.3 audit_events
Snapshot-события по infobase:
inventory_snapshotrisk_tag=busy, если база занята.
9.4 host_events
Минимальный безопасный host telemetry слой:
- CPU
- RAM
- free disk
- RDP sessions
- backup flag
10. Hardening, уже внесённый в контур
В production-контуре уже реализовано:
scpretries на Windows;- абсолютный путь до
scp.exe; - runtime logging exporter-а;
- BOM-safe loader;
flock-lock на ingest cycle;min_file_age_seconds=180против чтения недокачанных файлов;proofcheck.timerкаждые 6 часов;- auto-case по detections;
- защита от отката task principal при targeted deploy.
11. Известные failure modes
11.1 Last Result != 0 у scheduled task
Проверить:
Get-Content -Tail 100 C:\ProgramData\AWatch-rus\logs\file1c-telemetry.log
Типовые причины:
- wrong principal;
- нет доступа к
awops_ed25519; - runtime ошибка PowerShell;
- не найден
scp.exe.
11.2 proofcheck красный
Проверить:
systemctl status aw-1c-proofcheck.timer
systemctl status aw-1c-ingest.timer
AW_1C_ROOT=/opt/activitywatch/clickhouse-1c /opt/activitywatch/clickhouse-1c/ops/check_ingest_freshness.sh
Типовые причины:
- Windows task не сработал;
- файлы не попали в
landing; - ingest не сработал;
ClickHouseне поднят.
11.3 ClickHouse пустой
Проверить:
ls -la /opt/activitywatch/clickhouse-1c/landing/documents
ls -la /opt/activitywatch/clickhouse-1c/archive/documents
docker ps --format '{{.Names}}' | rg aw-rus-1c-clickhouse
12. Recovery-порядок
12.1 Windows сторона
- Проверить scheduled task.
- Проверить лог
file1c-telemetry.log. - Запустить exporter вручную:
& "C:\ProgramData\AWatch-rus\export-upload-file-1c-telemetry.ps1" -ConfigPath "C:\ProgramData\AWatch-rus\deployment-config.json"
12.2 Backend сторона
- Проверить
ClickHouse. - Проверить
landing. - Запустить ingest вручную:
AW_1C_ROOT=/opt/activitywatch/clickhouse-1c /opt/activitywatch/clickhouse-1c/ops/run_ingest_cycle.sh
- Проверить freshness.
13. Безопасность
- Не хранить пароль администратора Windows в git.
- Не хранить секреты в docs.
- Не переводить этот контур в
COM/Designerбез отдельного решения. - Не давать AI write-back в 1С.
- Не менять
1Cv8.1CD.