Оптимальное протоколирование потока данных в режиме реального времени с переменным временем

Оптимальное протоколирование потока данных в режиме реального времени с переменным временем
Оптимальное протоколирование потока данных в режиме реального времени с переменным временем - tslphoto @ Unsplash

Перепост из stats stackexchange

Допустим, у меня есть утилита протоколирования в моем приложении, которую я использую для записи диагностических сообщений журнала с временной меткой. Я хочу добавить отслеживание некоторых показателей производительности в этот журнал. Более того, я хочу сделать это разумно, чтобы не увеличивать размер лог-файлов.

Удобным способом сжатия с потерями является запись значений только тогда, когда кажется, что происходит что-то "интересное" - например, если посмотреть на выход фильтра высоких частот, примененного к значению.

Очевидно, что успех такой реализации в решающей степени зависит от конструкции фильтра. Как мы можем спроектировать оптимальный фильтр (в смысле искажения скорости), учитывая некоторые знания (например, структуру момента) потока, который мы пытаемся сжать?

Определите, сколько памяти разрешено потреблять вашему фильтру

Это то, с чем вам приходится работать, когда вы решаете, достаточно ли интересно что-то для отправки в файл. Здесь вы можете хранить больше, чем отправляете в файл. Вы просто не можете хранить это долго, потому что поступает новый материал, и вам нужно куда-то его девать.

Отсутствие сохранения потока ограничивает алгоритмы, которые вы можете использовать. Пакетные алгоритмы, использующие многопроходный подход, не могут быть использованы, поскольку им нужны данные, которых уже нет.

Но есть и однопроходные, которые могут работать с потоком и вычислять на лету, например, алгоритм The Welford's, позволяющий вычислять дисперсию и стандартное отклонение. Определите метрики, которые стоит поддерживать, и вы можете запускать логирование при обнаружении аномальных выбросов.


LetsCodeIt, 5 марта 2023 г., 06:28

Похожие посты

Проектирование UML для анализа данных агрегированных данных опросаЧья работа на самом деле состоит в том, чтобы обрабатывать данные в базе данных, чтобы они стали чем-то вроде диаграммы во внешнем интерфейсе?Как стандарт IEEE 754 выбрал, сколько битов выделить каждому полю (т. е. знак, экспонента, мантисса)?Что мешает приложению использовать хранилище другой платформы бесплатно?Совместное использование данных пользователя (актора) между доменами / микросервисамиКакой уровень журнала следует использовать для ожидаемого, но (потенциально) плохого события?Как рефакторить код, чтобы фасадный класс можно было декорировать?Библиотека тестирования с записью логов: разработка с учетом масштабируемостиУлучшение журналирования для глубокого понимания работы программы и установки клиентомВыбор между безопасностью и производительностью - фундаментальная дилемма