Lightweight and minimalistic VDS monitor written in Go(lang).
- Go 53%
- HTML 17.7%
- JavaScript 15.2%
- CSS 14.1%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| web | ||
| auth.go | ||
| collector.go | ||
| config.go | ||
| db.go | ||
| go.mod | ||
| main.go | ||
| metrics.go | ||
| README.md | ||
| setup.go | ||
orca
Лёгкая система мониторинга сервера с веб-интерфейсом в стиле Grafana
(светлая тема, синий хедер, плоский дизайн без скруглений). Собирается в
один бинарник: статика вшита через embed, метрики читаются напрямую из
/proc (Linux), хранилище — встроенный SQLite (без cgo).
Возможности
- Метрики: CPU (суммарно + по ядрам), память, swap, диски (все реальные
точки монтирования, не только
/), I/O диска (чтение/запись, байт/с), сеть (по интерфейсам + суммарно), load average, кол-во процессов, аптайм, хост/ядро. - История: раз в 10 секунд снимок метрик пишется в SQLite, хранится 24 часа. На дашборде — графики CPU/памяти/сети с переключателем периода (15м / 1ч / 6ч / 24ч).
- Авторизация: только вход по логину/паролю, без самостоятельной регистрации. Сессии — серверные, в БД, с httponly-cookie.
- Первый запуск: если БД не сконфигурирована или в ней нет ни одного
пользователя, любой запрос редиректит на визард
/setup:- путь к файлу SQLite (создаётся автоматически);
- логин и пароль администратора.
После отправки формы БД создаётся, накатывается схема, создаётся
админ — и только после этого сохраняется конфиг и приложение переходит
в обычный режим (редирект на
/login).
Сборка
Нужен доступ в интернет для загрузки зависимостей (bcrypt, чистый Go SQLite-драйвер):
go mod tidy
go build -o orca .
Запуск
./orca -addr :9010 -config orca.json
-addr— адрес, на котором слушать (по умолчанию:9010).-config— путь к JSON-файлу конфигурации, где хранится путь к БД (по умолчаниюorca.json, создаётся визардом при первом запуске).
Открыть http://<host>:9010 — при первом запуске откроется визард
настройки, дальше — обычная страница входа.
Структура
main.go — http-сервер, роуты, embed статики, bootstrap
config.go — orca.json (путь к БД)
db.go — SQLite: пользователи, сессии, история метрик
auth.go — bcrypt, сессии, /login, /logout
setup.go — визард первого запуска, /setup
metrics.go — сбор метрик из /proc (сэмплер с дельтами)
collector.go — фоновый опрос раз в 2с + запись истории раз в 10с
web/templates/ — index.html (дашборд), login.html, setup.html
web/static/ — style.css (Grafana-style light theme), app.js
Заметки
- SQLite-файл создаётся визардом по указанному пути (по умолчанию
orca.dbрядом с бинарником); если путь недоступен для записи, визард вернёт ошибку и не даст продолжить. - Сессии живут 30 дней (cookie
orca_session, httponly, SameSite=Lax). Изменить TTL — константаsessionTTLвauth.go. - История метрик хранится 24 часа и чистится раз в час фоновым сборщиком
(
historyRetainвcollector.go). - Регистрации нет и не будет: единственный админ-аккаунт создаётся только
через визард
/setup, повторно визард не запускается, пока в БД есть хотя бы один пользователь.