[Инфраструктура · Диагностика серверов · Мониторинг]

Astra Server Monitor

Инструменты диагностики и наблюдаемости для Linux-серверов: понятный вид состояния системы, сервисов и занятости диска с безопасным доступом к диагностике только на чтение.

Принадлежность
Инструмент эксплуатации, созданный рядом с инфраструктурой Astra Raven
Технический фокус
LinuxDiagnosticsObservabilityRead-only AccessVisualisation
Что демонстрирует
Linux · Автоматизация инфраструктуры · Наблюдаемость · Инструменты эксплуатации · Безопасная диагностика · Интеграция с бэкендом

01Обзор проекта

Работа production-сервисов на VPS — это регулярные одни и те же вопросы: всё ли запущено, что потребляет ресурсы, куда делось место на диске. Server Monitor превращает эти вопросы в понятный интерфейс.

Доступ сознательно ограничен. Диагностические функции работают только на чтение и под контролем, поэтому инструмент помогает разбираться в проблемах, не создавая новых рисков.

02Инженерная задача

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

  • A

    Собирать диагностику без повышенных прав и операций записи.

  • B

    Показывать сервисы, процессы и ресурсы в виде, который быстро просматривается.

  • C

    Интерактивно исследовать занятость диска, оставляя файловую систему только для чтения.

  • D

    Проверять фактическое состояние сервисов после каждого деплоя.

03Архитектура решения

Наведите или нажмите на этап.

01

Linux-хост

Системные метрики, сервисы и файловая система на VPS.

04Основные компоненты

  • 01

    Обзор системы

    Ключевые метрики ресурсов и сведения о хосте на одном экране.

  • 02

    Статус сервисов

    Состояние сервисов, на которых работает платформа.

  • 03

    Процессы

    Наблюдение за запущенными процессами и их потреблением ресурсов.

  • 04

    Обзор диска

    Интерактивная разбивка занятости диска по каталогам только на чтение.

  • 05

    Контроль доступа

    Ограниченный набор диагностических функций вместо открытого доступа к shell.

  • 06

    Проверки после деплоя

    Используется для подтверждения реального поведения после выкладки изменений.

05Технологический стек

Платформа

  • Linux VPS
  • SSH
  • Process lifecycle

Бэкенд

  • Python
  • Diagnostics collectors

Интерфейс

  • Web UI
  • SVG visualisation

06Интерактивная демонстрация

Дашборд сервера

ИллюстрацияДемо-данные — сгенерированный пример, не реальный сервер.

server-monitor · vps-01 (sample)Демо-данные

CPU

—

Память

—

Нагрузка

—

1m · 5m · 15m

Диск /

—

Сервисы

systemd

    Обзор диска · только чтение

    Нажмите на блок, чтобы провалиться внутрь · изменить отсюда ничего нельзя

    07Инженерные решения

    1. 01

      По умолчанию только чтение

      Расследование проблемы никогда не должно создавать новую.

    2. 02

      Структура на сервере

      Вывод команд разбирается на сервере в типизированные данные, которым UI может доверять.

    3. 03

      Визуально там, где это помогает

      Занятость диска — это иерархия, поэтому она и показана иерархией, а не длинным списком.

    08Надёжность и тестирование

    • Ограниченный набор диагностических операций.
    • Таймауты сборщиков, чтобы одна медленная команда не замораживала дашборд.
    • Используется как часть проверки после деплоя.

    09Пример кода

    disk_usage.py python
    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.
    • Обзор нескольких серверов сразу.
    Следующий кейс · 07 TrackLink — трекинг и маркетинговая аналитика Автоматизация бизнеса · Аналитика · Backend-продукт