Spec-Zone.ru › Graphite

Демоны Carbon

Когда мы говорим о «Carbon», мы имеем в виду одного или нескольких демонов, составляющих хранилище данных установки Graphite. В простых установках, как правило, присутствует только один демон, carbon-cache.py. По мере роста установки можно ввести демонов carbon-relay.py и carbon-aggregator.py для распределения нагрузки метрик и выполнения пользовательских агрегаций соответственно.

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

carbon-cache.py

carbon-cache.py принимает метрики через различные протоколы и записывает их на диск максимально эффективно. Это требует кеширования значений метрик в оперативной памяти по мере их получения и сброса их на диск через определённый интервал, используя библиотеку whisper. Также он предоставляет службу запросов для данных точек метрик в оперативной памяти, используемую веб-приложением Graphite для получения «горячих данных».

carbon-cache.py требует некоторых основных файлов конфигурации для работы:

carbon.conf
Раздел [cache] сообщает carbon-cache.py о портах (2003/2004/7002), протоколах (разделенных новой строкой, pickle) и транспорте (TCP/UDP), на которых нужно прослушивать.
storage-schemas.conf
Определяет политику хранения для входящих метрик на основе шаблонов регулярных выражений. Эта политика передаётся библиотеке whisper при предварительном выделении файла .wsp и определяет, как долго данные хранятся.

По мере увеличения числа входящих метрик, одного экземпляра carbon-cache.py может быть недостаточно для обработки нагрузки ввода-вывода. Для масштабирования просто запустите несколько экземпляров carbon-cache.py (на одном или нескольких компьютерах) за carbon-aggregator.py или carbon-relay.py.

Предупреждение

Если клиенты, подключающиеся к carbon-cache.py, сталкиваются с ошибками, такими как отказ в подключении демоном, общей причиной является недостаток дескрипторов файлов.

В файле console.log, если вы обнаружите:

Could not accept new connection (EMFILE)

или

exceptions.IOError: [Errno 24] Too many open files: '/var/lib/graphite/whisper/systems/somehost/something.wsp'

то количество файлов, которые carbon-cache.py может открыть, необходимо увеличить. Многие системы по умолчанию имеют максимальное значение в 1024 дескриптора файла. В зависимости от того, сколько клиентов одновременно подключается к демону carbon-cache.py, может потребоваться значение 8192 или более.

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

carbon-relay.py

carbon-relay.py выполняет две отдельные функции: репликацию и фрагментацию.

При работе с RELAY_METHOD = rules, экземпляр carbon-relay.py может заменить сервер carbon-cache.py и перенаправить все входящие метрики на несколько бэкенд-carbon-cache.py , работающих на разных портах или хостах.

В режиме RELAY_METHOD = consistent-hashing, параметр DESTINATIONS определяет стратегию фрагментации по нескольким бэкенд-carbon-cache.py. Тот же список консистентного хеширования может быть предоставлен веб-приложению Graphite через CARBONLINK_HOSTS для распределения чтений по нескольким бэкендам.

carbon-relay.py настраивается через:

carbon.conf
Раздел [relay] определяет хост/порт прослушивателя и RELAY_METHOD
relay-rules.conf
При установке RELAY_METHOD = rules, кортежи шаблон/серверы в этом файле определяют, какие метрики, соответствующие определённым правилам регулярных выражений, пересылаются на какие хосты.

carbon-aggregator.py

carbon-aggregator.py может выполняться перед carbon-cache.py для буферизации метрик с течением времени перед их передачей в whisper. Это полезно, когда подробное отчётность не требуется и может помочь снизить нагрузку ввода-вывода и размер файлов whisper из-за более низких политик хранения.

carbon-aggregator.py настраивается через:

carbon.conf
Раздел [aggregator] определяет порт прослушивания и назначения хост/порт.
aggregation-rules.conf
Определяет временной интервал (в секундах) и функцию агрегации (сумма или среднее значение) для входящих метрик, соответствующих определённому шаблону. В конце каждого интервала полученные значения агрегируются и публикуются в carbon-cache.py как одна метрика.

carbon-aggregator-cache.py

carbon-aggregator-cache.py объединяет функции carbon-aggregator.py и carbon-cache.py. Это полезно для снижения накладных расходов ресурсов и администрирования при запуске обоих демонов.

carbon-aggregator-cache.py настраивается через:

carbon.conf
Раздел [aggregator-cache] определяет порт прослушивания и назначения хост/порт.
relay-rules.conf
См. раздел carbon-relay.py.
aggregation-rules.conf
См. раздел carbon-aggregator.py.

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

Spec-Zone.ru

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