hostprofi.ru
Подобрать хостинг
Термин·буква G

Graphite

краткое определение

Graphite — open-source система хранения и отображения временных рядов метрик, разработанная в Orbitz в 2006 году. Состоит из трёх компонентов: Carbon (сбор), Whisper (хранение на диске) и Graphite Web (веб-интерфейс). Один из первых популярных инструментов мониторинга метрик.

Graphite — система хранения и визуализации временных рядов метрик, разработанная для мониторинга серверной инфраструктуры и приложений. Принимает числовые метрики в простом текстовом формате через TCP, хранит их в специализированных файлах формата Whisper и предоставляет HTTP API для построения графиков. Graphite заложил основу для последующих TSDB (Time Series Database) и инструментов мониторинга.

Архитектура Graphite

Graphite состоит из трёх компонентов:

  • Carbon — демон приёма метрик. Прослушивает порты TCP 2003 (plaintext), TCP 2004 (Pickle-протокол для batch-записи) и UDP 2003. Поддерживает carbon-cache (одиночный), carbon-relay (маршрутизация между несколькими carbon-cache) и carbon-aggregator (агрегация метрик перед записью).
  • Whisper — файловая база данных метрик в формате, похожем на RRD (Round-Robin Database). Каждая метрика хранится в отдельном файле .wsp. Поддерживает несколько уровней хранения с разной гранулярностью: «каждые 10 секунд — 2 недели; каждую минуту — 3 года».
  • Graphite Web — веб-интерфейс на Django с HTTP API и URL-based построением графиков. URL вида /render?target=servers.web01.cpu&from=-24h&format=png возвращает PNG-изображение графика.

Протокол приёма метрик

Plaintext протокол — простейший способ отправки метрики:

echo "servers.web01.cpu.load 0.65 $(date +%s)" | nc graphite-host 2003

Формат: имя_метрики значение unix_timestamp. Имя метрики — иерархическая строка через точки. Именно эта простота сделала Graphite популярным: любой скрипт, приложение или сетевое устройство отправляет метрики без специальных библиотек.

Whisper: retention и агрегация

Конфигурация Whisper задаётся в storage-schemas.conf:

[servers]
pattern = ^servers\.
retentions = 10s:14d,1m:1y,10m:5y

Три уровня: 10-секундные данные за 14 дней, минутные за год, 10-минутные за 5 лет. При переходе на следующий уровень данные агрегируются (среднее, максимум, сумма — в зависимости от storage-aggregation.conf). Принципиальное ограничение Whisper: размер файла фиксирован при создании — изменить retention без пересоздания файла нельзя.

История

Graphite создан Крисом Дэвисом (Chris Davis) в компании Orbitz (туристический портал) в 2006 году для внутреннего мониторинга. Опубликован как open-source в 2008 году. Получил широкое распространение как первый простой и расширяемый инструмент мониторинга метрик с гибким API. В 2010-х годах Graphite вошёл в состав популярных мониторинговых стеков. С появлением InfluxDB (2013) и Prometheus (2016) Graphite постепенно стал legacy-решением. В 2024 году Graphite обновляется нечасто, поддерживается сообществом.

Graphite vs Prometheus vs InfluxDB

ПараметрGraphitePrometheusInfluxDB
Протокол записиPlaintext TCP/UDPPull (HTTP scrape)Line Protocol (HTTP POST)
ХранениеWhisper-файлыTSDB (локально)TSM-формат
ЗапросыURL-параметрыPromQLFlux / InfluxQL
КластеризацияСложная (carbon-relay)Thanos/CortexInfluxDB Clustered (платный)
Статус (2024)Legacy, поддерживаетсяАктивно развиваетсяАктивно развивается

Применение в хостинге

Graphite актуален для систем, уже работающих на нём: миграция нескольких лет накопленной истории метрик дорога. Совместим со StatsD — агрегатором метрик для приложений: многие языковые SDK по умолчанию умеют отправлять метрики в формате Graphite. Grafana поддерживает Graphite как источник данных наравне с Prometheus и InfluxDB. Для новых серверных проектов на VPS и выделенных серверах в 2024 году рекомендуется Prometheus с node_exporter — проще в настройке, активнее поддерживается и имеет значительно большую экосистему.

Другие термины