Skip to content

Graphite

Graphite — это система мониторинга и графиков, используемая для сбора и визуализации временных рядов данных. Основные компоненты Graphite включают:

  • Carbon (демон, который собирает и записывает данные)
  • Whisper (база данных временных рядов)
  • веб-интерфейс для визуализации данных

Основные команды и примеры

Операторы

sumSeries Сложение (+)

Суммирует значения двух метрик на каждой временной отметке.

alias(sumSeries(metric1, metric2), 'Sum of metric1 and metric2')

subtract Вычитание (-)

Вычисляет разницу между двумя метриками на каждой временной отметке.

alias(subtract(metric1, metric2), 'Difference between metric1 and metric2')

scale Умножение (*)

Умножает значения метрики на заданное число.

alias(scale(metric1, 2), 'metric1 multiplied by 2')

divideSeries Деление (/)

Делит значения одной метрики на значения другой.

alias(divideSeries(metric1, metric2), 'metric1 divided by metric2')

Агрегатные функции

sumSeries

Суммирует значения нескольких метрик на каждой временной отметке.

sumSeries(metric1, metric2, metric3)

averageSeries

Вычисляет среднее значение для каждой временной отметки.

averageSeries(metric1, metric2, metric3)

minSeries

Находит минимальное значение для каждой временной отметки.

minSeries(metric1, metric2, metric3)

maxSeries

Находит максимальное значение для каждой временной отметки.

maxSeries(metric1, metric2, metric3)

Функции для работы с временными интервалами

movingAverage

Вычисляет скользящее среднее для метрики.

movingAverage(metric1, '10min')

movingSum

Вычисляет скользящую сумму для метрики.

movingSum(metric1, '10min')

timeShift

Сдвигает временной ряд на заданный интервал.

timeShift(metric1, '-1h')

Утилиты для метрик

alias

Изменяет отображаемое имя метрики.

alias(metric1, 'New Name for Metric1')

aliasByNode

Задает имя метрики, используя часть ее пути.

aliasByNode(metric1, 2)

color

Изменяет цвет линии на графике.

color(metric1, 'red')

transformNull

Заменяет null значения на заданное значение.

transformNull(metric1, 0)

keepLastValue

Заменяет пропущенные значения последним известным значением.

keepLastValue(metric1)

Функции агрегации и фильтрации

summarize

Агрегирует данные в более крупные интервалы времени.

summarize(metric1, '1hour', 'avg')

limit

Ограничивает количество возвращаемых метрик.

limit(metric1, 5)

sortByMaxima

Сортирует метрики по максимальному значению.

sortByMaxima(metric1, 10)

groupByNode

Группирует метрики по части пути и применяет функцию агрегации.

groupByNode(metric1, 'avg', 2)

sumSeriesWithWildcards

Суммирует метрики, используя подстановочные знаки для указания группы метрик.

sumSeriesWithWildcards(metric1, 2)

Функции для анализа данных

baselineAberration

Определяет аномалии, основываясь на базовом значении.

baselineAberration(metric1, '1day')

anomaly

Определяет аномалии в данных.

anomaly(metric1, 3, 'basic')

Примеры использования функций

Пример 1: Скользящая сумма и переименование метрики

alias(movingSum(metric1, '10min'), '10 Minute Moving Sum')

Пример 2: Агрегация данных и ограничение количества метрик

limit(summarize(metric1, '1hour', 'avg'), 5)

Пример 3: Группировка метрик и их суммирование

groupByNode(sumSeriesWithWildcards(metric1, 2), 'sum', 2)

Пример 4: Сортировка метрик по максимальному значению и переименование

aliasByNode(sortByMaxima(metric1, 10), 2)

Пример 5: Определение аномалий и сохранение последних значений

anomaly(keepLastValue(metric1), 3, 'basic')

Пример готового графика с использованием нескольких функций

&target=alias(movingSum(metric1, '10min'), '10 Minute Moving Sum')&target=limit(summarize(metric2, '1hour', 'avg'), 5)&from=-1day

Этот запрос создаст график, который отображает скользящую сумму метрики metric1 за 10 минут, а также усредненные значения метрики metric2 за каждый час, ограниченные до 5 метрик за последний день.

Заключение

Graphite предоставляет мощный и гибкий синтаксис для работы с временными рядами данных. Используя описанные выше функции и операторы, можно создавать сложные графики, которые помогут в мониторинге и анализе производительности систем.