Поиск по сайту:

Как установить и использовать Graphite на сервере Ubuntu 14.04


Введение

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

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

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

В предыдущем руководстве мы рассмотрели Statsd.

Установить графит

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

Раньше графит было довольно сложно установить. К счастью, в Ubuntu 14.04 все необходимые нам компоненты можно найти в репозиториях по умолчанию.

Давайте обновим наш локальный индекс пакетов, а затем установим необходимые пакеты:

sudo apt-get update
sudo apt-get install graphite-web graphite-carbon

Во время установки вас спросят, хотите ли вы, чтобы Carbon удалил файлы базы данных, если вы когда-нибудь решите очистить установку. Выберите «Нет», чтобы не уничтожить свою статистику. Если вам нужно начать заново, вы всегда можете вручную удалить файлы (хранящиеся в var/lib/graphite/whisper).

Когда установка будет завершена, Graphite будет установлен. Однако нам нужно выполнить дополнительную настройку, чтобы все заработало.

Настроить базу данных для Django

Хотя сами данные Graphite обрабатываются Carbon и библиотекой базы данных шепота, веб-приложение является приложением Django Python и должно где-то хранить свои данные.

По умолчанию это настроено на использование файлов базы данных SQLite3. Однако они не так надежны, как полноценная система управления реляционными базами данных, поэтому вместо этого мы будем настраивать наше приложение для использования PostgreSQL. PostgreSQL намного строже относится к типам данных и будет перехватывать исключения, которые могут привести к проблемам в будущем.

Установите компоненты PostgreSQL

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

sudo apt-get install postgresql libpq-dev python-psycopg2

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

Создайте пользователя базы данных и базу данных

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

Мы можем войти в интерактивную подсказку PostgreSQL, используя команду psql от имени системного пользователя postgres:

sudo -u postgres psql

Теперь нам нужно создать учетную запись пользователя базы данных, которую Django будет использовать для работы с нашей базой данных. Мы будем называть пользователя graphite. Выберите безопасный пароль для этого пользователя:

<пред>

Теперь мы можем создать базу данных и предоставить право собственности на нее нашему новому пользователю. Мы также назовем базу данных graphite, чтобы упростить распознавание их ассоциации:

CREATE DATABASE graphite WITH OWNER graphite;

Когда вы закончите, мы можем выйти из сеанса PostgreSQL:

\q

Вы можете увидеть сообщение о том, что Postgres не удалось сохранить историю файла. Для нас это не проблема, поэтому можем продолжать.

Настройка веб-приложения Graphite

Теперь у нас есть база данных и пользователь, готовый к работе. Однако нам все еще нужно изменить настройки Graphite, чтобы использовать компоненты, которые мы только что настроили. Есть также некоторые другие настройки, на которые мы должны обратить внимание.

Откройте файл конфигурации веб-приложения Graphite:

sudo nano /etc/graphite/local_settings.py

Во-первых, мы должны установить секретный ключ, который будет использоваться в качестве соли при создании хэшей. Раскомментируйте параметр SECRET_KEY и измените значение на длинное и уникальное.

<пред>

Далее мы должны указать часовой пояс. Это повлияет на время, отображаемое на наших графиках, поэтому важно установить. Установите часовой пояс, указанный в столбце «TZ» в этом списке.

<пред>

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

USE_REMOTE_USER_AUTHENTICATION = True

Затем найдите определение словаря DATABASES. Мы хотим изменить значения, чтобы они отражали нашу информацию Postgres. Вы должны изменить ключи NAME, ENGINE, USER, PASSWORD и HOST. .

Когда вы закончите, это должно выглядеть примерно так:

<пред>

Области, выделенные красным цветом, — это значения, которые необходимо изменить. Убедитесь, что вы изменили пароль на тот, который вы выбрали для пользователя graphite в Postgres.

Также убедитесь, что вы установили параметр HOST. Если вы оставите это поле пустым, Postgres подумает, что вы пытаетесь подключиться с использованием одноранговой аутентификации, которая в нашем случае не будет правильно аутентифицироваться.

Сохраните и закройте файл, когда закончите.

Синхронизировать базу данных

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

Вы можете сделать это, набрав:

sudo graphite-manage syncdb

Вам будет предложено создать учетную запись суперпользователя для базы данных. Создайте нового пользователя, чтобы вы могли войти в интерфейс. Вы можете называть это как хотите. Это позволит вам сохранить ваши графики и изменить интерфейс.

Настроить углерод

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

Во-первых, давайте разрешим запуск службы углерода при загрузке. Мы можем сделать это, открыв файл конфигурации службы:

sudo nano /etc/default/graphite-carbon

У него есть только один параметр, который определяет, будет ли служба запускаться при загрузке. Измените значение на «истина»:

    CARBON_CACHE_ENABLED=true

Сохраните и закройте файл.

Затем откройте файл конфигурации Carbon:

sudo nano /etc/carbon/carbon.conf

Большая часть этого файла уже настроена правильно для наших целей. Однако мы внесем небольшое изменение.

Включите ротацию журналов, установив для этой директивы значение true:

ENABLE_LOGROTATION = True

Сохраните и закройте файл.

Настройка схем хранения

Теперь откройте файл схемы хранилища. Это сообщает Carbon, как долго хранить значения и насколько подробными должны быть эти значения:

sudo nano /etc/carbon/storage-schemas.conf

Внутри вы найдете записи, которые выглядят так:

<пред>

[по умолчанию_1мин_за_1день]

В настоящее время в файле определены два раздела. Первый предназначен для решения, что делать с данными, поступающими от самого Carbon. Фактически Carbon настроен на хранение некоторых показателей собственной производительности. Нижнее определение — это универсальное определение, предназначенное для применения к любым данным, которые не были сопоставлены с другим разделом. Он определяет политику по умолчанию.

Слова в скобках — это заголовки разделов, которые используются для определения нового определения. В каждом разделе есть определение шаблона и политика хранения.

Определение шаблона — это регулярное выражение, которое используется для сопоставления любой информации, отправляемой в Carbon. Информация, отправляемая в Carbon, включает имя метрики, что и проверяется. В первом примере шаблон проверяет, начинается ли рассматриваемая метрика со строки \carbon..

Политика хранения определяется наборами чисел. Каждый набор состоит из интервала метрик (как часто записывается метрика), за которым следует двоеточие, а затем продолжительность хранения этих значений. Вы можете определить несколько наборов чисел, разделенных запятыми.

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

Перед разделом по умолчанию добавьте еще один раздел для наших тестовых значений. Сделайте так, чтобы это выглядело так:

<пред>

Это будет соответствовать любым метрикам, начинающимся с \test.. Он будет хранить собранные данные три раза с различной степенью детализации. Первое определение архива (10s:10m) будет создавать точку данных каждые десять секунд и хранить значения всего десять минут.

Второй архив (1m:1h) будет создавать точку данных каждую минуту. Он соберет все данные за последнюю минуту (шесть точек, поскольку предыдущий архив создает точку каждые десять секунд) и объединит их для создания точки. По умолчанию он делает это путем усреднения точек, но мы можем изменить это позже. Он хранит данные на этом уровне детализации в течение одного часа.

Последний архив, который будет создан (10m:1d), будет создавать точку данных каждые 10 минут, собирая данные так же, как и второй архив. Он будет хранить данные в течение одного дня.

Когда мы запрашиваем информацию у Graphite, он возвращает информацию из самого подробного архива, который измеряет временные рамки, которые мы запрашиваем. Поэтому, если мы запросим метрики за последние пять минут, будет возвращена информация из первого архива. Если мы запросим график за последние 50 минут, данные будут взяты из второго архива.

Сохраните и закройте файл, когда закончите.

О методах агрегации хранилища

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

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

Хотя это не всегда желательно. Например, если нам нужно общее количество раз, когда событие произошло за разные периоды времени, мы хотели бы сложить точки данных, чтобы создать нашу обобщенную точку данных, а не усреднять их.

Мы можем определить способ агрегирования в файле с именем storage-aggregation.conf. Скопируйте файл из каталога примеров Carbon в наш каталог конфигурации Carbon:

sudo cp /usr/share/doc/graphite-carbon/examples/storage-aggregation.conf.example /etc/carbon/storage-aggregation.conf

Откройте файл в текстовом редакторе:

sudo nano /etc/carbon/storage-aggregation.conf

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

<пред>

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

Параметр XFilesFactor представляет собой интересный параметр, поскольку он позволяет указать минимальный процент значений, который должен иметь Carbon для агрегирования. По умолчанию все значения установлены на 0,5, что означает, что 50 % более подробных точек данных должны быть доступны, если необходимо создать агрегированную точку.

Это можно использовать, чтобы убедиться, что вы не создаете точки данных, которые могут исказить реальную ситуацию. Например, если 70 % ваших данных удаляются из-за проблем с сетью, вы можете не захотеть создавать точку, которая правдиво представляет только 30 % данных.

Далее определяется метод агрегации. Возможные значения: среднее, сумма, последнее, максимальное и минимальное. Они довольно понятны, но очень важны. Выбор неправильного значения приведет к тому, что ваши данные будут записаны неправильным образом. Правильный выбор полностью зависит от метрики, которую вы на самом деле отслеживаете.

Примечание. Важно понимать, что если вы отправляете точки данных Graphite чаще, чем длина самого короткого интервала архивирования, некоторые из ваших данных будут потеряны!

Это связано с тем, что Graphite применяет агрегацию только при переходе от подробных архивов к обобщенным архивам. При создании точки подробных данных она записывает только самые последние данные, отправленные в нее по истечении интервала. Мы обсудим StatsD в другом руководстве, которое поможет решить эту проблему за счет кэширования и агрегирования данных, поступающих через более частые промежутки времени.

Сохраните и закройте файл.

Когда вы закончите, вы можете запустить Carbon, набрав:

sudo service carbon-cache start

Установить и настроить Апач

Чтобы использовать веб-интерфейс, мы собираемся установить и настроить веб-сервер Apache. Graphite включает файлы конфигурации для Apache, так что выбор довольно прост.

Установите компоненты, набрав:

sudo apt-get install apache2 libapache2-mod-wsgi

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

sudo a2dissite 000-default

Затем скопируйте файл виртуального хоста Graphite Apache в каталог доступных сайтов:

sudo cp /usr/share/graphite-web/apache2-graphite.conf /etc/apache2/sites-available

Затем мы можем включить файл виртуального хоста, набрав:

sudo a2ensite apache2-graphite

Перезагрузите сервис, чтобы изменения вступили в силу:

sudo service apache2 reload

Проверка веб-интерфейса

Теперь, когда у нас все настроено, мы можем проверить веб-интерфейс.

В веб-браузере посетите доменное имя или IP-адрес вашего сервера:

<пред>

Вы должны увидеть экран, который выглядит следующим образом:

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

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

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

Сообщения метрик должны содержать имя метрики, значение и отметку времени. Мы можем сделать это в нашем терминале. Давайте создадим значение, которое будет соответствовать нашей схеме хранения test, которую мы создали. Мы также сопоставим одно из определений, которое будет суммировать значения при агрегировании. Мы будем использовать команду date, чтобы сделать нашу метку времени. Тип:

echo "test.count 4 `date +%s`" | nc -q0 127.0.0.1 2003

Если вы обновите страницу, а затем посмотрите на дерево Graphite слева, вы увидите нашу новую тестовую метрику. Отправьте приведенную выше команду несколько раз, ожидая не менее 10 секунд между ними. Помните, что Graphite выбрасывает все значения, кроме последнего, когда в наименьшем интервале отправляется более одного значения.

Теперь в веб-интерфейсе скажите Graphite показать вам последние 8 минут. На графике тестовой метрики нажмите на иконку в виде белого прямоугольника с зеленой стрелкой. Когда вы наведете на него указатель мыши, появится сообщение «Выбрать последние данные»:

Выберите 8 минут во всплывающем окне. Нажмите на значок с надписью «Обновить график», чтобы получить самые последние данные. Вы должны увидеть график практически без информации. Это потому, что вы отправили ему только несколько значений, каждое из которых равно «4», поэтому он не имеет вариаций.

Однако, если вы посмотрите график за последние 15 минут (при условии, что вы отправляли команду несколько раз с промежутком более 10 секунд, но менее одной минуты), вы должны увидеть нечто иное:

Это связано с тем, что наш первый архив не сохраняет данные в течение пятнадцати минут, поэтому Graphite ищет данные рендеринга во втором архиве. Это выглядит иначе, потому что мы отправили Graphite метрику «количество», которая соответствует одному из наших определений агрегации.

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

Заключение

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

В следующем руководстве мы обсудим, как настроить StatsD с помощью Graphite и как более подробно использовать интерфейс Graphite.

Джастин Эллингвуд