Демон, собирающая информацию о системе, на которой запущена, и отправляющая её своим клиентам по GRPC.
Реализовал Леонид Коротков по ТЗ на разработку
-
Средняя загрузка системы (load average).
-
Средняя загрузка CPU (%user_mode, %system_mode, %idle).
-
Загрузка дисков:
- tps (transfers per second);
- KB/s (kilobytes (read+write) per second);
-
Информация о дисках по каждой файловой системе:
- использовано мегабайт, % от доступного количества;
- использовано inode, % от доступного количества.
- Склонировать репо и перейти в папку проекта
git clone https://github.com/podbelsky/sysmon
cd sysmon
- Скопировать и отредактировать файл настроек
cp .env.example .env
- Через Makefile (на контейнере ubuntu:18.04)
make run
- cli
go run main.go grpc
- Через Makefile (на контейнере ubuntu:18.04)
make run-client
- cli
go run main.go client --N 2 --M 10
Конфиг в корне проекта в файле .env Также поддерживается чтение из соответствующих переменных окружения
# Общее
APP_NAME=sysmon # имя приложения в логах
LOG_LEVEL=info # детальность логов (для отладки понижать до debug или trace)
# Сеть (общие для демона и клиента)
GRPC_NETWORK_TYPE=tcp # тип сети ("tcp", "tcp4", "tcp6", "unix","unixpacket")
GRPC_HOST=localhost # хост
GRPC_PORT=8081 # порт
# Сбор и хранение
SNAP_TIME=1s # интервал сбора статистики (получение снэпшота)
CLEAN_TIME=10s # интервал запуска очистки устаревших данных
STORE_TIME=1m # макс. время хранения данных (утсаревшие удаляются очисткой)
# Типы метрик:
STAT_LA=true # Средняя загрузка системы (load average)
STAT_CPU=true # Средняя загрузка CPU (%user_mode, %system_mode, %idle)
STAT_DISK_LOAD=true # Загрузка дисков
STAT_DISK_USE=true # Информация о дисках
Демон собирает метрки каждые SNAP_TIME. Старые данные в истории метрик хранятся SNAP_TIME При подключении клиента к GRPC_HOST:GRPC_PORT демон отдаем ему данные каждые N секунд с усреднением за M секунд (эти параметры передаются клиентом при покдлючении к демону)
- Демон:
- Linux - реализован сбор всех поддерживаемых в конфиге метрик
- MacOS (Darwin) - реализован сбор метрики средняя загрузка системы (load average).
- Клиент: любая ОС, на которой собирается бинарник