Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Проект Graphite

Глава 7 из книги "Архитектура приложений с открытым исходным кодом", том 1.

Оригинал: Graphite, глава из книги "The Architecture of Open Source Applications" том 1.
Автор: Chris Davis
Перевод: Н.Ромоданов

7.3. Клиентская часть: Графики по запросу

Веб-приложение Graphite позволяет пользователям запрашивать различные графики с помощью простого интерфейса API, базирующегося на использовании URL. Параметры графика указываются в строке HTTP-запроса GET, а в ответ возвращается изображение в формате PNG. Например, с помощью URL

http://graphite.example.com/render?target=servers.www01.cpuUsage&
width=500&height=300&from=-24h

делается запрос графика размером 500×300 для метрики servers.www01.cpuUsage с данными за последние 24 часа. В действительности нужно указать только целевой параметр (т. е. только то, что надо отобразить — прим.пер.); остальные параметры являются необязательными и, если их не указывать, то будут использоваться значения, задаваемые по умолчанию.

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

target=movingAverage(servers.www01.cpuUsage,10)

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

Ниже показан еще один пример, в котором приводится промежуточная сумма с нарастающим итогом продаж за день, изображающая поминутное значение метрик для каждого продаваемого продукта:

target=integral(sumSeries(products.*.salesPerMinute))&from=midnight

С помощью функции sumSeries вычисляется временной ряд, являющийся суммой значений каждой метрики, соответствующей образцу products.*.salesPerMinute. Затем с помощью функции integral рассчитывается промежуточная сумму с нарастающим итогом с интервалом в одну минуту. Из этих примеров несложно понять, как можно создать пользовательский веб-интерфейс для просмотра и обработки графиков. Пакет Graphite поставляется с своим собственным конструктором пользовательского интерфейса Composer UI, показанным на рис.7.3, в котором, когда пользователь выбирает из меню имеющиеся возможности, то используется язык JavaScript, который изменяет параметры URL запрашиваемого графика.

Рис.7.3: Внешний вид конструктора интерфейсов пакета Graphite

7.4. Панели управления

С самого своего появления пакет Graphite использовался как инструмент для создания панелей управления на основе веб-интерфейса. Интерфейс URL API делает такое использование вполне естественным. Создать панель управления столь же просто, как добавить теги в HTML-страницу при ее создании, например:

<img src="../http://graphite.example.com/render?parameters-for-my-awesome-graph">

Однако, не всем нравится вручную прописывать адреса URL, поэтому в конструкторе пользовательских интерфейсов пакета Graphite для создания графиков предлагается метод «выбери точку и щелкни», с помощью которого вы можете просто скопировать и вставить адрес URL. Если объединить этот метод с еще одним инструментом для быстрого создания веб-страниц (например, страниц wiki), то это позволит даже не сильно подкованным в техническом смысле пользователям сравнительно легко собирать свои собственные панели управления.


Далее: Очевидное узкое место