Graphite что это за программа

Graphite — это приложение, которое здорово делает три вещи:

  1. принимает данные мониторинга от сторонних агентов,
  2. сохраняет их в базу, и
  3. показывает эти данные в виде графиков и дашбордов через веб-приложение

Изнутри Graphite состоит из трёх относительно независимых компонентов:

  1. Carbon — сервис, который принимает данные от других;
  2. Whisper — циклическая база данных;
  3. Graphite-web — веб-интерфейс с графиками, свистелками и прочими полезностями.

Установка

Есть много способов, как заполучить Graphite себе на хост. Но самый простой, как это обычно бывает, — через пакетный менеджер: apt — get install graphite — web graphite — carbon .

Только просто установкой отделаться не получиться. Чтобы Graphite запустился, нужно еще поколдовать над конфигурацией:

  1. Создать базу данных для Graphite-web
  2. Настроить Carbon
  3. Установить и настроить веб-сервер.

Создаём базу данных для Graphite-web

Так как Graphite-web — полноценное веб-приложение с аутентификацией, пользователями и прочими сохраняемыми бесполезностями, ему нужна собственная база данных. Подойдёт MySQL, PostgreSQL, или SQLite. SQLite включён по умолчанию, так что можно избавить себя от ковыряния в конфигурационных файлах и остановиться на нём.

Мониторинг исключений с помощью Graphite и Grafana. // Курс «Symfony Framework»

У Графита есть syncdb команда, которая создаст базу, но скорее одной командой не обойдёшься. Ведь создадим-то мы базу под своим аккаунтом, а работать с ней будет веб-сервер через свой собственный, и наверняка с правами только на чтение. Можно поступить рабоче-крестьянски и просто дать права на запись всем подряд. В итоге мы имеем такую команду, которая всё сделает:

graphite — manage syncdb
chmod a + w / var / lib / graphite / graphite .db

Настраиваем Carbon

Carbon состоит из нескольких мелких демонов, каждый из которых решает собственный кусок большой задачи. Чтобы Карбон мог просто получать данные и просто передавать из дальше, хватит одного: carbon-cache.

Сначала его нужно включить. Это легко устроить, заменив false на true в / etc / default / graphite — carbon :

CARBON_CACHE_ENABLED = true

Затем демона нужно запустить (слышал бы меня сейчас кто-нибудь из впечатлительных родственников):

Читайте также:
Фоновые программы что это

service carbon — cache start

Карбон должен восстать.

Устанавливаем и настраиваем веб-сервер

В Graphite-app нет собственного веб-сервера, так что придётся кого-нибудь установить. Apache с WSGI модулем вполне подойдёт (без WSGI Django-приложение запустить будет проблематично):

apt — get install apache2 libapache2 — mod — wsgi

По-умолчанию Apache устанавливается с лучшим из приложений — «It works!», которое мы, как трезвые и прагматичные люди, должны заменить на что-нибудь более практичное. Например, Graphite. К счастью, сделать это достаточно легко:

Enable graphite-web
a2dissite 000 — default
ln — s / usr / share / graphite — web / apache2 — graphite .conf / etc / apache2 / sites — available
a2ensite apache2 — graphite
service apache2 restart

Смотрим данные

Если боги программирования не скривились от частого упоминания слова «демон» и не забанили 127.0.0.1, то на нём будет висеть такой замечательный сайтик:

Graphite modeling tools.3ds max.ч 1

graphite-default

С левой стороны будет дерево со сгруппированными источниками данных. Графит собирает метрики и с самого себя, так что даже после чистой установки там уже будет что-то. Ну или не сразу, а через пару минут. Если кликнуть на пару-тройку элементов дерева, то получится вот такая абстрактная красота:

graphite-web

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

graphite-dashboard

Что вообще круто, у Графита есть Render URL API. Это значит, что можно собрать специальный URL с именем источника данных, цветами, датами, и получить PNG, PDF или SVG график в ответ. Можно и что-нибудь более текстовое запросить, например JSON или CSV. Усредненный URL будет похож на что-нибудь вроде http : // 127.0.0.1 / render ? target = collectd . * .cpu -* .cpu — system .

Наконец, в Graphite-web есть концепция событий. Если ваши релизы выходят одновременно с новыми багами и утечками памяти, то релиз — это событие, которое можно зарегистрировать (даже программно) в Графите, и увидеть в виде вертикальной черты на том же графике состояния памяти. Под событие, в общем-то, подходит всё, что душе угодно. Была бы дата. Коммиты, исключения, рассылки писем «у нас завтра распродажа» — всё сойдёт.

Скармливаем данные

Graphite не занимается сбором метрик самостоятельно. Принять и сохранить — это да, легко. Но собирать должны другие.

Читайте также:
Autoruns что это за программа и нужна ли она

«Других», впрочем, пруд пруди.

Источники данных

Во-первых, наш старый друг и товарищ, collectd, может писать собранные данные прямиком в Графит через write_graphite плагин. Есть и другие агенты, например, Carbonator Windows Service или ssc serv.

Во-вторых, Carbon может подключиться к AMQP-совместимой очереди сообщений, вроде RabbitMQ или ActiveMQ, и получать данные оттуда.

Наконец, данные в Графит можно отправить напрямую через космос командную строку, например, через netcat:

Plaintext protocol
echo «hostname.cpu.cpu-total 100 `date +%s`» | nc — q0 127.0.0.1 2003

Пре/пост обработка данных

Пытливый ум может задаться вопросом: «а с какого Рузвельта им пришлось создавать отдельный Carbon-сервис, если с задачей взять-и-сохранить данные справилась бы и сама база?». Оказывается, Карбон умеет больше, чем просто носить данные из угла в угол.

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

К тому же он может и обработать входящие данные прежде, чем положить их в базу. Например, 4х ядерный процессор моего Dell порождает аж 8 потоков метрик (Hyper-Threading, туды его в качель). А мне, может, хватило бы и одного усреднённого показателя загрузки. Карбон может устроить.

Я мог бы продолжить про возможность переписывать имена метрик на лету, или хранить списки разрешённых/запрещенных потоков данных, но смысл моего послания, наверное, уже понятен — Carbon нужен людям.

Хранение данных

Все данные, что стекаются в Карбон, после фильтрации, агрегирования и переименований оседает в базе данных — Whisper. На самом деле, можно выбрать другую базу, например Ceres, InfluxDB, или что-нибудь более живучее, построенное поверх Cassandra или HBase, но Whisper идёт в комплекте.

Whisper очень, очень, очень похож на RRDtool. Те же файлы-хранилища, тот же фиксированный размер, и даже концепция архивов похожа. Только медленнее всё. Поэтому, как и с Carbon, его можно спросить: «зачем ты существуешь?».

Ну, Whisper умеет сохранять данные через нерегулярные промежутки времени, с rrdtool — нет. На сегодняшний день это, кажется, единственная причина.

Как и rrdtool, Whisper умеет сохранять данные по архивам с разными временными рамками и разной точностью. В rrdtool определение архива включало и какой промежуток времени он покрывает, и как именно агрегировать в нём данные (например, RRA : AVERAGE : 0.5 : 10 : 60 ). А в Whisper время и агрегация — разные вещи: первое идёт в storage-schemas.conf файл, а второе — в storage-aggregation.conf.

Читайте также:
Foxit reader для чего нужна эта программа

storage-schemas.conf обладает прекрасным в своей простоте синтаксисом. Вот пример всего одной из его потенциально многочисленных секций:

Источник: dotsandbrackets.com

Измеряем самое важное: Graphite

Каждый раз, когда речь идет о разработке и внедрении новой функциональности в вашем продукте, нужно измерять результат действий. Отсутствует количественная метрика? Отсутствует понимание эффективности. Улучшились ли показатели, изменилась ли конверсия, есть ли выручка, повысилась ли скорость работы? Заработали ли вы вообще на новой фиче либо только потерпели убытки?

Для всего этого и существует мониторинг приложений.

Инструментов для мониторинга сегодня очень много. В этой короткой заметке скажем пару слов лишь про один из таких инструментов — Graphite.

1-1801-e7d402.png

Graphite

Graphite представляет собой инструмент, написанный на Python. Разрабатывать его начали довольно давно — в 2008 году.

Graphite включает в себя 3 независимых блока:

  1. Carbon — это демон, принимающий входящие данные от приложений.
  2. Whisper — представляет собой простенькую БД, где статистика агрегируется и раскладывается по определенным правилам.
  3. Graphite — это уже непосредственно web-приложение, которое отрисовывает статистику в специальном интерфейсе. Честно говоря, этот интерфейс является слегка устаревшим, а также не очень гибким и тяжеловесным.

24_02_19_2_1-1801-bd7e13.jpg

Но несмотря на все плюсы и минусы, Graphite, в целом, представляет собой довольно надежное решение. Да, медленное, несмотря на использование Python. Да, возможно, не слишком красивое. Зато инструмент прост в настройке и содержит в себе, по сути, все необходимое как для сбора, так и для анализа метрик проекта. К тому же, это решение довольно неплохо себя зарекомендовало на практике.

Статья подготовлена по материалам блога MCS.Mail.ru.

Источник: otus.ru

Graphite

Graphite — это масштабируемая графическая система реального времени. Это инструмент мониторинга масштаба предприятия, который хорошо работает на дешевом оборудовании. Приложение, которое собирает числовые данные временных рядов и отправляете их в обработчик Graphite, carbon , который хранит данные в специализированной базе данных Graphite. Затем данные можно визуализировать через веб-интерфейсы графита

Мониторинг систем

Сравнение Graphite и похожих решений

Рассмотрим плюсы и минусы, преимущества Graphite относительно других решений

Источник: bizzapps.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru