Библиотека сайта 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), то это позволит даже не сильно подкованным в техническом смысле пользователям сравнительно легко собирать свои собственные панели управления.
Далее: Очевидное узкое место