Установка и настройка связки Grafana, Graphite, Carbon, Collectd на Debian и Ubuntu

В данной инструкции описан процесс установки и настройки дашборда Grafana на виртуальный сервер под управлением операционной системы Debian или Ubuntu.

Что это такое?

Graphite - это инструмент мониторинга, который хорошо зарекомендовал себя в системах с ограниченными ресурсами. Он хранит числовые данные временных рядов и предоставляет графики этих данных по запросу. Это руководство содержит введение в установку и базовую настройку Graphite вместе с популярным открытым исходным кодом Grafana для визуализации крупномасштабных данных измерений на Ubuntu.

Collectd - собирает метрики о вашей системе.

Первоначальные требования

Все действия в данной инструкции выполняются от имени пользователя graphite с правами суперпользователя.

Для настройки и корректной работы дашборда необходимо создать нового пользователя с именем graphite:

adduser graphite

Добавим созданного пользователя в группу sudo:

usermod -aG sudo graphite

Установка Apache, Python Tools и Graphite

Установите системные пакеты, необходимые для работы с Graphite:

sudo apt-get install build-essential graphite-web graphite-carbon python-dev apache2 libapache2-mod-wsgi libpq-dev python-psycopg2

Во время установки graphite-carbon вас спросят, хотите ли вы удалить файлы базы данных whisper, при удалении Graphite со своего сервера. Ответьте No на этот вопрос. Вы всегда можете удалить файлы позже (они находятся в /var/lib/graphite/whisper).

Настройка Carbon

Для работы с метриками необходимо настроить специальный блок с глубиной их хранения в конфигурационном файле Carbon storage-schemas.conf. С помощью текстового редактора, например vi, откройте файл для редактирования:

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

Добавьте следующие строки:

[collectd]
priority = 100
pattern =^collectd\.*
retentions = 60s:7d,10m:2y

В блоке collectd время хранения retentions будет сохранять данные каждые 60 секунд в течение 7 дней и отдельный набор данных из этого агрегированного образца каждые 10 минут в течение 2 лет.

Примечание: дополнительные сведения о настройке хранилища Carbon смотрите в разделе storage-schemas.conf в документации Graphite.

Разрешите запускать при загрузке кеш Carbon. С помощью текстового редактора, например vi, откройте файл для редактирования:

sudo vi /etc/default/graphite-carbon

Измените значение следующего параметра на TRUE:

CARBON_CACHE_ENABLED=true

Запустите сервис carbon-cache:

sudo service carbon-cache start

Установка и настройка PostgreSQL

Установите PostgreSQL для веб-приложения Graphite:

sudo apt-get install postgresql

Перейдите к пользователю postgres и создайте пользователя базы данных для Graphite:

sudo su - postgres
createuser graphite --pwprompt

Далее вам будет необходимо указать пароль для нового пользователя базы данных. После этого создайте базы данных graphite и grafana для пользователя graphite:

createdb -O graphite graphite
createdb -O graphite grafana

Закончив настройку баз данных PostgreSQL, вернитесь к пользователю graphite:

su - graphite

Настройка Graphite

Откройте файл для редактирования:

sudo vi /etc/graphite/local_settings.py

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

DATABASES = {
'default': {
'NAME': 'graphite',
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'USER': 'graphite',
'PASSWORD': 'пароль',
'HOST': '127.0.0.1',
'PORT': ''
}
}

Также добавьте следующие строки в конец файла:

TIME_ZONE = 'Europe/Moscow'
SECRET_KEY = 'somelonganduniquesecretstring'

Примечания:
TIME_ZONE - если ваша временная зона отличается, то вы можете узнать ее с помощью следующей команды: timedatectl;
SECRET_KEY - длинная и уникальная строка, используемая при хешировании паролей.

Для открытия порта выполните следующую команду:

sudo iptables -A INPUT -p tcp --dport 5432 -j ACCEPT
sudo iptables-save

Перезапустите СУБД:

sudo service postgresql restart

Так же выполните следующие 2 команды для избежания ошибок:

python /usr/lib/python2.7/dist-packages/graphite/manage.py migrate auth
python /usr/lib/python2.7/dist-packages/graphite/manage.py migrate

Выполним инициализацию баз данных:

sudo graphite-manage syncdb

На этом шаге может потребоваться ввести информацию о пользователе Django.

Настройка Apache

Скопируйте шаблон конфигурации Apache для Graphite в доступный каталог Apache:

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

С помощью текстового редактора, например vi, откройте файл для редактирования:

sudo vi /etc/apache2/sites-available/apache2-graphite.conf

Измените порт Graphite c 80 на 8080 (порт 80 будет использоваться для Grafana):

<VirtualHost *:8080>

Убедитесь, что Apache прослушивает порт 8080. С помощью текстового редактора, например vi, откройте файл для редактирования:

sudo vi /etc/apache2/ports.conf

Добавьте “Listen 8080” после строки “Listen 80” в открытый файл: Listen 80
Listen 8080

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

Отключите сайт Apache по умолчанию, чтобы избежать конфликты:

sudo a2dissite 000-default

Включите виртуальный сайт Graphite:

sudo a2ensite apache2-graphite

Перезагрузите Apache, чтобы применить изменения:

sudo service apache2 reload

Установка и настройка Grafana

На момент написания инструкции последняя стабильная версия Grafana 4.6.3. Подключитесь к виртуальному серверу и для установки выполните следующие команды:

wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana_4.6.3_amd64.deb
sudo apt-get install -y adduser libfontconfig
sudo dpkg -i grafana_4.6.3_amd64.deb

Запустите Grafana с помощью следующей команды:

sudo service grafana-server start

В результате в системе появится процесс grafana-server принадлежащий пользователю grafana, который был создан во время установки пакета.

Для открытия порта выполните следующую команду:

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables-save

Настройте Grafana для использования базы данных PostgreSQL, созданной ранее.

С помощью текстового редактора, например vi, откройте файл для редактирования:

sudo vi /etc/grafana/grafana.ini

В блоке [database] укажите тип базы данных, имя базы данных, пользователя graphite и его пароль:

[database]
type = postgres
host = 127.0.0.1:5432
name = grafana
user = graphite
password = <пароль для пользователя graphite>

В блоке [server] укажите следующие значения:

[server]
protocol = http
http_addr = 127.0.0.1
http_port = 3000
domain = localhost
enforce_domain = true
root_url = %(protocol)s://%(domain)s/

В блоке [admin] укажите логин администратора и пароль:

[security]
admin_user = admin
admin_password = <пароль>
secret_key = somelongrandomstringkey

Включить прокси-модули для работы Apache:

sudo a2enmod proxy proxy_http xml2enc

Создайте файл конфигурации сайта Apache для прокси-запросов в Grafana:

sudo vi /etc/apache2/sites-available/apache2-grafana.conf

Вставьте следующие строки. Не забудьте указать ваш внешний ip-адрес или домен:

<VirtualHost *:80>
ProxyPreserveHost On
ProxyPass / http://<ip-адрес>:3000/
ProxyPassReverse / http://<ip-адрес>:3000/
ServerName <ip-адрес или домен>
</VirtualHost>

Включите конфигурацию сайта Grafana:

sudo a2ensite apache2-grafana

Настройте Grafana для запуска после загрузки, а затем запустите службу:

sudo update-rc.d grafana-server defaults 95 10
sudo service grafana-server start

Перезапустите Apache для загрузки новых модулей и изменений конфигурации:

sudo service apache2 restart

Теперь вы можете открыть веб-приложение Grafana в браузере по адресу:

<ip-адрес>:80

Установка и настройка Collectd

Для установки collectd выполните следующую команду:

sudo apt-get install collectd collectd-utils

После установки остановите сервис:

sudo service collectd stop

Внесем изменения в конфигурационный файл collectd. С помощью текстового редактора, например vi, откройте файл для редактирования:

sudo vi /etc/collectd/collectd.conf

Раскомментируйте в файле следующее значение:

Hostname "localhost"

Также необходимо раскоментировать следующий модуль:

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

Запустие collectd:

sudo service collectd restart

Добавление графиков в веб-интерфейсе

Откройте веб-приложение Grafana в браузере по адресу:

<ip-адрес>:80

Войдите в Grafana, используя учетные данные администратора, указанные вами в grafana.ini выше.

В вертикальном меню Grafana выберете Data Sources. В открывшемся окне нажмите на кнопку Add data sources.

В поле Name введите любое удобное для вас название, в качестве Type выберете Graphite. В поле URL вставьте строку следующего формата: http://localhost:8080

Далее в вертикальном меню выберете Dashboards->New. В новом окне выберете Graph. Наведите на название графика и нажмите кнопку Edit. В разделе Metrics найдите нужный вам источник данных (с помощью двойных щелчков мыши). В результате вы увидите подобный график.

На этом настройка связки закончена.

Последнее обновление: 13.02.2019