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

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-продукт