mirror of
https://github.com/lorsanstand/HomeOps-Hub.git
synced 2026-09-18 15:08:21 +03:00
Compare commits
3 Commits
bef8409b8c
...
f0c3a67826
| Author | SHA1 | Date | |
|---|---|---|---|
| f0c3a67826 | |||
| ef67ccd7b2 | |||
| 8705f8708d |
@@ -37,7 +37,7 @@
|
|||||||
|
|
||||||
Проект состоит из трех основных компонентов:
|
Проект состоит из трех основных компонентов:
|
||||||
|
|
||||||
1. **Hub (The Brain):** Центральный сервис на Go/Python. Хранит конфигурации, управляет состоянием, оркестрирует Runbooks и управляет Telegram-ботом. База данных — Postgres.
|
1. **Hub (The Brain):** Центральный сервис на Go/Python. Хранит конфигурации, управляет состоянием, оркестрирует Runbooks и управляет Telegram-ботом. База данных — SQLite.
|
||||||
2. **Agent (The Executor):** Легковесный бинарный файл, работающий непосредственно на целевом хосте. Связь с Хабом через **gRPC Stream**.
|
2. **Agent (The Executor):** Легковесный бинарный файл, работающий непосредственно на целевом хосте. Связь с Хабом через **gRPC Stream**.
|
||||||
3. **Telegram Interface:** Основной UI для оперативного управления с использованием Inline-кнопок для быстрых действий (Ack, Mute, Restart).
|
3. **Telegram Interface:** Основной UI для оперативного управления с использованием Inline-кнопок для быстрых действий (Ack, Mute, Restart).
|
||||||
|
|
||||||
@@ -66,7 +66,6 @@
|
|||||||
|
|
||||||
## 🔒 Безопасность
|
## 🔒 Безопасность
|
||||||
* **No Inbound Ports:** Агент не слушает порты. Соединение всегда инициируется изнутри вашей сети.
|
* **No Inbound Ports:** Агент не слушает порты. Соединение всегда инициируется изнутри вашей сети.
|
||||||
* **mTLS / Token Auth:** Весь трафик между Агентом и Хабом зашифрован.
|
|
||||||
* **Hardened Commands:** Невозможно выполнить `rm -rf /` — доступны только те команды, что описаны в коде агента.
|
* **Hardened Commands:** Невозможно выполнить `rm -rf /` — доступны только те команды, что описаны в коде агента.
|
||||||
|
|
||||||
*Created with ❤️ for Stasik.*
|
*Created with ❤️ for Stasik.*
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
CREATE TABLE heartbeats (
|
CREATE TABLE heartbeats (
|
||||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
agent_id VARCHAR(32) UNIQUE NOT NULL,
|
agent_id VARCHAR(32) NOT NULL,
|
||||||
cpu_usage FLOAT NOT NULL ,
|
cpu_usage FLOAT NOT NULL ,
|
||||||
memory_usage FLOAT NOT NULL ,
|
memory_usage FLOAT NOT NULL ,
|
||||||
disk_usage FLOAT NOT NULL ,
|
disk_usage FLOAT NOT NULL ,
|
||||||
|
|||||||
@@ -90,9 +90,12 @@ func (a *AgentConnection) listenHeartbeat(heartbeats <-chan domainHub.CreateHear
|
|||||||
}
|
}
|
||||||
|
|
||||||
a.log.Warn().Msg("agent not send heartbeat")
|
a.log.Warn().Msg("agent not send heartbeat")
|
||||||
a.Close()
|
_ = a.Close()
|
||||||
return
|
return
|
||||||
case heartbeat := <-heartbeats:
|
case heartbeat, ok := <-heartbeats:
|
||||||
|
if !ok {
|
||||||
|
return
|
||||||
|
}
|
||||||
a.log.Debug().
|
a.log.Debug().
|
||||||
Float64("cpu usage", heartbeat.Metrics.CpuUsage).
|
Float64("cpu usage", heartbeat.Metrics.CpuUsage).
|
||||||
Float64("disk usage", heartbeat.Metrics.DiskUsage).
|
Float64("disk usage", heartbeat.Metrics.DiskUsage).
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
package connection_manager
|
||||||
Reference in New Issue
Block a user