Демоны 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