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

Хочу поділитися досвідом встановлення та налаштування сервісу для збору і відображення метрик
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 touch /var/run/graphite.sock
sudo chmod 777 /var/run/graphite.sock
sudo touch /var/log/graphite.log
sudo chmod 777 /var/log/graphite.log

Створюємо файл конфігурації:
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
Виконуємо наступні команди:
sudo touch /etc/nginx/conf.d/graphite.conf
# Log files
sudo touch /var/log/nginx/graphite.access.log
sudo chmod 666 /var/log/nginx/graphite.access.log
sudo touch /var/log/nginx/graphite.error.log
sudo chmod 666 /var/log/nginx/graphite.error.log

Редагуємо файл конфігурації
/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
Виконуємо наступні команди:
sudo touch /etc/nginx/conf.d/grafana.conf
# Log files
sudo touch /var/log/nginx/grafana.access.log
sudo chmod 666 /var/log/nginx/grafana.access.log
sudo touch /var/log/nginx/grafana.error.log
sudo chmod 666 /var/log/nginx/grafana.error.log

І редагуємо файл конфігурації
/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
.
Виводимо графіки
На цьому поки що все, пізніше я розповім про плагінах для
Grafana
.
Більше інформації
будь Ласка, перейдіть за наведеним нижче посиланням, щоб дізнатися більше про
Grafana
та його дивовижних налаштуваннях.
Подяку
За основу статті були взяті матеріали наступних статей:
Оригінал статті опубліковано на моєму блоге
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.