Graphite — это масштабируемая графическая система в реальном времени и инструмент мониторинга корпоративного уровня. Используется для сбора информации о веб-сайте в режиме реального времени и ведения статистики, а также может собирать различную информацию о рабочем состоянии служб веб-сайта.
Кому следует использовать Графит?
Любой, кто хочет отслеживать любое числовое значение в долгосрочной перспективе. Если у вас есть число, которое может меняться со временем, и вы, возможно, захотите отобразить это значение в виде графика, то Graphite может удовлетворить ваши потребности.
В частности, Graphite предназначен для обработки числовых данных временных рядов. Например, Graphite отлично подходит для построения графиков цен на акции, поскольку это числа, которые меняются со временем. Будь то несколько точек данных или десятки показателей производительности с тысяч серверов, Graphite для вас. В качестве бонуса вам не нужно заранее знать имена этих вещей (кто захочет поддерживать такую огромную конфигурацию?); вы просто отправляете имя метрики, метку времени и значение, а Graphite делает все остальное.
Насколько масштабируемый графит?
С точки зрения процессора, Graphite масштабируется горизонтально как на клиентской, так и на внутренней стороне, что означает, что вы можете просто добавить больше компьютеров, чтобы получить большую пропускную способность. Он также отказоустойчив, т. е. потеря серверной машины приведет к минимальной потере данных (независимо от того, что эта машина кэширует в памяти) и не нарушит работу системы, если у вас достаточно оставшейся мощности для обработки нагрузки.
С точки зрения ввода-вывода, под нагрузкой Graphite очень быстро выполняет множество крошечных операций ввода-вывода над множеством разных файлов. Это связано с тем, что каждая метрика, отправляемая в Graphite, хранится в отдельном файле базы данных, аналогично тому, как работают многие инструменты, созданные на основе RRD (draw, Cacti, Centreon и т. д.). Фактически, Graphite изначально использовал RRD для хранения, пока не возникли фундаментальные ограничения, требующие нового механизма хранения.
Высокая емкость (тысячи различных показателей, обновляемых в минуту) практически требует хорошего RAID-массива и/или твердотельного накопителя. Если диск не справляется с большим количеством небольших операций записи (всего несколько байт на точку данных, но большинство стандартных дисков не могут обрабатывать более нескольких тысяч операций ввода-вывода в секунду, даже если они small), серверная часть Graphite. Входящие данные будут кэшироваться. Когда это происходит, механизм базы данных Graphite шепчет, позволяя Carbon записывать несколько точек данных одновременно, тем самым увеличивая общую пропускную способность за счет кэширования избыточных данных в памяти до тех пор, пока они не будут записаны.
Graphite также поддерживает альтернативные серверные части хранилища, которые могут существенно изменить эти функции.
Насколько график соответствует реальному времени?
Очень реальное время. Даже при большой нагрузке, когда количество входящих метрик за интервал времени намного превышает скорость, с которой система хранения может выполнять операции ввода-вывода, а в конвейере хранилища кэшируется большое количество точек данных (см. объяснение предыдущего вопроса). ) , Graphite по-прежнему может рисовать графики в реальном времени. Хитрость в том, что когда веб-приложение Graphite получает запрос на рисование графика, оно извлекает данные с диска, а также из кеша предварительного хранения (кэш может быть распределенным, если у вас несколько внутренних серверов) и объединяет два источника данных. В сочетании для создания графика в реальном времени.
Кто уже использует Графит?
Graphite был разработан внутри компании Orbitz и используется для визуализации различных ключевых операционных данных, включая показатели приложений, показатели базы данных, продажи и многое другое. На момент написания этой статьи производственная система Orbitz могла обрабатывать примерно 160 000 различных метрик в минуту, работая на двух серверах niagra-2 Sun в высокоскоростной сети SAN.
На чем написан Графит?
Веб-приложение Graphite построено на веб-фреймворке Django и использует набор инструментов графического пользовательского интерфейса JavaScript ExtJS. Рендеринг графики осуществляется с использованием графической библиотеки Cairo. Серверная часть и база данных написаны на чистом Python.
Кто будет писать и поддерживать Graphite?
Графит был первоначально разработан Крисом Дэвисом из Orbitz. Orbitz уже давно является частью сообщества открытого исходного кода и выпустила ряд других продуктов собственной разработки.
В настоящее время Graphite разрабатывается командой волонтеров организации Graphite-Project GitHub.