Тошнит от колец: великая битва систем мониторинга, часть IЛогирование и мониторинг
Последние 18 лет занимаюсь разработкой и эксплуатацией программных систем. Работаю главным инженером в консалтинговой компании, помогающей большим проектам уверенно расти в непростых условиях современного веба. Разрабатываю на языках Java, Perl и Golang.
В поисках Святого Грааля мы перепробовали почти все системы сбора и хранения метрик — от распределенных до не очень. Несмотря на то, что цели и задачи систем сбора и хранения метрик одинаковы и кажутся очень простыми, нам было очень непросто — доходило до того, что на графиках ничего толком не рисовалось в сложной ситуации.
Уже отчаявшись, мы решили предпринять последнее усилие, вооружившись фактами. А именно: поскольку хранение и обработка time series информации является важнейшей задачей системы сбора и хранения метрик, мы решили измерить производительность, в первую очередь, подсистемы хранения. Для этого мы запаслись относительно недавно появившимися в ядре фреймворком eBPF, утилитой blktrace и визуализатором ее результатов iowatcher, утилитами atop и perf и другим инструментарием современного инженера по оптимизации производительности.
В первой части мы сравним между собой популярные системы сбора и хранения метрик, обычно существующие в рамках одного узла: Graphite, RRDTool, InfluxDB, Prometheus, Zabbix.