Skip to content

AnniWeb/MetricsManager

Repository files navigation

Практическое задание

  1. Урок 1. Повторение ООП. Первый микросервис
  2. Урок 2. REST API и тесты
  3. Урок 3. Работа с базами данных
  4. Урок 4. Архитектура современного микросервиса
  5. Урок 5 Сервис-агент сбора системных метрик
  6. Урок 6 Запросы между сервисами
  7. Урок 7 Open API и Swagger
  8. Урок 8 Создание и подключение веб-интерфейса

Урок 1. Повторение ООП. Первый микросервис

Написать свой контроллер и методы в нем, которые бы предоставляли следующую функциональность:

  1. Возможность сохранить температуру в указанное время
  2. Возможность отредактировать показатель температуры в указанное время
  3. Возможность удалить показатель температуры в указанный промежуток времени
  4. Возможность прочитать список показателей температуры за указанный промежуток времени

Урок 2. REST API и тесты

  1. Добавить метод в контроллер агентов проекта менеджера метрик позволяющий получить список зарегистрированных в системе объектов.
  2. В проект агента сбора метрик добавить контроллеры для сбора метрик, аналогичные менеджеру сбора метрик. Добавить методы для получения метрик с агента, доступные по следующим путям:
    • api/metrics/cpu/from/{fromTime}/to/{toTime}/percentiles/{percentile}
    • api/metrics/cpu//from/{fromTime}/to/{toTime}/
    • api/metrics/dotnet/errors-count/from/{fromTime}/to/{toTime}
    • api/metrics/network/from/{fromTime}/to/{toTime}/
    • api/metrics/hdd/left (размер оставшегося свободного дискового пространства в мегабайтах)
    • api/metrics/ram/available (размер свободной оперативной памяти в мегабайтах)
  3. Добавить проект с тестами для агента сбора метрик. Написать простые юнит-тесты на каждый метод каждого контроллера в обоих тестовых проектах

Урок 3. Работа с базами данных

  1. Добавьте логирование всех параметров в каждом из контроллеров в обоих проектах
  2. Добавьте репозитории для каждого типа метрик в сервис агент сбора метрик
  3. Добавьте тесты на все контроллеры и все методы с использованием заглушек

Урок 4. Архитектура современного микросервиса

  1. Перепишите все репозитории в приложении агента метрик использование Dapper вместо сырого чтения данных
  2. Настройте AutoMapper для всех остальных объектов в приложениях (преобразования из Dto в модели базы и обратно)

Урок 5 Сервис-агент сбора системных метрик

  1. Реализуйте задачи для сбора метрик RAM (RamMetricsJob), HDD (HddMetricsJob) и gc-heap-size (DotnetMetricsJob), Network (NetworkMetricJob). Сделайте это с помощью perfomance-counters. Задачи должны собирать метрики раз в 5 секунд и записывать их в созданную базу данных
  2. Реализуйте контроллеры, которые будут отдавать данные по собираемым метрикам
  3. Использовать FluentMigrator

Урок 6 Запросы между сервисами

  1. Подключите работу с базой данных к приложению менеджера сбора метрик. Все таблицы Metrics Manager должны повторять таблицы Metrics Agent, но иметь дополнительный столбец agentId (для связи метрики с агентом). Таблица Agents Должна иметь два столбца - AgentId и AgentUrl.
  2. Реализуйте в Metrics Quarz Job. Сделайте Job на каждый типа метрик (как и для агента). Инъектируйте в Job репозиторий работы с агентами, репозиторий работы с соответствующей метрикой, и IMetricsAgentClient. Читайте из базы всех агентов и для каждого в цикле вызывайте методы получения метрик с агента. ApiRequest будет содержать URL агента (вы возьмете его из свойства AgentUrl в базе) и дату начала выборки и дату конца. В качестве даты конца можно брать DateTime.UtcNow. В качестве даты начала - максимальную из дат, сохраненных в БД метрик на менеджере (сделайте соответствующий запрос к базе метрик к нужной таблице). Прочитанные данные из IMetricsAgentClient сохраните в базе данных менеджера, используя репозиторий метрики.
  3. Реализуйте методы GET контроллеров MetricsManager так, чтобы они по аналогии с MetricsAgent, ходили в свою базу данных и возвращали метрики.

Урок 7 Open API и Swagger

  1. Попробуйте подключить и настроить Swagger UI для менеджера метрик
  2. Попробуйте сгенерить клиент для агента с помощью Swagger, и наследовать MetricsAgentClient из прошлого урока от сгенеренного Client. Эта часть задания факультативная. Можно не делать, но рекомендуется попробовать использовать этот механизм и разобраться в нем самостоятельно.

Урок 8 Создание и подключение веб-интерфейса

Практическое задание на данном уроке является творческим. Попробуйте поэкспериментировать со стандартными компонентами WPF и при помощи верстки и data bindings добавить данные, которые бы вам интересно было видеть от нашего агента сбора метрик. Например, попробуйте собрать grid с двумя колонками и двумя строками. В каждую ячейку получившейся сетки попробуйте разместить по графику, в которые можно вывести данные по различным метрикам.

About

C#: ASP.NET Core Web API микросервисы

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages