Графит: данные по агрегатору углерода теряют?

Я работаю над решением для оповещения, которое использует Logstash для потоковой передачи журналов AWS CloudFront из корзины S3 в Graphite после небольшой обработки. Поскольку может произойти несколько событий с одной и той же меткой времени (несколько событий в течение секунды), я решил использовать Carbon Aggregator для подсчета этих событий в секунду.

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

Я запускаю эту настройку в докере на экземпляре EC2, который не достигает каких-либо ограничений (ЦП, память, сеть, диск).

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

Я установил вывод logstash для отображения строк на stdout (не пропущенных ни одной) и для отправки их в графит на port 2023, который установлен как line-by-line receiver для Carbon Aggregator:

[aggregator]
LINE_RECEIVER_INTERFACE = 0.0.0.0
LINE_RECEIVER_PORT = 2023

aggregation-rules.conf установлен на очень простой счетчик в секунду:

test.<user>.total1s (1) = count test.<user>.total

storage-schemas.conf:

[default]
pattern = .*
retentions = 1s:24h

Рад поделиться большей частью моей конфигурации по вашему запросу.

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

Любая помощь очень ценится.


person Alexander Phoenix    schedule 21.01.2019    source источник


Ответы (1)


Агрегатор углерода не предназначен для того, чтобы делать то, что вы пытаетесь сделать. В этом случае вам нужно использовать statsd для подсчета событий в секунду.

https://github.com/etsy/statsd/blob/master/docs/metric_types.md#counting

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

person AussieDan    schedule 22.01.2019
comment
Спасибо за ваш ответ. Я не уверен, что statsd - правильный инструмент в моем случае, поскольку мне нужно иметь возможность вставлять исходную временную метку журнала в точку данных. Глядя на вывод Logstash Statsd, нет Кажется, это не способ сделать это, как с Вывод графита Logstash - person Alexander Phoenix; 23.01.2019
comment
Ах да, в этом случае statsd не будет работать для вас, поскольку он предназначен для использования в режиме реального времени. Вы можете использовать github.com/graphite-ng/carbon-relay-ng, поскольку похоже, что он будет агрегировать несколько показаний для одной и той же метрики в течение одного и того же интервала, как вы ожидаете. - person AussieDan; 28.01.2019