Graphite — это система агрегации данных и отображения графиков в реальном времени.

Collectd - это программа , которая собирает системную информацию и предоставляет механизм хранения и мониторинга значений. В нашей схеме Collectd будет периодически собирать информацию о системе, отсылать ее в Graphite для хранения и визуализации. 1)

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

Graphite состоит из 3 компонентов:

graphite - приложение и web-интерфейс

carbon - демон, в который пишутся метрики

whisper - движок баз данных, используется carbon

Устанавливаем пакет graphite-web:

sudo apt-get install graphite-web

Устанавливаем пакет graphite-carbon:

sudo apt-get install graphite-carbon

Whisper установится как зависимость.

Редактируем:

sudo nano /etc/graphite/local_settings.py
SECRET_KEY = 'ranDomvALuE' - вводим случайное значение 
TIME_ZONE = 'Europe/Moscow' - вводим свой часовой пояс

Создаем базу Graphite:

sudo -u _graphite graphite-manage syncdb --noinput

Включаем автозагрузку carbon:

sudo nano /etc/default/graphite-carbon
CARBON_CACHE_ENABLED=true

Настаиваем сохранение метрик:

sudo nano /etc/carbon/storage-schemas.conf
[collectd]
priority = 100
pattern =^collectd\.*
retentions = 60s:7d,10m:2y # точность сохранения метрик. метрики с минутной точностью хранятся - неделю, с 10-минутной - год.

Запускаем carbon:

sudo service carbon-cache start

Устанавливаем nginx:

sudo apt-get install nginx

Приводим файл default к данному виду:

sudo nano /etc/nginx/sites-enabled/default
server {
           listen 80;
           root /usr/share/graphite-web/;
           error_log  /var/log/nginx/error.log;

           location / {
                uwsgi_pass  127.0.0.1:3031;
                include uwsgi_params;
   }
}

Устанавливаем uwsgi:

sudo apt-get install uwsgi uwsgi-plugin-python

Создаем файл с таким содержанием:

sudo nano /etc/uwsgi/apps-enabled/grafite.ini
[uwsgi]
processes = 2
socket = 127.0.0.1:3031
gid = _graphite
uid = _graphite
wsgi-file = /usr/share/graphite-web/graphite.wsgi

Перезапускаем приложения:

sudo service nginx restart
sudo service uwsgi restart

Проверяем работу graphite, переходим по адресу http://graphite_ip_address

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

Устанавливаем collectd:

sudo apt-get install collectd

Включаем плагин graphite:

sudo nano /etc/collectd/collectd.conf

Раскомментироваем строку LoadPlugin write_graphite и далее в файле:

<Plugin write_graphite>
       <Node "example">
                Host "localhost"  
                Port "2003"
                Protocol "tcp" # адрес, порт и протокол для "связи" с graphite
                LogSendErrors true # логировать ошибки отправки данных
                Prefix "collectd" # добавление префикса к метрике
#               Postfix "collectd"
                StoreRates true
#               AlwaysAppendDS false
                EscapeCharacter "_"
       </Node>
</Plugin>

Перезапускаем collectd:

sudo service collectd restart

И через некоторое время данные появятся в graphite

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

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

Например, Grafana.

Устанавливаем Grafana:

cd /usr/share
Скачиваем и извлекаем из архива:
sudo wget http://grafanarel.s3.amazonaws.com/grafana-1.8.0.zip
sudo unzip grafana-1.8.0.zip
sudo rm grafana-1.8.0.zip
cd grafana-1.8.0

Создаем и редактируем config.js:

sudo mv config.sample.js config.js
sudo nano config.js
graphiteUrl: "http://graphite.name_or_ip",

Создаем и редактируем файл конфигурации для nginx:

sudo nano /etc/nginx/sites-enabled/grafana
server {
    listen 8090;
    root   /usr/share/grafana-1.8.0;
    index  index.html index.htm;

    location / {
                try_files $uri $uri/ /index.html;
      }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

}

Включаем CORS:

sudo nano /etc/nginx/sites-enabled/default

В секцию location добавляем строки:

add_header Access-Control-Allow-Origin "*";
add_header Access-Control-Allow-Methods "GET,OPTIONS";

Перезапускаем nginx:

sudo service nginx restart

Открываем в браузере http://your_ip:8090

1)
Все действия будем производить на ubuntu 14.04