final-stats

module
v0.0.0-...-66e1447 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 21, 2021 License: MIT

README

Go Report Card

Финальный проект по курсу Golang Developer от Отус - Приложение осуществляющее системный мониторинг

Задание на проект находится в папке docs

Что делает?

Собирает метрики о системе и отправляет их клиентам по gRPC. Клиент при запросе передает параметры N и M. Приложение отправляет метрики каждые N секунд, усредняя их за последние M секунд. Работает на Linux (Ubuntu) и Windows.

Метрики
  • Средняя загрузка системы
  • Средняя загрузка CPU
  • Загрузка дисков
  • Информация о дисках по каждой файловой системе

Внутреннее устройство

Приложение состоит из:

  • gRPC сервер. Принимает запросы и в поточном режиме отдает метрики подключившимся клиентам
  • Сервис клиентов. Хранит список подключенных клиентов и в соответствии с параметрами клиента отсылает ему метрики каждые N секунд
  • Сервис сбора метрик. Каждую секунду запрашивает метрики у коллекторов, ответственных за их получение, и отправляет все накопленные посекундные метрики сервису клиентов.
  • Коллекторы, ответственные за сбор конкретных метрик. Каждый выполняется в своем потоке

Сервис сбора метрик работает постоянно, собирая метрики в памяти. Устаревшие данные (время устаревания задается в конфиге) удаляются. Сервисы клиентов и сбора метрик общаются через канал. По нему сервису клиентов каждую секунду передается полная копия собранных метрик. Сервис клиентов передает каждому клиенту при подключении канал, по которому будут приходить метрики и функцию отключения.

Directories

Path Synopsis
cmd
internal
cpu

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL