171 похожих чатов

Подскажите пожалуйста, а кто-то пользуется гистограмами с predefined бакетами? Я

знаю что в Java мире обычно используют HdrHistogram, которая сама авторесайзит бакеты в зависимости от данных.

Но тут мне нужно собирать метрики в Rust-овом бэкенде, и вижу что в опенсорц проектах используют predefined buckets. Например, для латенси (в секундах):
.1, .2, .4, .8, 1.6, 3.2, 6.4, 12.8, 25.6, 51.2, Inf+

или для подсчета кол-ва ошибок:
1.0, 2.0, 4.0, 8.0, 16.0, 32.0, 64.0, 128.0, 256.0, 512.0

Как-то так
Histogram::new(exponential_buckets(1.0, 2.0, 10))
или
Histogram::new(linear_buckets(0.0, 1.0, 10))

Таким образом задают upper_bound бакета, и потом смотрят в какой бакет попадает значение, и там делают counter += 1.

Я не большой специалист в матстате, так что прошу совета. Предзаданные бакеты - норм? Как потом убедиться что данные не bias-нулись из-за неправильного выбора бакетов?

12 ответов

30 просмотров

зависит от задачи. если бакеты на границах вашего slo или apdex вам пофиг биаснулись они или нет. если вы по этим бакетом хотите считать квантили тогда их может быть не достаточно, да. в prometheus мире это болит довольно редко, но болит и разработчики уже несколько лет пытаются затащить более лучшие бакеты. но пока дальше дизайн доков сильно не ушли

folex- Автор вопроса
Aleksey Shirokikh
зависит от задачи. если бакеты на границах вашего ...

Да, хочется персентили считать по латенси В расте есть реализация HdrHistogram, видимо надо её прикручивать к какой-нибудь из Прометеус либ.

folex
Да, хочется персентили считать по латенси В расте...

Можешь попробовать воспользоваться statsd. Он будет считать нужные тебе персентили и отправлять результаты в виде метрик. См. https://github.com/avito-tech/bioyino

folex- Автор вопроса
vladimir kolobaev
Можешь попробовать воспользоваться statsd. Он буде...

Ну я в целом к statsD и привык. Но все современные инструменты/библиотеки внезапно завязаны на прометеус/open metrics. И я так понимаю что summary у Prometheus считает персентили на клиенте примерно так же, как и statsD у себя. Но мб я ошибаюсь?

Если пром в твоем случае справляется с нагрузкой и всё устраивает, то может им и воспользоваться? У нас не справляется (и по функционалу не устраивает), и мы поэтому используем bioyino.

folex- Автор вопроса
vladimir kolobaev
Если пром в твоем случае справляется с нагрузкой и...

Понял, спасибо! Но я пока на стадии дизайна метрик, в перформанс прома еще долго не упрусь

folex
Понял, спасибо! Но я пока на стадии дизайна метрик...

как ни странно это довольно простая задача. надо всего лишь отдавать много лейблов и вариантов лейблов

folex- Автор вопроса
Aleksey Shirokikh
как ни странно это довольно простая задача. надо в...

главное - потом понимать, что за цифры пром показывает :)

Так можно продолжать использовать statsd,но сменить бэкнд с graphite на victoriametrics . Получите возможность делать запросы поверх собираемых в statsd данных как с помощью графит-запросов, так и с помощью promql (плюс metricsql) - см. https://docs.victoriametrics.com/#how-to-send-data-from-graphite-compatible-agents-such-as-statsd В качестве бонуса получите более эффективное сжатие метрик по сравнению с графитом и меньшую нагрузку на дисковую подсистему - см. успешный пример перехода с графита на вм - https://docs.victoriametrics.com/CaseStudies.html#grammarly

Aliaksandr Valialkin
Так можно продолжать использовать statsd,но сменит...

можешь поподробнее про вот этот бонус? не то чтобы у нас нагрузка прыгала выше 5% но все равно инетресно узнать на сколько нагрузка ниже в сравнеии с Графитом (с бекендом ClickHouse)

vladimir kolobaev
можешь поподробнее про вот этот бонус? не то чтобы...

Имеется ввиду сравнение с классическим whisper-бэкендом. Не сравнивали с бэкендом графита на кликхаусе. Будет здорово, если сравните и поделитесь результатами :)

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта