Сбор метрик для Graphite с помощью Collectd в Ubuntu 14.04

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

Данное руководство поможет установить и настроить collectd, инструмент для сбора статистики системы, который позволяет систематизировать метрики сервера и запущенных сервисов. Collectd может передавать собранные данные инструменту Graphite.

Требования

  • Сервер Ubuntu 14.04.
  • Веб-сервер Apache.
  • Предварительно установленный инструмент Graphite (инструкции по установке – здесь).

Установка collectd

Пакет collectd можно загрузить из стандартного репозитория системы. Обновите индекс пакетов и установите инструмент:

sudo apt-get update
sudo apt-get install collectd collectd-utils

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

Настройка collectd

Откройте конфигурационный файл collectd:

sudo nano /etc/collectd/collectd.conf

Сначала нужно установить имя хоста.

Примечание: Collectd может отправлять данные на удалённый сервер Graphite, но в данном руководстве программы находятся на одном сервере.

Выберите любое имя:

Hostname "graph_host"

Если у вас есть домен, можете пропустить этот параметр и указать свой домен в FQDNLookup.

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

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

В данном руководстве используется следующий список плагинов:

LoadPlugin apache
LoadPlugin cpu
LoadPlugin df
LoadPlugin entropy
LoadPlugin interface
LoadPlugin load
LoadPlugin memory
LoadPlugin processes
LoadPlugin rrdtool
LoadPlugin users
LoadPlugin write_graphite

Вы можете расширить этот список.

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

Во-первых, нужно настроить плагин Apache. Добавьте в его настройки:

<Plugin apache>
<Instance "Graphite">
URL "http://domain_name_or_IP/server-status?auto"
Server "apache"
</Instance>
</Plugin>

В среде производства статистику сервера рекомендуется защитить при помощи аутентификации. Для этого ознакомьтесь с закомментированным кодом в этом разделе файла.

Добавьте настройки для инструмента df, который проверяет свободное пространство диска.

<Plugin df>
Device "/dev/vda"
MountPoint "/"
FSType "ext3"
</Plugin>

Устройство нужно направить на имя диска. Чтобы узнать имя диска, введите в терминал команду:

df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/vda        61796348 1766820  56867416   4% /
none                   4       0         4   0% /sys/fs/cgroup
udev             2013364      12   2013352   1% /dev
tmpfs             404836     340    404496   1% /run
none                5120       0      5120   0% /run/lock
none             2024168       0   2024168   0% /run/shm
none              102400       0    102400   0% /run/user

Выберите сетевой интерфейс, который нужно отслеживать:

<Plugin interface>
Interface "eth0"
IgnoreSelected false
</Plugin>

Теперь нужно настроить плагин Graphite. Этот блок подключит collectd к Graphite. Настройки должны выглядеть примерно так:

<Plugin write_graphite>
<Node "graphing">
Host "localhost"
Port "2003"
Protocol "tcp"
LogSendErrors true
Prefix "collectd."
StoreRates true
AlwaysAppendDS false
EscapeCharacter "_"
</Node>
</Plugin>

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

Чтобы защитить передаваемые данные, используется протокол TCP. Он будет регистрировать ошибки и устанавливать префиксы для данных. Поскольку строка Prefix заканчивается точкой, все статистические данные хоста будут сохраняться в каталог collectd.

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

Настройка Apache

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

Переместите виртуальный хост для Graphite в каталог sites-available:

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

Добавьте в него небольшой блок настроек.

Откройте файл:

sudo nano /etc/apache2/sites-available/apache2-graphite.conf
Alias /content/ /usr/share/graphite-web/static/
<Location "/content/">
SetHandler None
</Location>
<Location "/server-status">
SetHandler server-status
Require all granted
</Location>
ErrorLog ${APACHE_LOG_DIR}/graphite-web_error.log

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

Отключите стандартный виртуальный хост и включите новый хост:

sudo a2dissite 000-default
sudo a2ensite apache2-graphite

Чтобы обновить настройки, перезапустите сервис:

sudo service apache2 reload

Чтобы убедиться, что все работает должным образом, откройте в браузере:

http://domain_name_or_IP/server-status

На экране появится страница Apache Server Status, на которой вы увидите статистику веб-сервера.

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

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

Создайте конфигурационный файл для настройки сохранения метрик.

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

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

В данном руководстве Graphite будет хранить данные за 10 секунд в течение одного дня, данные за минуту в течение недели, а данные за 10 минут – в течение года. Такую политику можно настроить при помощи строк:

[collectd] pattern = ^collectd.*
retentions = 10s:1d,1m:7d,10m:1y

Примечание: Эти строки нужно поместить над политикой по умолчанию. В противном случае программа не будет их выполнять.

Перезапуск сервисов

Теперь программы collectd и Graphite настроены. Чтобы обновить параметры, их нужно перезапустить.

Перезапустите сервис Carbon. Во избежание ошибок в данных вместо команды restart рекомендуется использовать команды stop и start.

sudo service carbon-cache stop
sudo service carbon-cache start

После того как сервис Carbon будет снова запущен, перезапустите collectd.

sudo service collectd stop
sudo service collectd start

После этого посетите домен в браузере. На экране вы увидите график, построенный на основе статистических данных системы.

Заключение

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

Tags: , , ,

Добавить комментарий