[Infrastruktura · Diagnostyka serwerów · Monitoring]
Astra Server Monitor
Narzędzia diagnostyki i obserwowalności dla serwerów Linux: czytelny obraz stanu systemu, usług i zajętości dysku z bezpiecznym dostępem do diagnostyki tylko do odczytu.
01Przegląd projektu
Utrzymywanie usług produkcyjnych na VPS oznacza regularne odpowiadanie na te same pytania: czy wszystko działa, co zużywa zasoby, gdzie zniknęło miejsce na dysku. Server Monitor zamienia te pytania w czytelny interfejs.
Dostęp jest celowo ograniczony. Funkcje diagnostyczne działają tylko w trybie odczytu i pod kontrolą, więc narzędzie pomaga badać problemy, nie tworząc nowego ryzyka.
02Wyzwanie inżynierskie
Output terminala jest precyzyjny, ale pod presją trudno go szybko zinterpretować. Jednocześnie każde narzędzie z dostępem do serwera musi być zaprojektowane tak, by nie mogło przypadkiem zmienić systemu, który obserwuje.
- A
Zbierać diagnostykę bez podwyższonych uprawnień i operacji zapisu.
- B
Prezentować usługi, procesy i zasoby w formie szybkiej do przejrzenia.
- C
Interaktywnie badać zajętość dysku przy systemie plików tylko do odczytu.
- D
Weryfikować faktyczny stan usług po każdym wdrożeniu.
03Architektura rozwiązania
Najedź lub dotknij etapu.
Host Linux
Metryki systemowe, usługi i system plików na VPS.
04Główne komponenty
- 01
Przegląd systemu
Kluczowe metryki zasobów i informacje o hoście w jednym miejscu.
- 02
Status usług
Stan usług, na których działa platforma.
- 03
Widok procesów
Obserwacja uruchomionych procesów i ich zużycia zasobów.
- 04
Eksplorator dysku
Interaktywny podział zajętości dysku według katalogów, tylko do odczytu.
- 05
Kontrola dostępu
Kontrolowany zestaw funkcji diagnostycznych zamiast otwartego dostępu do powłoki.
- 06
Kontrole po wdrożeniu
Używane do potwierdzenia rzeczywistego zachowania po wypuszczeniu zmian.
05Stack technologiczny
Platforma
- Linux VPS
- SSH
- Process lifecycle
Backend
- Python
- Diagnostics collectors
Interfejs
- Web UI
- SVG visualisation
06Interaktywna demonstracja
Dashboard serwera
IlustracjaDane demo — wygenerowany przykład, nie prawdziwy serwer.
CPU
—
Pamięć
—
Obciążenie
—
1m · 5m · 15m
Dysk /
—
Usługi
systemdEksplorator dysku · tylko odczyt
Kliknij blok, aby wejść głębiej · stąd niczego nie można zmienić
07Decyzje inżynierskie
- 01
Domyślnie tylko odczyt
Badanie problemu nigdy nie powinno tworzyć nowego.
- 02
Struktura po stronie serwera
Output komend jest parsowany na serwerze do typowanych danych, którym UI może ufać.
- 03
Wizualnie tam, gdzie to pomaga
Zajętość dysku to hierarchia — więc jest pokazana jako hierarchia, a nie długa lista.
08Niezawodność i testy
- Ograniczony zestaw operacji diagnostycznych.
- Timeouty kolektorów, aby jedna wolna komenda nie zamrażała dashboardu.
- Element weryfikacji po wdrożeniu.
09Przykład kodu
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]Ilustracja Przykład ilustracyjny — skan rozmiarów katalogów tylko do odczytu.
Kod źródłowy produktu jest prywatny. Przykłady pokazują podejście inżynierskie, a nie wewnętrzną logikę. Więcej w Engineering Lab.
10Możliwe kierunki rozwoju
- Historia metryk z prostymi wykresami trendów.
- Alerty progowe dostarczane na Telegram.
- Widok wielu serwerów jednocześnie.