Skip to content

IdLeR0/MetricLogger

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MetricLogger

Это библиотека для обработки и записи метрик в файл. См. примеры (examples).

Вкратце как работает

Есть несколько потоков-работников, которые обновляют метрики. Мы резервируем один поток-писатель под запись метрик. Потоки обновляют значения метрик и не заботятся о записи метрик - за это полностью отвечает поток-писатель, который просыпается через определенный интервал времени и записывает метрики в файлик. При этом мы должны задать правило вычесления метрик, потому что поток-писатель пишет через интервплы, а обновления могут поступать в разные моменты времени. Например, можно задать среднее арифметическое для CPU или сумму для HTTP запросов за это отвечает класс AvgCalculator и SumCalculator - наследники BaseCalculator.

По дефолту доступны базовые правила записи метриу -- это сумма и среднее арифмитическое. Эти классы у нас реализованы потоко-безопасными. Чтобы создать свое правили вычисления метрики нужно всего лишь унаследоваться от BaseCalcutor<T>. Примеры как это можно сделать приведены в файле examples.h в папке examples.

Как пользоваться?

Допустим, мы хотим какую-то свою новую метрику и уже создали свое правило вычисления её.

auto my_metric = Metric<MyType, MyCalculator>::Create("name of metric ");

Или же мы хотим создать метрику, которая, например, суммирует значения апдейтов. Для этого просто можно в качестве параметра передать SumCalculator и название метрики.

auto my_metric  = Metric<MyType, SumCalculator>::Create("SumMetric");

Обновление метрики можно производить так:

my_metric->Update(value);

Если вдруг потоку-работнику понадобилось скинуть кэш метрики, то можно сделать так

MyType value = my_metric->CollectAndReset();

Чтобы начать записывать в файл нам нужно создать объект.

MetricWriter w("filename", time_of_check_metrics); 

И стартовать!

w.Start();

Тут time_of_check_metrics - это интервал, через который поток-писатель собирает информацию от потоков-работников и записывает в файл.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors