Spec-Zone.ru › Graphite

Настройка веб-приложения

Существует несколько способов экспонировать веб-приложение Graphite. Существуют следующие конфигурации стека:

  • nginx + gunicorn
  • Apache + mod_wsgi
  • nginx + uWSGI

В зависимости от выбранной конфигурации, конфигурация веб-приложения немного отличается.

nginx + gunicorn

В этой настройке nginx будет проксировать запросы для Gunicorn, который сам будет прослушивать локально порт 8080 и обслуживать веб-приложение (приложение Django).

Установка Gunicorn

Если вы используете виртуальную среду, вы можете использовать pip:

pip install gunicorn

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

В системах на основе Debian выполните:

sudo apt install gunicorn

Установка nginx

В системах на основе Debian выполните:

sudo apt install nginx

Настройка nginx

Мы будем использовать отдельные файлы логов для nginx при обслуживании Graphite:

sudo touch /var/log/nginx/graphite.access.log
sudo touch /var/log/nginx/graphite.error.log
sudo chmod 640 /var/log/nginx/graphite.*
sudo chown www-data:www-data /var/log/nginx/graphite.*

Запишите следующую конфигурацию в /etc/nginx/sites-available/graphite:

upstream graphite {
    server 127.0.0.1:8080 fail_timeout=0;
}

server {
    listen 80 default_server;

    server_name HOSTNAME;

    root /opt/graphite/webapp;

    access_log /var/log/nginx/graphite.access.log;
    error_log  /var/log/nginx/graphite.error.log;

    location = /favicon.ico {
        return 204;
    }

    # serve static content from the "content" directory
    location /static {
        alias /opt/graphite/webapp/content;
        expires max;
    }

    location / {
        try_files $uri @graphite;
    }

    location @graphite {
        proxy_pass_header Server;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_connect_timeout 10;
        proxy_read_timeout 10;
        proxy_pass http://graphite;
    }
}

Примечание

Не забудьте изменить server_name на ваш фактический хост. Вы также можете адаптировать другие параметры к своему случаю использования, например, root.

Включите эту конфигурацию для nginx:

sudo ln -s /etc/nginx/sites-available/graphite /etc/nginx/sites-enabled
sudo rm -f /etc/nginx/sites-enabled/default

Перезагрузите nginx, чтобы использовать новую конфигурацию:

sudo service nginx reload

Apache + mod_wsgi

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

См. Руководство по установке mod_wsgi для инструкций по установке.

Затем создайте файл graphite.wsgi. (Вы можете найти пример файла graphite.wsgi в каталоге conf дистрибутива исходного кода):

# /opt/graphite/conf/graphite.wsgi

import sys
sys.path.append('/opt/graphite/webapp')
from graphite.wsgi import application

Наконец, настройте виртуальный хост Apache. (Вы можете найти пример конфигурации виртуального хоста Graphite в каталоге contrib дистрибутива исходного кода):

# /etc/httpd/conf.d/graphite-vhost.conf

LoadModule wsgi_module modules/mod_wsgi.so

WSGISocketPrefix /var/run/wsgi

Listen 80
<VirtualHost *:80>

    ServerName graphite
    DocumentRoot "/opt/graphite/webapp"
    ErrorLog /opt/graphite/storage/log/webapp/error.log
    CustomLog /opt/graphite/storage/log/webapp/access.log common

    WSGIDaemonProcess graphite-web processes=5 threads=5 display-name='%{GROUP}' inactivity-timeout=120
    WSGIProcessGroup graphite-web
    WSGIApplicationGroup %{GLOBAL}
    WSGIImportScript /opt/graphite/conf/graphite.wsgi process-group=graphite-web application-group=%{GLOBAL}

    WSGIScriptAlias / /opt/graphite/conf/graphite.wsgi

    Alias /static/ /opt/graphite/static/

    <Directory /opt/graphite/static/>
            <IfVersion < 2.4>
                    Order deny,allow
                    Allow from all
            </IfVersion>
            <IfVersion >= 2.4>
                    Require all granted
            </IfVersion>
    </Directory>

    <Directory /opt/graphite/conf/>
            <IfVersion < 2.4>
                    Order deny,allow
                    Allow from all
            </IfVersion>
            <IfVersion >= 2.4>
                    Require all granted
            </IfVersion>
    </Directory>
</VirtualHost>

Адаптируйте конфигурацию mod_wsgi к вашим потребностям.

См. краткое руководство по настройке mod_wsgi для обзора конфигураций и директивы конфигурации mod_wsgi, чтобы увидеть все директивы конфигурации

Перезапустите Apache:

$ service httpd restart

Запуск веб-приложения с mod_wsgi как приложение с префиксом URL (Apache)

При использовании нового параметра URL_PREFIX в local_settings.py, параметр WSGIScriptAlias должен выглядеть следующим образом (например, URL_PREFIX=”/graphite”):

WSGIScriptAlias /graphite /opt/graphite/conf/graphite.wsgi/graphite

/graphite необходим Django для создания правильных URL-адресов.

Nginx + uWSGI

Сначала вам нужно установить uWSGI с поддержкой Python. В Debian установите uwsgi-plugin-python.

Затем создайте файл uWSGI для Graphite-web в /etc/uwsgi/apps-available/graphite.ini:

[uwsgi]
processes = 2
socket = localhost:8080
gid = www-data
uid = www-data
virtualenv = /opt/graphite
chdir = /opt/graphite/conf
module = wsgi:application

Затем создайте файл wsgi.py:

# /opt/graphite/conf/wsgi.py

import sys
sys.path.append('/opt/graphite/webapp')
from graphite.wsgi import application

Включите graphite.ini и перезапустите uWSGI:

$ ln -s /etc/uwsgi/apps-available/graphite.ini /etc/uwsgi/apps-enabled
$ service uwsgi restart

Наконец, настройте виртуальный хост nginx:

# /etc/nginx/sites-available/graphite.conf

server {
    listen 80;

    location /static/ {
        alias /opt/graphite/webapp/content/;
    }

    location / {
        include uwsgi_params;
        uwsgi_pass localhost:8080;
    }
}

Включите виртуальный хост и перезапустите nginx:

$ ln -s /etc/nginx/sites-available/graphite.conf /etc/nginx/sites-enabled
$ service nginx restart

Благодарности ————_

Части данного руководства основаны на руководстве по развертыванию Graphite-API.

© 2008–2012 Chris Davis
© 2011–2016 The Graphite Project
Licensed under the Apache License, Version 2.0.
https://graphite.readthedocs.io/en/latest/config-webapp.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API