Wykonano przez: Marcin Konwiak, Michał Konwiak
Aplikacja składa się z klienta oraz serwera. Celem serwera jest zbieranie danych zawierających informacje o systemie na którym uruchomiony jest klient. Użytkownik ma możliwość zalogowania się do aplikacji i przeglądania danych zebranych przez każdego klienta.
Przykładowy serwer dostępny jest pod http://165.227.167.195/. Dane logowania:
- Login:
projekt_psr_login - Hasło:
projekt_psr_haslo
Na poniższym diagramie przedstawiono architekturę aplikacji.

Do komunikacji między klientem a serwerem wykorzystywany jest protokół gRPC. Struktura danych i metody komunikacji zostały zdefiniowane w plikach .proto.
- Czas zebrania danych
- Zużycie zasobów systemowych:
- Zużycie CPU (w procentach)
- Zużycie RAM:
- Całkowita ilość
- Dostępna ilość
- Użyta ilość
- Informacje o systemie operacyjnym:
- ID hosta
- Nazwa systemu
- Platforma
- Wersja platformy
- Liczba procesów
- Informacje o procesach:
- PID
- Nazwa
- Zużycie CPU
- Zużycie RAM
- Informacje o kontenerach Docker:
- ID
- Nazwa
- Obraz
Dane przesyłane przez klienta są zapisywane przez serwer w bazie danych SQLite za pomocą SQL.
-
Informacje o hostach (tabela
Host):- host_id: Unikalny identyfikator hosta (primary key).
- os: Nazwa systemu operacyjnego.
- created_at: Data i czas pierwszego zgłoszenia hosta.
- last_seen: Data i czas ostatniego zgłoszenia hosta.
-
Statystyki systemowe hosta (tabela
HostBaseStats):- id: Unikalny identyfikator wpisu (primary key).
- host: Klucz obcy do tabeli
Host. - time: Czas zebrania danych.
- cpu_percent: Zużycie CPU w procentach.
- ram_total: Całkowita pamięć RAM.
- ram_available: Dostępna pamięć RAM.
- ram_used: Użyta pamięć RAM.
- os: Nazwa systemu operacyjnego.
- platform: Platforma systemu operacyjnego.
- platform_version: Wersja platformy.
- processes: Liczba procesów działających na hoście.
-
Informacje o procesach (tabela
HostProcesses):- id: Unikalny identyfikator wpisu (primary key).
- pid: Identyfikator procesu (PID).
- name: Nazwa procesu.
- cpu: Zużycie CPU przez proces.
- mem: Zużycie pamięci przez proces.
- host: Klucz obcy do tabeli
Host.
-
Informacje o kontenerach Docker (tabela
HostContainers):- id: Unikalny identyfikator wpisu (primary key).
- name: Nazwa kontenera.
- image: Obraz kontenera.
- host: Klucz obcy do tabeli
Host.
Dane zgromadzone w bazie danych są dostępne poprzez panel użytkownika w przeglądarce, który komunikuje się z serwerem za pomocą protokołu HTTP. Aby uzyskać dostęp do panelu użytkownika, należy podać login i hasło administratora.
Klienta można uruchomić pobierając gotowy plik wykonywalny z sekcji Releases w repozytorium w serwisie GitHub lub budując aplikację z kodu źródłowego.
Do wybudowania aplikacji wymagane jest środowisko Go w wersji 1.23 lub nowszej.
go build main.goUruchomienie klienta:
./main start -s <adres_serwera> -i <interwał_zbierania_danych>Serwer można uruchomić za pomocą narzędzia Docker Compose lub korzystając z lokalnego środowiska python.
Uruchomienie serwera za pomocą Docker Compose:
docker-compose upUruchomienie panelu użytkownika lokalnie (wymagane jest narzędzie uv):
uv run manage.py runserverUruchomienie serwera gRPC lokalnie:
uv run manage.py grpcrunaioserverUruchomienie migracji bazy danych:
uv run manage.py migrateDodanie użytkownika:
uv run manage.py createsuperuser



