Skip to content

aidarsafindev/1CML

Repository files navigation

1CML — Machine Learning для 1С

Превентивная аналитика и прогнозирование сбоев в 1С с помощью Open Source инструментов.

⚠️ Статус проекта: Это концепт, эксперимент, первые шаги. Репозиторий создан для демонстрации подхода, набора идей и работающих прототипов. В промышленную эксплуатацию пока не внедрено, но вы можете забрать себе полезные куски и доработать под свои задачи.


📋 Содержание


🚀 Возможности

Модуль Что делает Технологии Статус
📀 Прогноз диска Предсказывает дату заполнения диска с точностью до дня 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 ✅ Готово

⚡ Быстрый старт за 15 минут

# 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: хранение техжурнала

Файлы:

Основные таблицы:

  • lock_events — сырые события блокировок
  • lock_hourly_stats — агрегация по часам
  • lock_table_stats — статистика по таблицам
  • session_events — события сессий

🐘 PostgreSQL: хранение результатов

Файл: postgresql/create_tables.sql

Основные таблицы:

  • disk_usage — история заполнения дисков
  • disk_forecast — прогнозы по дискам
  • disk_alerts — история алертов
  • anomaly_checks — результаты проверки аномалий
  • deadlock_checks — результаты проверки дедлоков
  • model_quality — метрики качества моделей

📈 Prometheus: сбор метрик

Файлы:

📊 Grafana: дашборды

Файлы в 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


📚 Документация по ML-скриптам

Для каждого модуля подготовлена подробная документация с описанием функций, примеров и кода:

Документ Описание
docs/disk_prediction.md Прогноз диска: загрузка данных, обучение, прогнозирование
docs/lock_prediction.md Прогноз дедлоков: сбор статистики, расчет риска
docs/session_anomalies.md Детектор аномалий: обучение и детектирование
docs/ml_for_dummies.md ML для начинающих: простые объяснения

📋 ITSM-интеграция

Файлы: 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


🧠 ML для чайников

Термин Что это Пример
Регрессия Предсказание числа "Через 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)

🚧 Ближайшие планы (3-6 месяцев)

  • Интеграция с 1С через HTTP-сервисы (прямой сбор данных без парсинга)
  • Модель для прогноза дедлоков на Random Forest (точнее правил)
  • Веб-интерфейс для управления моделями (без редактирования кода)
  • Автоматическое перестроение индексов (самоисправление проблем)

🔮 Новые ML-модели (6-12 месяцев)

Модель Что делает Ценность
Прогноз длительности закрытия месяца Предсказывает время выполнения с учетом объема данных и дня недели Планирование времени запуска, SLA
Анализ медленных запросов Находит проблемные запросы и дает рекомендации по индексам Ускорение отчетов на 30-50%
Прогноз пиковых нагрузок Предсказывает загруженность по часам и дням Планирование фоновых заданий
Прогноз роста базы данных Анализирует рост по каждой таблице отдельно Планирование дискового пространства
Классификация ошибок Группирует ошибки по ролям и пользователям Целевое обучение сотрудников
Прогноз обращений в поддержку Предсказывает загрузку техподдержки Планирование смен
Анализ эффективности Сравнивает производительность сотрудников HR, мотивация, обучение
Прогноз стоимости лицензий Предсказывает рост числа пользователей Бюджетирование
Поиск оптимальных настроек Подбирает параметры кластера под железо Ускорение работы без покупки железа
Прогноз выхода версий Анализирует паттерны релизов 1С Планирование обновлений

💡 Идеи для исследования

📊 Анализ эффективности сотрудников
💰 Прогноз стоимости лицензий
📈 Прогноз роста базы данных по таблицам
🔧 Поиск оптимальных настроек кластера

Подробнее: docs/future_1C_ML.md


🤝 Как помочь проекту

🐛 Сообщить об ошибке

Создайте issue с описанием проблемы, шагами для воспроизведения и логами.

💡 Предложить идею

Добавьте issue с меткой enhancement с описанием новой функции или улучшения.

🔧 Отправить Pull Request

  1. Форкните репозиторий
  2. Создайте ветку для фичи (git checkout -b feature/amazing-feature)
  3. Закоммитьте изменения (git commit -m 'Add amazing feature')
  4. Запушьте ветку (git push origin feature/amazing-feature)
  5. Откройте Pull Request

📝 Улучшить документацию

Правки в документации всегда приветствуются. Даже исправление опечатки — уже помощь.

🌟 Рассказать о проекте

Поставьте звезду на GitHub, расскажите коллегам, поделитесь в соцсетях.

💬 Стать контрибьютором

Особенно ищем:

  • Экспертов по 1С для консультаций по техжурналу и бизнес-процессам
  • Data Scientist'ов для улучшения моделей и алгоритмов
  • Тестировщиков с реальными базами 1С
  • Авторов документации и примеров

❓ FAQ

❔ Сколько стоит?

Всё бесплатно и open source. Нужны только серверы для развертывания.

❔ Это готовое production-решение?

Нет, это концепт и набор идей. В промышленную эксплуатацию не внедрено, но вы можете доработать под свои задачи.

❔ Нужно ли знать математику?

Нет. Все модели уже реализованы, нужно только настроить.

❔ Сколько нужно данных для прогноза?

  • Диск: минимум 2 недели
  • Блокировки: минимум 1 месяц
  • Аномалии: минимум 2 месяца

❔ Какая точность прогнозов?

  • Диск: MAE обычно 2-5 ГБ
  • Аномалии: Precision/Recall > 0.8
  • Блокировки: тренды видны за 3-7 дней

❔ Поддерживается ли MS SQL?

Сейчас в приоритете PostgreSQL. MS SQL в планах.

❔ Куда писать, если нашел баг?

Создайте issue на GitHub или напишите в Telegram.

❔ Хочу помочь, но не программист

Помогайте с документацией, тестированием, идеями — это тоже ценно!


📬 Контакты

Айдар Сафин

Полезные ссылки:


📄 Лицензия

MIT License. Свободно используйте в коммерческих целях.

Copyright (c) 2026 Айдар Сафин, Magnit Tech


⭐ Поддержка проекта

Если проект помог вам или показался интересным, поставьте звезду на GitHub — это мотивирует развивать его дальше!

GitHub stars


🚀 Клонируйте, пробуйте, дорабатывайте, предлагайте идеи!

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors