Превентивная аналитика и прогнозирование сбоев в 1С с помощью Open Source инструментов.
⚠️ Статус проекта: Это концепт, эксперимент, первые шаги. Репозиторий создан для демонстрации подхода, набора идей и работающих прототипов. В промышленную эксплуатацию пока не внедрено, но вы можете забрать себе полезные куски и доработать под свои задачи.
- Возможности
- Быстрый старт за 15 минут
- Архитектура решения
- Структура репозитория
- Компоненты
- Модули прогнозирования
- Документация по ML-скриптам
- ITSM-интеграция
- ML для чайников
- Результаты пилотного внедрения
- Планы развития
- Как помочь проекту
- FAQ
- Контакты
- Лицензия
| Модуль | Что делает | Технологии | Статус |
|---|---|---|---|
| 📀 Прогноз диска | Предсказывает дату заполнения диска с точностью до дня | Linear Regression, Prophet | ✅ Работает |
| 🔒 Прогноз дедлоков | Анализирует тренды блокировок и предупреждает о риске дедлоков | Time Series Analysis, ClickHouse | ✅ Работает |
| 📊 Детектор аномалий | Выявляет аномалии в активности пользователей | Isolation Forest, 3-Sigma | ✅ Работает |
| 🤖 ML-модели | Классифицирует предсбойные состояния | Random Forest, SVM | 🚧 В разработке |
| 📈 Дашборды | Визуализирует тренды и прогнозы | Grafana | ✅ Готово |
| 🔔 Алерты | Отправляет уведомления в Telegram | Alertmanager, Webhooks | ✅ Готово |
| 📋 ITSM-интеграция | Автоматически создает задачи в Jira/YouTrack/ServiceNow | REST API | ✅ Готово |
| 📦 Сбор данных | Парсит техжурнал 1С в ClickHouse | Python, ClickHouse | ✅ Готово |
# 1. Клонируем репозиторий
git clone https://github.com/aidarsafindev/1CML.git
cd 1CML
# 2. Запускаем ClickHouse в Docker
docker run -d -p 8123:8123 -p 9000:9000 --name clickhouse-server clickhouse/clickhouse-server
# 3. Создаем таблицы в ClickHouse
cat clickhouse/schema.sql | docker exec -i clickhouse-server clickhouse-client --multiline
cat clickhouse/schema_locks.sql | docker exec -i clickhouse-server clickhouse-client --multiline
# 4. Устанавливаем зависимости Python
pip install -r requirements.txt
# 5. Копируем и настраиваем .env
cp .env.example .env
# отредактируйте .env под свои параметры
# 6. Создаем таблицы в PostgreSQL
# (если PostgreSQL запущен в Docker)
docker exec -i postgres psql -U postgres -d monitoring < postgresql/create_tables.sql
# 7. Запускаем тестовый прогноз диска
python scripts/disk/predict_disk.py --disk D: --test
# 8. Импортируем дашборды в Grafana
# Grafana → Import → /grafana/dashboards/disk_forecast.jsonПодробная инструкция для Windows 10: docs/install_windows.md
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Техжурнал 1С │───▶│ ClickHouse │───▶│ │
│ (блокировки) │ │ (lock_events) │ │ │
└─────────────────┘ └─────────────────┘ │ │
│ Grafana │
┌─────────────────┐ ┌─────────────────┐ │ (визуализация │
│ Метрики Windows │───▶│ Prometheus │───▶ │ + прогноз) │
│ (диск, CPU) │ └─────────────────┘ │ │
└─────────────────┘ │ └─────────────────┘
▼ ▲
┌─────────────┐ │
│ PostgreSQL │───────────────┘
│ (прогнозы) │
└─────────────┘
│
┌────────────┴────────────┐
▼ ▼
┌─────────────┐ ┌─────────────┐
│ Telegram │ │Jira/YouTrack│
│ Алерты │ │ Задачи │
└─────────────┘ └─────────────┘
1CML/
│
├── 📁 prometheus/ # Конфигурация Prometheus
│ ├── prometheus.yml # Основной конфиг с job'ами
│ ├── alerts.yml # Правила алертов
│ └── alertmanager.yml # Настройка вебхуков в ITSM
│
├── 📁 grafana/ # Дашборды и источники данных
│ ├── datasources.yml # Настройка источников
│ └── 📁 dashboards/ # JSON-дашборды
│ ├── disk_forecast.json # Прогноз диска
│ ├── locks_trend.json # Тренды блокировок
│ └── anomalies.json # Контрольные карты
│
├── 📁 clickhouse/ # Схемы для ClickHouse
│ ├── schema.sql # Основные таблицы для техжурнала
│ ├── schema_locks.sql # Таблицы для анализа блокировок
│ └── queries.sql # Полезные запросы
│
├── 📁 postgresql/ # Схемы для PostgreSQL
│ └── create_tables.sql # Таблицы для прогнозов
│
├── 📁 scripts/ # Python-скрипты
│ │
│ ├── 📁 disk/ # Прогноз диска
│ │ ├── collect_disk_metrics.py # Сбор метрик диска
│ │ ├── predict_disk.py # Основной скрипт прогноза
│ │ ├── check_all_disks.py # Проверка всех дисков
│ │ └── cleanup_old_data.py # Очистка старых данных
│ │
│ ├── 📁 locks/ # Прогноз дедлоков
│ │ ├── techlog_parser_locks.py # Парсер блокировок
│ │ ├── analyze_lock_trends.py # Анализ трендов
│ │ └── check_deadlocks.py # Основной скрипт проверки
│ │
│ ├── 📁 anomalies/ # Детектор аномалий
│ │ ├── prepare_training_data.py # Подготовка данных
│ │ ├── train_anomaly_detector.py # Обучение модели
│ │ ├── get_current_metrics.py # Получение текущих метрик
│ │ └── detect_anomalies.py # Детектирование
│ │
│ ├── 📁 ideas/ # Будущие ML-модели (заготовки)
│ │ ├── predict_operation_duration.py # Прогноз длительности операций
│ │ ├── predict_server_load.py # Прогноз нагрузки
│ │ ├── analyze_slow_queries.py # Анализ медленных запросов
│ │ ├── predict_db_growth.py # Прогноз роста БД
│ │ ├── classify_user_errors.py # Классификация ошибок
│ │ ├── predict_support_response.py # Прогноз обращений в поддержку
│ │ ├── analyze_user_efficiency.py # Анализ эффективности сотрудников
│ │ ├── predict_license_cost.py # Прогноз стоимости лицензий
│ │ ├── find_optimal_settings.py # Поиск оптимальных настроек
│ │ └── predict_releases.py # Прогноз выхода версий
│ │
│ ├── 📁 itsm/ # ITSM-интеграции
│ │ ├── base.py # Базовый класс
│ │ ├── factory.py # Фабрика клиентов
│ │ ├── jira_integration.py # Jira Cloud/Server
│ │ ├── youtrack_integration.py # YouTrack
│ │ ├── servicenow_integration.py # ServiceNow
│ │ ├── redmine_integration.py # Redmine
│ │ ├── gitlab_integration.py # GitLab Issues
│ │ ├── test_create.py # Тестовое создание
│ │ └── check_config.py # Проверка настроек
│ │
│ ├── alert_telegram.py # Отправка алертов в Telegram
│ └── webhook_handler.py # Вебхук от Alertmanager
│
├── 📁 docs/ # Документация
│ ├── install_windows.md # Инструкция для Windows 10
│ ├── ml_for_dummies.md # ML для начинающих
│ ├── itsm.md # Документация по ITSM
│ ├── disk_prediction.md # Детальное описание прогноза диска
│ ├── lock_prediction.md # Детальное описание прогноза дедлоков
│ ├── session_anomalies.md # Детальное описание детектора аномалий
│ ├── future_1C_ML.md # Планы развития и новые идеи
│ └── 📁 ideas/ # Документация по будущим моделям
│ └── README.md # Сводка по всем идеям
│
├── 📁 tests/ # Тесты
│ └── test_predict.py
│
├── 📁 models/ # Сохраненные ML-модели
│ └── .gitkeep
│
├── 📁 logs/ # Логи работы скриптов
│ └── .gitkeep
│
├── docker-compose.itsm.yml # Docker-стек для ITSM
├── Dockerfile.webhook # Docker-образ для вебхука
├── .env.example # Пример переменных окружения
├── .gitignore # Игнорируемые файлы
├── requirements.txt # Зависимости Python
├── LICENSE # MIT License
└── README.md # Этот файл
| Источник | Что собираем | Куда сохраняем |
|---|---|---|
| Техжурнал 1С (LOCK, DEADLOCK) | Блокировки, дедлоки, таймауты | ClickHouse (lock_events) |
| Техжурнал 1С (SESSION) | Сессии пользователей | ClickHouse (session_events) |
| Windows Performance Counters | Метрики диска, CPU, памяти | Prometheus → PostgreSQL |
| PostgreSQL | Статистика СУБД | Prometheus |
Файлы:
clickhouse/schema.sql— основные таблицыclickhouse/schema_locks.sql— таблицы для блокировокclickhouse/queries.sql— полезные запросы
Основные таблицы:
lock_events— сырые события блокировокlock_hourly_stats— агрегация по часамlock_table_stats— статистика по таблицамsession_events— события сессий
Файл: postgresql/create_tables.sql
Основные таблицы:
disk_usage— история заполнения дисковdisk_forecast— прогнозы по дискамdisk_alerts— история алертовanomaly_checks— результаты проверки аномалийdeadlock_checks— результаты проверки дедлоковmodel_quality— метрики качества моделей
Файлы:
prometheus/prometheus.yml— основной конфигprometheus/alerts.yml— правила алертовprometheus/alertmanager.yml— настройка вебхуков
Файлы в grafana/dashboards/:
| Дашборд | Файл | Назначение |
|---|---|---|
| Прогноз диска | disk_forecast.json |
Факт + прогноз + пороги |
| Тренды блокировок | locks_trend.json |
Анализ LockTime |
| Контрольные карты | anomalies.json |
Выявление аномалий |
Файлы: scripts/disk/
Что делает:
- Собирает метрики диска каждый час
- Обучает линейную регрессию на 60 днях истории
- Прогнозирует заполнение на 7, 14, 30 дней
- Рассчитывает дни до достижения лимита
- Отправляет алерты при риске
Подробнее: docs/disk_prediction.md
Файлы: scripts/locks/
Что делает:
- Парсит техжурнал 1С в ClickHouse каждый час
- Анализирует тренды блокировок
- Обнаруживает рост времени ожидания
- Предупреждает о риске дедлоков
Подробнее: docs/lock_prediction.md
Файлы: scripts/anomalies/
Что делает:
- Обучает модель Isolation Forest на истории сессий
- Выявляет аномальные паттерны (резкий спад/рост активности)
- Срабатывает при отклонении >3 сигм
Подробнее: docs/session_anomalies.md
Для каждого модуля подготовлена подробная документация с описанием функций, примеров и кода:
| Документ | Описание |
|---|---|
docs/disk_prediction.md |
Прогноз диска: загрузка данных, обучение, прогнозирование |
docs/lock_prediction.md |
Прогноз дедлоков: сбор статистики, расчет риска |
docs/session_anomalies.md |
Детектор аномалий: обучение и детектирование |
docs/ml_for_dummies.md |
ML для начинающих: простые объяснения |
Файлы: scripts/itsm/
| Система | Файл | Статус |
|---|---|---|
| Jira Cloud/Server | jira_integration.py |
✅ Стабильно |
| YouTrack | youtrack_integration.py |
✅ Стабильно |
| ServiceNow | servicenow_integration.py |
✅ Стабильно |
| Redmine | redmine_integration.py |
✅ Стабильно |
| GitLab Issues | gitlab_integration.py |
✅ Стабильно |
# В .env
ITSM_TYPE=jira
JIRA_URL=https://your-domain.atlassian.net
JIRA_USERNAME=user@example.com
JIRA_API_TOKEN=token
JIRA_PROJECT_KEY=ITДокументация: docs/itsm.md
| Термин | Что это | Пример |
|---|---|---|
| Регрессия | Предсказание числа | "Через 7 дней диск будет 175 ГБ" |
| Классификация | Отнесение к категории | "85% вероятность дедлока" |
| Аномалии | Поиск отклонений | "Сегодня на 70% меньше сессий" |
| Isolation Forest | Алгоритм поиска аномалий | Ищет то, что сложно изолировать |
| Linear Regression | Линейная регрессия | Проводит прямую через точки данных |
| Prophet | Прогноз с сезонностью | Учитывает, что в понедельник нагрузка выше |
Подробнее: docs/ml_for_dummies.md
⚠️ Важно: Это результаты тестирования на пилотных контурах, не в промышленной эксплуатации
| Метрика | Результат |
|---|---|
| 🚫 Незапланированные простои | 0 за 3 месяца |
| 📉 Время на разбор инцидентов | -73% |
| ⏰ Прогноз заполнения дисков | за 14 дней |
| 🔍 Раннее обнаружение аномалий | за 3-7 дней |
| 💰 Экономия времени администраторов | ~40 часов/месяц |
- Прогноз диска (линейная регрессия)
- Сбор метрик Windows через Prometheus
- Дашборды Grafana (диск, блокировки, аномалии)
- Парсер техжурнала в ClickHouse
- Детектор аномалий (Isolation Forest)
- Прогноз дедлоков (анализ трендов)
- Алерты в Telegram
- ITSM-интеграция (Jira, YouTrack, ServiceNow, Redmine, GitLab)
- Интеграция с 1С через HTTP-сервисы (прямой сбор данных без парсинга)
- Модель для прогноза дедлоков на Random Forest (точнее правил)
- Веб-интерфейс для управления моделями (без редактирования кода)
- Автоматическое перестроение индексов (самоисправление проблем)
| Модель | Что делает | Ценность |
|---|---|---|
| Прогноз длительности закрытия месяца | Предсказывает время выполнения с учетом объема данных и дня недели | Планирование времени запуска, SLA |
| Анализ медленных запросов | Находит проблемные запросы и дает рекомендации по индексам | Ускорение отчетов на 30-50% |
| Прогноз пиковых нагрузок | Предсказывает загруженность по часам и дням | Планирование фоновых заданий |
| Прогноз роста базы данных | Анализирует рост по каждой таблице отдельно | Планирование дискового пространства |
| Классификация ошибок | Группирует ошибки по ролям и пользователям | Целевое обучение сотрудников |
| Прогноз обращений в поддержку | Предсказывает загрузку техподдержки | Планирование смен |
| Анализ эффективности | Сравнивает производительность сотрудников | HR, мотивация, обучение |
| Прогноз стоимости лицензий | Предсказывает рост числа пользователей | Бюджетирование |
| Поиск оптимальных настроек | Подбирает параметры кластера под железо | Ускорение работы без покупки железа |
| Прогноз выхода версий | Анализирует паттерны релизов 1С | Планирование обновлений |
📊 Анализ эффективности сотрудников
💰 Прогноз стоимости лицензий
📈 Прогноз роста базы данных по таблицам
🔧 Поиск оптимальных настроек кластера
Подробнее: docs/future_1C_ML.md
Создайте issue с описанием проблемы, шагами для воспроизведения и логами.
Добавьте issue с меткой enhancement с описанием новой функции или улучшения.
- Форкните репозиторий
- Создайте ветку для фичи (
git checkout -b feature/amazing-feature) - Закоммитьте изменения (
git commit -m 'Add amazing feature') - Запушьте ветку (
git push origin feature/amazing-feature) - Откройте Pull Request
Правки в документации всегда приветствуются. Даже исправление опечатки — уже помощь.
Поставьте звезду на GitHub, расскажите коллегам, поделитесь в соцсетях.
Особенно ищем:
- Экспертов по 1С для консультаций по техжурналу и бизнес-процессам
- Data Scientist'ов для улучшения моделей и алгоритмов
- Тестировщиков с реальными базами 1С
- Авторов документации и примеров
Всё бесплатно и open source. Нужны только серверы для развертывания.
Нет, это концепт и набор идей. В промышленную эксплуатацию не внедрено, но вы можете доработать под свои задачи.
Нет. Все модели уже реализованы, нужно только настроить.
- Диск: минимум 2 недели
- Блокировки: минимум 1 месяц
- Аномалии: минимум 2 месяца
- Диск: MAE обычно 2-5 ГБ
- Аномалии: Precision/Recall > 0.8
- Блокировки: тренды видны за 3-7 дней
Сейчас в приоритете PostgreSQL. MS SQL в планах.
Создайте issue на GitHub или напишите в Telegram.
Помогайте с документацией, тестированием, идеями — это тоже ценно!
Айдар Сафин
- 📧 Email: safin_ak@magnit.ru
Полезные ссылки:
MIT License. Свободно используйте в коммерческих целях.
Copyright (c) 2026 Айдар Сафин, Magnit Tech
Если проект помог вам или показался интересным, поставьте звезду на GitHub — это мотивирует развивать его дальше!
🚀 Клонируйте, пробуйте, дорабатывайте, предлагайте идеи!