Настройка веб-приложения
Существует несколько способов экспонировать веб-приложение 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