Установка связки Carbon + Graphite + Grafana + Nginx + MySQL для сбора и отображения метрик в Ubuntu

в 15:15, , рубрики: carbon, Grafana, graphite, mysql, nginx

Хочу поделиться опытом установки и настройки сервиса для сбора и отображения метрик Graphite + Grafana.
Искал долго, читал много, нашёл 2 статьи на английском, добавил своё, в итоге получилась данная статья.

Немного предыстории..

Graphite — система для отображения метрик (числовых значений) для любых свойств сервера или домашнего ПК.

Carbon — демон/бэкенд, в который пишутся метрики.

Grafana — более красивая и удобная Web-морда для Graphite.

И так, приступим.

Установка и настройка Php + Nginx + MySQL

Установка Php + Nginx + MySQL

Тут всё довольно просто.

sudo apt install php5-fpm php5-json php5-mysqli
sudo apt install nginx nginx-extras
sudo apt install mysql-server

Во время установки будет запрос пароля для root-пользователя MySQL.

Установка phpMyAdmin

Для более удобного доступа у базам данных MySQL установим phpMyAdmin.

Скачиваем отсюда последнюю версию

cd /usr/share/
sudo wget https://files.phpmyadmin.net/phpMyAdmin/4.6.2/phpMyAdmin-4.6.2-all-languages.zip
sudo unzip phpMyAdmin-4.6.2-all-languages.zip
sudo rm phpMyAdmin-4.6.2-all-languages.zip
sudo mv phpMyAdmin-4.6.2-all-languages phpmyadmin

Настраиваем Nginx для phpMyAdmin

В файл настроек /etc/nginx/conf.d/pma.conf пишем следующее:

server {
 server_name pma.your.site;
 listen 80;
   location / {
       root /usr/share/phpmyadmin/;
       index index.php index.html index.htm;
       location ~ ^/(.+.php)$ {
          try_files $uri =404;
          root /usr/share/phpmyadmin/;
          fastcgi_pass unix:/var/run/php5-fpm.sock;
          fastcgi_index index.php;
          fastcgi_param SCRIPT_FILENAME $request_filename;
          include /etc/nginx/fastcgi_params;
       }
       location ~* ^/(.+.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
           root /usr/share/phpmyadmin/;
       }
    }
}

И перезапускаем Nginx

sudo service nginx restart

Предварительные настройки MySQL

Заходим по адресу pma.your.site, который Вы прописали в настройках выше, авторизируемся под root пользователем с тем паролем, который Вы установили во время установки MySQL.

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

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

Установка Graphite + Carbon

Тут тоже всё довольно просто:

sudo apt-get install graphite-web graphite-carbon

Настройка Graphite

Редактируем файл конфигурации /etc/graphite/local_settings.py.

SECRET_KEY = 'MY NICE RANDOM SALT'
TIME_ZONE = 'UTC'
USE_REMOTE_USER_AUTHENTICATION = True
DATABASES = {
    'default': {
        'NAME': 'graphite',
        'ENGINE': 'django.db.backends.mysql',
        'USER': 'graphite',
        'PASSWORD': 'mypassword',
        'HOST': '127.0.0.1',
        'PORT': ''
    }
}

Синхронизация базу данных

Синхронизируем базу данных следующей командой

sudo graphite-manage syncdb

Настройка Carbon

Редактируем следующие файлы конфигурации

/etc/default/graphite-carbon

CARBON_CACHE_ENABLED = true

/etc/carbon/carbon.conf

ENABLE_LOGROTATION = True

Копируем стандартные настройки агрегации хранилища

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

И перезапускаем Carbon

sudo service carbon-cache start

Установка uWSGI

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

  sudo apt-get install python-dev
  sudo pip install uwsgi

Если в Вашей системе не установлен pip — устанавливаем его

sudo apt-get install python-pip

И выполняем команды выше.

Копируем стандартный файл конфигурации

sudo cp /usr/share/graphite-web/graphite.wsgi /usr/share/graphite-web/graphite_wsgi.py

Создаём файл конфигурации:

sudo nano  /etc/init/uwsgi-graphite.conf

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

  env UWSGI_BIN=/usr/local/bin/uwsgi
  env PYTHONPATH=/usr/share/graphite-web

  expect fork
  umask 0000

  start on runlevel [2345]
  stop on runlevel [!2345]

  script
    exec $UWSGI_BIN --socket /var/run/graphite.sock --master --need-app 
    --catch-exceptions --reload-on-exception --pp $PYTHONPATH 
    -w graphite_wsgi:application --buffer-size 32768 -p 4 -O 2 >>/var/log/graphite.log 2>&1 &
  end script

И запускаем Graphite

sudo service uwsgi-graphite start

Настройка Nginx для Graphite

Редактируем файл конфигурации /etc/nginx/conf.d/graphite.conf

server {
  server_name graphite.your.site;
  listen 80;
  access_log /var/log/nginx/graphite.access.log;
  error_log  /var/log/nginx/graphite.error.log;
  root /usr/share/graphite-web;
  location = /favicon.ico {
    return 204;
  }
  location /content {
    alias /usr/share/graphite-web/static;
    expires max;
  }
  location / {
    uwsgi_pass unix:/var/run/graphite.sock;
    include uwsgi_params;
  }
}

Перезапускаем Nginx и переходим по адресу graphite.your.site

Так выглядит Graphite

Тестирование Graphite

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

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

Ну или запустить цикл:

for i in 4 6 8 16 2; do echo "test.count $i `date +%s`" | nc -q0 127.0.0.1 2003; sleep 6; done

Теперь в Graphite модно наблюдать следующее:

Так выглядит Graphite

Установка и настройка красивой Web-морды Grafana

Установка Grafana

Так выглядят графики в Grafana

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

echo 'deb https://packagecloud.io/grafana/stable/debian/ wheezy main' |  sudo tee -a /etc/apt/sources.list
curl https://packagecloud.io/gpg.key | sudo apt-key add -
sudo apt-get update
sudo apt-get install grafana

Настройка MySQL для Grafana

Создадим в MySQL базу данных grafana и дадим все привилегии на неё пользователю graphite, которого мы создали ранее.

Редактируем файл конфигурации /etc/grafana/grafana.ini

[database]
type = mysql
host = 127.0.0.1:5432
name = grafana
user = graphite
password = mypassword

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

[security]
admin_user = admin #Имя пользователя-администратора
admin_password = your_secure_password # Пароль пользователя-администратора
secret_key = your_random_secret_salt

И запускаем Grafana

sudo service grafana-server start

Настройка Nginx для Grafana

Редактируем файл конфигурации /etc/nginx/conf.d/grafana.conf

server {
  server_name grafana.your.site;
  listen 80;
  access_log /var/log/nginx/grafana.access.log;
  error_log  /var/log/nginx/grafana.error.log;
  location = /robots.txt {
    echo "User-agent: *nDisallow: /n";
  }
  location / {
    proxy_pass         http://localhost:3000;
    proxy_set_header   Host $host;
  }
}

Перезапускаем Nginx и переходим по адресу grafana.your.site

Так выглядит страница авторизации Grafana

Вводим логин/пароль администратора, которые Вы установили выше, и попадаем в админ-панель Grafana.

Так выглядит админка Grafana

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

Переходим в раздел Data Source -> Add New

Вводим следующие данные

  • Name: graphite
  • URL: graphite.your.site

Вот пример:

Пример настройки источника данных Grafana

Теперь переходим на главную страницу, жмём New Dashboard -> New,
Слева будет малозаметная зелёная кнопка, при наведении на которую она выползет из-за края экрана. Нажимаем на неё и затем Add Panel -> Graph

Внизу Вы увиlите метрики, которые мы создавали тестовой командой выше, test и count.

Выводим графики

На этом пока что всё, позже я расcкажу о плагинах для Grafana.

Больше информации

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

Благодарность

За основу статьи были взяты материалы следующих статей:

Оригинал статьи опубликован на моём блоге

Автор: kovalyov_makc

Источник

  1. kaizer:

    Спасибо Вам за сохранение источника статьи. Ну и за распространение.

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js