59 lines
1.4 KiB
Markdown
59 lines
1.4 KiB
Markdown
# Process Monitor API (Java 11)
|
|
|
|
Small Java 11 application that exposes `POST /hb/api` using `com.sun.net.httpserver.HttpServer`
|
|
and stores received heartbeat records into MariaDB. JSON parsing uses `Gson`
|
|
and the app logs incoming requests plus insert results to stdout.
|
|
|
|
## Request shape
|
|
|
|
Expected JSON body:
|
|
|
|
```json
|
|
{
|
|
"machine_name": "PC-01",
|
|
"status": "running",
|
|
"detected_at": "2026-03-27T21:00:00Z",
|
|
"processes": ["chrome.exe", "discord.exe"]
|
|
}
|
|
```
|
|
|
|
If `processes` is omitted, the application still stores one row with `process_name = NULL`.
|
|
|
|
## Table DDL
|
|
|
|
```sql
|
|
CREATE DATABASE IF NOT EXISTS process_monitor
|
|
CHARACTER SET utf8mb4
|
|
COLLATE utf8mb4_unicode_ci;
|
|
|
|
USE process_monitor;
|
|
|
|
CREATE TABLE IF NOT EXISTS process_heartbeat (
|
|
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
machine_name VARCHAR(128) NOT NULL,
|
|
status VARCHAR(32) NOT NULL,
|
|
detected_at DATETIME(3) NOT NULL,
|
|
process_name VARCHAR(255) NULL,
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (id),
|
|
KEY idx_process_heartbeat_machine_detected (machine_name, detected_at),
|
|
KEY idx_process_heartbeat_process_detected (process_name, detected_at)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
```
|
|
|
|
## Configure
|
|
|
|
Edit `src/main/resources/application.properties`.
|
|
|
|
## Run
|
|
|
|
```powershell
|
|
mvn exec:java
|
|
```
|
|
|
|
## Package
|
|
|
|
```powershell
|
|
mvn package
|
|
```
|