Skip to content

lipandr/go-yandex-devops-track

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Задание для трека «Сервис сбора метрик и алертинга»

Шаблон репозитория для практического трека «Go в DevOps».

Агент - resty Framework

Агент должен собирать метрики двух типов:

gauge, тип float64
counter, тип int64

В качестве источника метрик используйте пакет runtime.

К метрикам пакета runtime добавьте другие:

  • Имя метрики: "PollCount":

    • тип counter — счётчик, увеличивающийся на 1 при каждом обновлении метрики из пакета runtime (на каждый pollInterval — см. ниже).
  • Имя метрики: "RandomValue":

    • тип gauge — обновляемое рандомное значение.
  • По умолчанию приложение должно обновлять метрики из пакета runtime с заданной частотой:

    • pollInterval — 2 секунды.
  • По умолчанию приложение должно отправлять метрики на сервер с заданной частотой:

    • reportInterval — 10 секунд.

Метрики нужно отправлять по протоколу HTTP, методом POST:

  • по умолчанию на адрес: 127.0.0.1, порт: 8080;
  • в формате: http://<АДРЕС_СЕРВЕРА>/update/<ТИП_МЕТРИКИ>/<ИМЯ_МЕТРИКИ>/<ЗНАЧЕНИЕ_МЕТРИКИ>;
  • Content-Type: text/plain.

Сервер - chi Framework

Разработайте сервер по сбору рантайм-метрик, который собирает репорты от агентов по протоколу HTTP. Сервер должен собирать и хранить произвольные метрики двух типов:

  • gauge, тип float64, новое значение должно замещать предыдущее;
  • counter, тип int64, новое значение должно добавляться к предыдущему (если оно ранее уже было известно серверу).

Метрики должны приниматься сервером по протоколу HTTP, методом POST:

  • по умолчанию открывать порт 8080 на адресе 127.0.0.1;
  • в формате http://<АДРЕС_СЕРВЕРА>/update/<ТИП_МЕТРИКИ>/<ИМЯ_МЕТРИКИ>/<ЗНАЧЕНИЕ_МЕТРИКИ>;
  • Content-Type: text/plain;
  • при успешном приёме возвращать статус: http.StatusOK.

Сервер должен возвращать текущее значение запрашиваемой метрики в текстовом виде по запросу:

  • GET http://<АДРЕС_СЕРВЕРА>/value/<ТИП_МЕТРИКИ>/<ИМЯ_МЕТРИКИ> (со статусом http.StatusOK).
  • При попытке запроса неизвестной серверу метрики сервер должен возвращать http.StatusNotFound.
  • По запросу GET http://<АДРЕС_СЕРВЕРА>/ сервер должен отдавать HTML-страничку со списком имён и значений всех известных ему на текущий момент метрик.

Тестирование

Покройте код агента и сервера юнит-тестами.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors