Commit Graph

59 Commits (master)

Author SHA1 Message Date
mirivlad 393edebee6 Fix json_decode in Twig - decode in controller instead 2026-04-25 19:58:22 +08:00
mirivlad e20354e89d Add display_metrics setting per server
- Add display_metrics JSON field to servers table
- Update server edit form with metric checkboxes
- ServerDetailController now uses server's display_metrics setting
- If no metrics selected - show all (backward compatibility)
- Removed hardcoded metric names from queries
2026-04-25 19:54:00 +08:00
mirivlad 9b7e5afd4f Fix dynamic zoom loading and tooltips
- Fix API date parsing for d.m H:i format
- Update labels variable after loading new data for tooltips
- Ensure tooltips work correctly after zoom reload
2026-04-25 19:00:44 +08:00
mirivlad 36ace1e9d2 Add dynamic metric loading on chart zoom
- Add onZoomComplete callback to charts
- When zoomed to < 100 points, load detailed data from API
- Add loadDetailedMetrics function per chart
- API returns aggregated data (max 500 points) for zoomed range
- Improves performance while preserving detail on zoom
2026-04-25 16:45:09 +08:00
mirivlad 66d4d021ba Fix tooltips and uptime chart issues
- Fix tooltip data access: use chart data instead of API response
- Exclude uptime from metrics charts (SQL and template filters)
- Fix fetchProcesses() time format handling
- Add try-catch and proper Response handling in getProcesses API
- Fix Slim Response write() chaining issue
- Add last_seen to server query
2026-04-25 16:36:14 +08:00
mirivlad 3fecc21565 feat: Fix CPU tooltip, add uptime widget, exclude uptime from charts
- Fix CPU tooltip to show percentage value
- Add uptime widget to server detail page (right column)
- Exclude uptime metric from charts in two places
2026-04-20 11:54:00 +08:00
mirivlad e9d2fcf1c0 fix: Delete via GET instead of AJAX
- Use GET /{id}/delete instead of DELETE
- Simple link with confirm() instead of fetch
- Removed CSRF for delete routes
2026-04-17 19:05:47 +08:00
mirivlad d5318f7e16 fix: Delete groups/servers using fetch with CSRF header
- Create CsrfHeaderMiddleware to read X-CSRF-TOKEN header
- Replace form submit with JavaScript fetch for DELETE operations
- Send CSRF token in X-CSRF-TOKEN header
- Fix groups/index.twig and servers/index.twig delete buttons
2026-04-17 18:59:12 +08:00
mirivlad d03aff714f feat: Add offline monitoring and default settings
- Add offline_timeout and notify_on_offline fields to servers table
- Create default_settings table for configurable defaults
- Create offline_alerts table for tracking offline events
- Add sendOfflineNotification/sendOnlineNotification methods
- Create check_offline.php CRON script for periodic checks
- Add admin page for default settings management
- Add offline settings to server edit form
- Apply default values when creating new servers

Usage: Add to CRON - * * * * * php /var/www/mon/public/check_offline.php
2026-04-17 15:22:17 +08:00
mirivlad c8d0bc4a40 security: Require explicit token for agent downloads
- Remove server_id auto-resolution from validateAndGetToken()
- Links in edit.twig now use token instead of server_id
- Add agent_token retrieval in ServerController::edit()
2026-04-17 09:55:45 +08:00
mirivlad bce4c2e2d0 fix: Update agent install, disk metrics, fallback blocks, and dynamic thresholds
BREAKING: install.sh now downloads agent from server instead of embedding it

Changes:
- AgentController: downloadAgent() method for serving agent.py with token auth
- AgentController: rewrite generateInstallScript() to curl agent from server
- agent.py: copy production version from server (with temp, disk, network metrics)
- agent.py: fix get_disk_metrics() to use priority mountpoints (/, /home, etc)
- agent.py: fix disk_total_gb collection to use priority mountpoints
- detail.twig: add fallback blocks for temperatures (alert-info)
- detail.twig: add fallback blocks for disk doughnuts (alert-warning)
- detail.twig: add fallback blocks for network graphs (alert-warning)
- detail.twig: add null check for ramTotalGB in tooltip
- detail.twig: improve thresholds form with human-readable labels and units
- ServerDetailController: query only metrics that exist on server and display on graphs

For server 3 (mirv.top):
- After deploy, download new install.sh and reinstall agent
- This will add disk_used_root, ram_total_gb, temperatures support
2026-04-17 09:25:43 +08:00
mirivlad 99761ca5d8 feat: добавить установку Windows-агента через .bat (обход ExecutionPolicy, двойной клик)
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-14 04:54:25 +08:00
mirivlad c2c9934ff8 feat: добавить установку агента для Windows Server 2012+ (PowerShell скрипт, Scheduled Task, авт. установка Python)
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-14 04:31:20 +08:00
mirivlad ce577c5d51 feat: объединить все температурные метрики (temp_*) в один график с разными цветами, вернуть сетевые графики
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-14 03:13:03 +08:00
mirivlad dbd71e3485 fix: removed network rx/tx charts, ensured single temp chart
- Excluded network_rx and network_tx metrics from main metrics loop
- Removed separate network interface charts
- Verified single combined Temperatures chart (chart-temperatures) exists and is initialized
2026-04-14 01:52:03 +08:00
mirivlad de34962360 feat: добавлен мониторинг температур (CPU, GPU, HDD/SSD)
- Обновлен скрипт установки агента (добавлены lm-sensors, smartmontools)
- Агент теперь собирает температуры: CPU (через psutil), Диски (smartctl), GPU (nvidia-smi)
- Бэкенд автоматически определяет единицу измерения °C для метрик temp_*
- Добавлен общий график Температуры на страницу сервера
2026-04-14 01:21:59 +08:00
mirivlad c6e400ad32 fix: округление значений метрик над графиками до 2 знаков
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-13 16:42:03 +08:00
mirivlad fc7a98663f fix: исправлена HTML структура вкладок (metrics/services/thresholds)
- Перемещены закрывающие </div> tab-pane metrics в правильное место
- Сетевые графики и doughnut диски теперь внутри вкладки Метрики
- Вкладки Сервисы и Пороги работают корректно

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-13 16:25:14 +08:00
mirivlad 03c84177c3 feat: реорганизация графиков, цвета, GB в тултипах
- Порядок: CPU → RAM → Network → Disk donuts
- Цвета графиков: CPU синий, RAM фиолетовый, Disk оранжевый
- Тултип RAM: Всего/Занято/Свободно ГБ + TOP процессы
- Карточки дисков: Свободно/Занято ГБ над doughnut
- Сетевой график: In (зелёная) / Out (красная) с зумом
- Исключены графики total_gb из line charts

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-13 15:09:07 +08:00
mirivlad f3ddb65fcd feat: doughnut графики разделов дисков, timezone fix, crosshair removal
- Добавлены doughnut графики для disk_used_root/home/boot/mnt_data
- Удалён общий disk_used line chart (заменён doughnut)
- Исключён crosshair плагин (конфликт с Chart.js)
- Установлена timezone Asia/Irkutsk (+8) для корректных запросов
- cmdline в тултипах процессов

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-13 13:23:29 +08:00
mirivlad 0219fda95f feat: масштабирование, дашборд, алерты и тултипы
- Исправлена ось времени: старые данные слева, новые справа
- Подключён chartjs-plugin-zoom (колёсико, drag, pan)
- Переделаны кнопки периода: 1ч/6ч/24ч/7д/30д (по умолчанию 6ч)
- Добавлен cmdline в процессы тултипа (показывает полный путь)
- Улучшена логика алертов: нет спама, resolved уведомления
- Исправлено сохранение порогов (приведение типов)
- Исправлена страница алертов (Twig syntax: ends_with -> matches)
- Дашборд: цвета прогресс-баров по реальным порогам сервера

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-13 10:24:15 +08:00
mirivlad b875e57e4c fix: исправление тултипов Chart.js и обновление проекта
- Исправлено скрытие тултипов при уходе курсора влево/вправо
  - Добавлена проверка всех 4 границ chartArea (caretX + caretY)
  - Добавлен глобальный mousemove обработчик (crosshair overlay перехватывал mouseleave)
- Добавлен плагин chartjs-plugin-crosshair.min.js
- Обновлён дамп БД: только структура + примеры данных (без реальных данных)
- Добавлены: FlashMiddleware, NotificationService, .gitignore
- Обновлены: контроллеры, модели, middlewares, шаблоны
- Удалены: detail.twig.bak файлы

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-13 00:59:19 +08:00
mirivlad 9b64cee32c feat(metrics): replace period/zoom buttons with datetime range selector 2026-02-22 02:45:59 +00:00
mirivlad 6ca570ec1d feat: Унифицировать количество точек на графиках до ~360 для любого масштаба
- 1h: без агрегации (~360 точек)
- 6h: агрегация 1 минута (~360 точек)
- 24h: агрегация 4 минуты (~360 точек)
- 7d: агрегация 28 минут (~360 точек)
- 30d: агрегация 2 часа (~360 точек)
- Formula: aggregate_minutes = period_minutes / 360
- slice ограничен до 400 точек
- format времени берётся из конфига агрегации
2026-02-22 02:09:55 +00:00
mirivlad 4613a14f5a fix: Tooltip не должен показываться после mouseout - добавлен флаг _tooltipHidden
- External handler проверяет флаг _tooltipHidden перед показом
- mouseout/mouseleave устанавливают флаг в true
- mousemove сбрасывает флаг в false
- Предотвращает повторный показ tooltip после скрытия
2026-02-20 19:01:03 +00:00
mirivlad e955eb84b1 fix: Tooltip скрывается при mouseout/mouseleave - handlers после создания чарта
- Убраны IIFE и DOMContentLoaded обёртки
- Обработчики вешаются сразу после создания Chart
- Уникальные имена переменных canvas для каждой метрики
2026-02-20 18:25:17 +00:00
mirivlad e9cc71ddfe fix: Tooltip скрывается через visibility + opacity при уходе с графика
- Используем visibility: hidden + opacity: 0 для скрытия
- Используем visibility: visible + opacity: 1 для показа
- Обработчики вешаются на canvas через getElementById
2026-02-19 17:06:00 +00:00
mirivlad 6a8d69027b fix: Tooltip исчезает при уходе курсора с графика в любую сторону
- Добавлен обработчик mouseout вместе с mouseleave
- Теперь tooltip скрывается при уходе курсора влево/вправо/вверх/вниз
- Убрано不必要的 clearing tooltip._active и draw()
2026-02-19 16:46:16 +00:00
mirivlad 606ae60db8 Fix & to &amp; in URLs 2026-02-15 09:51:26 +00:00
mirivlad 6073ec348a Add aggregation for metrics: auto/1h/6h/24h/7d/30d zoom levels 2026-02-15 09:49:16 +00:00
mirivlad 36c8856d38 Increase chart data limit from 20 to 1000 points 2026-02-15 09:14:44 +00:00
mirivlad 16481f5307 fix: change && to AND in Twig IF block 2026-02-15 11:59:19 +03:00
mirivlad b60a092a2f Исключение отображения графиков для метрик top_cpu_proc и top_ram_proc 2026-02-15 11:54:04 +03:00
mirivlad 26d659ae7d Use context.tooltip._active to hide tooltip on mouseleave 2026-02-15 06:54:26 +00:00
mirivlad 4f9bcdd7dc Add mouseleave handler to hide tooltip 2026-02-15 06:51:35 +00:00
mirivlad b4e0569739 Disable standard tooltip, reduce font to 12px, disable auto-hide 2026-02-15 06:48:39 +00:00
mirivlad 7a7614fc22 Restore clean template (before proc metrics) 2026-02-15 06:36:20 +00:00
mirivlad 94bad84c0b Rollback to working version before proc metrics fix 2026-02-15 04:01:39 +00:00
mirivlad 0e6d8ebcd6 Fix proc metrics hide - proper Twig syntax 2026-02-15 03:47:40 +00:00
mirivlad 70393075cb Hide proc metrics from HTML output 2026-02-14 19:02:21 +00:00
mirivlad cd14d8438a Fix proc metrics hide - proper Twig syntax 2026-02-14 18:55:45 +00:00
mirivlad 9117f19c4d Hide proc metrics from charts loop 2026-02-14 18:50:26 +00:00
mirivlad 75499e07e7 Simplify tooltip logic - hide on mouseleave 2026-02-14 18:44:12 +00:00
mirivlad d2caa14766 Fix tooltip visibility logic 2026-02-14 18:36:58 +00:00
mirivlad f10349af0d Add mouseleave handler to hide tooltip 2026-02-14 18:34:17 +00:00
mirivlad 13eaab4947 Disable tooltip auto-hide, reduce font size 2026-02-14 18:30:49 +00:00
mirivlad 49ed17c2c1 Add metric value to tooltip, disable standard tooltip 2026-02-14 18:27:59 +00:00
mirivlad 015084211a Replace standard tooltip with time display 2026-02-14 18:23:46 +00:00
mirivlad 3d95eeb561 Add metric type check for tooltips 2026-02-14 18:21:06 +00:00
mirivlad 3cf405c823 Fix tooltip external handler and add null check 2026-02-14 18:17:48 +00:00