Spec-Zone.ru › Graphite

ЧаВо

Что такое Graphite?

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

Кто должен использовать Graphite?

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

В частности, Graphite разработан для обработки числовых данных временных рядов. Например, Graphite хорошо подходит для построения графиков цен акций, поскольку они являются числами, которые меняются со временем. Будь то несколько точек данных или десятки показателей производительности от тысяч серверов, Graphite — для вас. В качестве бонуса вам не обязательно знать имена этих данных заранее (кто захочет поддерживать такую огромную конфигурацию?); вы просто отправляете имя метрики, метку времени и значение, а Graphite позаботится о остальном!

Насколько масштабируем Graphite?

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

С точки зрения ввода-вывода, под нагрузкой Graphite выполняет множество мелких операций ввода-вывода на множестве разных файлов очень быстро. Это потому, что каждая отдельная метрика, отправленная в Graphite, хранится в отдельном файле базы данных, аналогично тому, как работают многие инструменты (drraw, Cacti, Centreon и т. д.), построенные поверх RRD. На самом деле, Graphite изначально использовал RRD для хранения данных, пока не возникли фундаментальные ограничения, потребовавшие нового механизма хранения.

Высокий объем (несколько тысяч отдельных метрик, обновляемых каждую минуту) в основном требует хорошего массива RAID и/или SSD. Сервер Graphite кэширует входящие данные, если диски не могут справиться с большим количеством небольших операций записи (каждая точка данных занимает всего несколько байт, но большинство стандартных дисков не могут выполнять более нескольких тысяч операций ввода-вывода в секунду, даже если они очень небольшие). В этом случае механизм базы данных Graphite, whisper, позволяет carbon записывать несколько точек данных одновременно, тем самым увеличивая общую пропускную способность только за счет поддержания избыточных данных в кэше памяти до тех пор, пока они не смогут быть записаны.

Graphite также поддерживает альтернативные хранилища данных, что может значительно изменить эти характеристики.

Насколько реальное время отображения графиков?

Очень. Даже под большой нагрузкой, когда количество метрик, поступающих в каждый интервал времени, значительно превышает скорость, с которой ваша система хранения может выполнять операции ввода-вывода, и много точек данных кэшируются в хранилище (см. предыдущий вопрос для объяснения), Graphite всё равно отображает графики в реальном времени. Секрет в том, что когда веб-приложение Graphite получает запрос на отображение графика, оно одновременно извлекает данные с диска, а также из предварительного кэша хранения (который может быть распределённым, если у вас несколько серверов обработки), и объединяет оба источника данных, чтобы создать график в реальном времени.

Кто уже использует Graphite?

Graphite был разработан внутри компании Orbitz, где он используется для визуализации различных критически важных данных, включая показатели приложений, показатели работы баз данных, продажи и т. д. На момент написания этой статьи система Orbitz может обрабатывать примерно 160 000 отдельных метрик в минуту на двух серверах Sun Niagara-2 с очень быстрым SAN.

На каком языке написан Graphite?

Python2. Веб-приложение Graphite построено на основе веб-фреймворка Django и использует javascript графический интерфейс ExtJS. Отображение графиков выполняется с помощью графической библиотеки Cairo. Сервер обработки и база данных написаны на чистом Python.

Кто разрабатывает и поддерживает Graphite?

Graphite изначально разрабатывался Кристофером Дейвисом в компании Orbitz. Orbitz долгое время была частью сообщества с открытым исходным кодом и опубликовала несколько других внутренних продуктов.

В настоящее время Graphite разрабатывается командой добровольцев в рамках организации GitHub Graphite-Project.

Под какой лицензией выпущен Graphite?

Apache 2.0 License.

Graphite использует RRDtool?

Нет, не с тех пор, как Graphite был написан в 2006 году. У Graphite есть собственная специализированная библиотека базы данных, называемая whisper, которая по дизайну очень похожа на RRD, но имеет тонкое, но фундаментально важное отличие, необходимое Graphite. Существует две причины создания whisper. Первая причина заключается в том, что RRD разработан с предположением, что данные всегда будут вставляться в базу данных регулярно, и это предположение заставляет RRD вести себя нежелательно, когда ему предоставляются нерегулярные данные. Graphite был создан для облегчения визуализации различных метрик приложений, которые не всегда возникают регулярно, например, когда обрабатывается необычный запрос и задержка измеряется и отправляется в Graphite. Используя RRD, данные помещаются во временную область внутри базы данных, где они недоступны до тех пор, пока текущий интервал времени не закончится *и* в базу данных не будет вставлено другое значение для следующего интервала. Если этого не произойдёт в отведённый срок, исходная точка данных будет перезаписана и потеряна. В настоящее время для некоторых метрик отсутствие значения можно правильно интерпретировать как значение нуля, однако это не относится к метрикам, таким как задержка, потому что ноль указывает, что работа была выполнена за ноль времени, что отличается от того, что работы не было. Предположение о нулевом значении задержки также портит анализ, например, при расчёте средней задержки и т. д.

Вторая причина написания whisper — производительность. RRDtool очень быстрый; на самом деле, он намного быстрее, чем whisper. Но проблема с RRD (на момент написания whisper) заключалась в том, что RRD позволял вставлять только одно значение в базу данных за раз, тогда как whisper был написан, чтобы позволить вставку нескольких точек данных одновременно, объединяя их в одну операцию записи. Это значительно улучшает производительность при высокой нагрузке, так как Graphite работает с множеством файлов, и при таких мелких операциях (запись нескольких байт здесь, несколько там и т. д.) узким местом является *количество операций ввода-вывода*. Рассмотрим сценарий, в котором Graphite получает 100 000 различных значений метрик каждую минуту; чтобы выдержать эту нагрузку, Graphite должен записывать столько же точек данных на диск каждую минуту. Но предположим, что ваша система хранения может обрабатывать только 20 000 операций ввода-вывода в минуту. С RRD (на момент написания whisper) не было никаких шансов на поддержание. Но с whisper мы можем продолжать кешировать входящие данные до тех пор, пока мы не накопим, например, данные за 10 минут для заданной метрики, а затем, вместо того, чтобы выполнять 10 операций ввода-вывода для записи этих 10 точек данных, whisper может сделать это за одну операцию. Причина, по которой я постоянно упоминаю «на момент написания whisper», заключается в том, что RRD теперь поддерживает это поведение. Однако Graphite продолжит использовать whisper, пока существует первая проблема.

Как сообщить о проблемах или запросить новые функции для Graphite?

Пожалуйста, публикуйте все запросы функций или сообщения об ошибках на странице проблем GitHub GitHub Issues.

Этот Graphite связан с рендерингом шрифтов SIL Graphite?

Нет. SIL Graphite совершенно не связан с этим Graphite.

Этот Graphite связан с проектом SourceForge под названием graphite?

Нет. Проект SourceForge под названием graphite совершенно не связан с этим Graphite.

Есть ли диаграмма архитектуры Graphite?

Конечно, есть! Вот она:

_images/overview.png

© 2008–2012 Chris Davis
© 2011–2016 The Graphite Project
Licensed under the Apache License, Version 2.0.
https://graphite.readthedocs.io/en/latest/faq.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API