[Инфраструктура · Диагностика серверов · Мониторинг]
Astra Server Monitor
Инструменты диагностики и наблюдаемости для Linux-серверов: понятный вид состояния системы, сервисов и занятости диска с безопасным доступом к диагностике только на чтение.
01Обзор проекта
Работа production-сервисов на VPS — это регулярные одни и те же вопросы: всё ли запущено, что потребляет ресурсы, куда делось место на диске. Server Monitor превращает эти вопросы в понятный интерфейс.
Доступ сознательно ограничен. Диагностические функции работают только на чтение и под контролем, поэтому инструмент помогает разбираться в проблемах, не создавая новых рисков.
02Инженерная задача
Вывод терминала точен, но его медленно интерпретировать под давлением. При этом любой инструмент с доступом к серверу нужно проектировать так, чтобы он не мог случайно изменить наблюдаемую систему.
- A
Собирать диагностику без повышенных прав и операций записи.
- B
Показывать сервисы, процессы и ресурсы в виде, который быстро просматривается.
- C
Интерактивно исследовать занятость диска, оставляя файловую систему только для чтения.
- D
Проверять фактическое состояние сервисов после каждого деплоя.
03Архитектура решения
Наведите или нажмите на этап.
Linux-хост
Системные метрики, сервисы и файловая система на VPS.
04Основные компоненты
- 01
Обзор системы
Ключевые метрики ресурсов и сведения о хосте на одном экране.
- 02
Статус сервисов
Состояние сервисов, на которых работает платформа.
- 03
Процессы
Наблюдение за запущенными процессами и их потреблением ресурсов.
- 04
Обзор диска
Интерактивная разбивка занятости диска по каталогам только на чтение.
- 05
Контроль доступа
Ограниченный набор диагностических функций вместо открытого доступа к shell.
- 06
Проверки после деплоя
Используется для подтверждения реального поведения после выкладки изменений.
05Технологический стек
Платформа
- Linux VPS
- SSH
- Process lifecycle
Бэкенд
- Python
- Diagnostics collectors
Интерфейс
- Web UI
- SVG visualisation
06Интерактивная демонстрация
Дашборд сервера
ИллюстрацияДемо-данные — сгенерированный пример, не реальный сервер.
CPU
—
Память
—
Нагрузка
—
1m · 5m · 15m
Диск /
—
Сервисы
systemdОбзор диска · только чтение
Нажмите на блок, чтобы провалиться внутрь · изменить отсюда ничего нельзя
07Инженерные решения
- 01
По умолчанию только чтение
Расследование проблемы никогда не должно создавать новую.
- 02
Структура на сервере
Вывод команд разбирается на сервере в типизированные данные, которым UI может доверять.
- 03
Визуально там, где это помогает
Занятость диска — это иерархия, поэтому она и показана иерархией, а не длинным списком.
08Надёжность и тестирование
- Ограниченный набор диагностических операций.
- Таймауты сборщиков, чтобы одна медленная команда не замораживала дашборд.
- Используется как часть проверки после деплоя.
09Пример кода
import os
from pathlib import Path
def directory_sizes(root: Path, max_entries: int = 50) -> list[tuple[str, int]]:
"""Read-only scan: never follows symlinks, never writes."""
sizes: list[tuple[str, int]] = []
for entry in os.scandir(root):
if entry.is_symlink():
continue
total = 0
if entry.is_dir(follow_symlinks=False):
for dirpath, _, files in os.walk(entry.path, followlinks=False):
for name in files:
try:
total += os.lstat(os.path.join(dirpath, name)).st_size
except OSError:
pass # file vanished or no permission — skip
else:
total = entry.stat(follow_symlinks=False).st_size
sizes.append((entry.name, total))
return sorted(sizes, key=lambda x: x[1], reverse=True)[:max_entries]Иллюстрация Иллюстративный инженерный пример — подсчёт размеров каталогов только на чтение.
Исходный код продукта закрыт. Примеры показывают инженерный подход, а не внутреннюю логику. Больше — в Engineering Lab.
10Возможное развитие
- История метрик с простыми графиками трендов.
- Пороговые алерты с доставкой в Telegram.
- Обзор нескольких серверов сразу.