Lightweight and minimalistic VDS monitor written in Go(lang).
  • Go 53%
  • HTML 17.7%
  • JavaScript 15.2%
  • CSS 14.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-08-18 01:51:08 +06:00
web 1.0.0 2026-08-18 01:51:08 +06:00
auth.go 1.0.0 2026-08-18 01:51:08 +06:00
collector.go 1.0.0 2026-08-18 01:51:08 +06:00
config.go 1.0.0 2026-08-18 01:51:08 +06:00
db.go 1.0.0 2026-08-18 01:51:08 +06:00
go.mod 1.0.0 2026-08-18 01:51:08 +06:00
main.go 1.0.0 2026-08-18 01:51:08 +06:00
metrics.go 1.0.0 2026-08-18 01:51:08 +06:00
README.md 1.0.0 2026-08-18 01:51:08 +06:00
setup.go 1.0.0 2026-08-18 01:51:08 +06:00

orca

Лёгкая система мониторинга сервера с веб-интерфейсом в стиле Grafana (светлая тема, синий хедер, плоский дизайн без скруглений). Собирается в один бинарник: статика вшита через embed, метрики читаются напрямую из /proc (Linux), хранилище — встроенный SQLite (без cgo).

Возможности

  • Метрики: CPU (суммарно + по ядрам), память, swap, диски (все реальные точки монтирования, не только /), I/O диска (чтение/запись, байт/с), сеть (по интерфейсам + суммарно), load average, кол-во процессов, аптайм, хост/ядро.
  • История: раз в 10 секунд снимок метрик пишется в SQLite, хранится 24 часа. На дашборде — графики CPU/памяти/сети с переключателем периода (15м / 1ч / 6ч / 24ч).
  • Авторизация: только вход по логину/паролю, без самостоятельной регистрации. Сессии — серверные, в БД, с httponly-cookie.
  • Первый запуск: если БД не сконфигурирована или в ней нет ни одного пользователя, любой запрос редиректит на визард /setup:
    1. путь к файлу SQLite (создаётся автоматически);
    2. логин и пароль администратора. После отправки формы БД создаётся, накатывается схема, создаётся админ — и только после этого сохраняется конфиг и приложение переходит в обычный режим (редирект на /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, повторно визард не запускается, пока в БД есть хотя бы один пользователь.