[Інфраструктура · Діагностика серверів · Моніторинг]
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.
- Огляд кількох серверів одночасно.