Skip to content

podbelsky/sysmon

Repository files navigation

Golang Developer. Professional (OTUS): Проектная работа "Системный монитор"

Описание

Демон, собирающая информацию о системе, на которой запущена, и отправляющая её своим клиентам по GRPC.

Реализовал Леонид Коротков по ТЗ на разработку

Собираемые данные

  • Средняя загрузка системы (load average).

  • Средняя загрузка CPU (%user_mode, %system_mode, %idle).

  • Загрузка дисков:

    • tps (transfers per second);
    • KB/s (kilobytes (read+write) per second);
  • Информация о дисках по каждой файловой системе:

    • использовано мегабайт, % от доступного количества;
    • использовано inode, % от доступного количества.

Запуск

  1. Склонировать репо и перейти в папку проекта
git clone https://github.com/podbelsky/sysmon
cd sysmon
  1. Скопировать и отредактировать файл настроек
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).
  • Клиент: любая ОС, на которой собирается бинарник

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published