Введение
В этом учебном руководстве вы настроите Grafana для работы за обратным прокси.
При работе Grafana за прокси вам нужно настроить доменное имя, чтобы сообщить Grafana, как правильно формировать ссылки и перенаправления.
- В файле конфигурации Grafana измените
server.domainна доменное имя, которое вы будете использовать:
[server]
domain = example.com
- Перезапустите Grafana, чтобы изменения вступили в силу.
Настройка обратного прокси
Настройка nginx
nginx — это высокопроизводительный балансировщик нагрузки, веб-сервер и обратный прокси.
- В вашем файле конфигурации nginx внутри раздела
httpдобавьте следующее:
# Это требуется для проксирования WebSocket-соединений Grafana Live.
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream grafana {
server localhost:3000;
}
server {
listen 80;
root /usr/share/nginx/html;
index index.html index.htm;
location / {
proxy_set_header Host $host;
proxy_pass http://grafana;
}
# Проксирование WebSocket-соединений Grafana Live.
location /api/live/ {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $host;
proxy_pass http://grafana;
}
}
- Перезагрузите конфигурацию nginx.
- Перейдите на порт 80 машины, на которой работает nginx. Вас встречает страница входа Grafana.
Для Grafana Live, которая использует WebSocket-соединения, вам может потребоваться увеличить значение nginx для параметра worker_connections, который по умолчанию равен 512. Значение по умолчанию ограничивает количество возможных одновременных соединений с Grafana Live.
Также имейте в виду, что приведённая выше конфигурация работает только тогда, когда значение proxy_pass для location / является литеральной строкой.
Если вы хотите использовать здесь переменную, вместо этого вы должны использовать правило перезаписи.
Для получения дополнительной информации обратитесь к issue #18299 на GitHub.
Чтобы настроить nginx для обслуживания Grafana по подпути, обновите блок location:
# Это требуется для проксирования WebSocket-соединений Grafana Live.
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream grafana {
server localhost:3000;
}
server {
listen 80;
root /usr/share/nginx/www;
index index.html index.htm;
location /grafana/ {
proxy_set_header Host $host;
proxy_pass http://grafana;
}
# Проксирование WebSocket-соединений Grafana Live.
location /grafana/api/live/ {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $host;
proxy_pass http://grafana;
}
}
Добавьте правило перезаписи в каждый блок location:
rewrite ^/grafana/(.*) /$1 break;
Note
Если nginx выполняет терминацию TLS, вы должны соответствующим образом задать конфигурацию
root_urlиprotocol. Если вы обслуживаете Grafana по адресуhttps://example.com/grafana/, тоroot_url— этоhttps://example.com/grafana/илиhttps://%(domain)s/grafana/с соответствующим значением конфигурацииdomain, установленным вexample.comв разделеserverфайла конфигурации Grafana. Установитеprotocolвhttp.
Настройка HAProxy
Чтобы настроить HAProxy для обслуживания Grafana по подпути:
frontend http-in
bind *:80
use_backend grafana_backend if { path /grafana } or { path_beg /grafana/ }
backend grafana_backend
server grafana localhost:3000
# Требуется haproxy >= 1.6
http-request set-path %[path,regsub(^/grafana/?,/)]
# Работает для haproxy < 1.6
# reqrep ^([^\ ]*\ /)grafana[/]?(.*) \1\2
server grafana localhost:3000
Настройка IIS
Note
Чтобы использовать IIS, у вас должен быть установлен модуль URL Rewrite.
Чтобы настроить IIS для обслуживания Grafana по подпути, создайте Inbound Rule для родительского веб-сайта в IIS Manager со следующими параметрами:
- шаблон:
grafana(/)?(.*) - установите флажок
Ignore case - URL перезаписи:
http://localhost:3000/{R:2} - установите флажок
Append query string - установите флажок
Stop processing of subsequent rules
Это правило перезаписи, которое создаётся в web.config:
<rewrite>
<rules>
<rule name="Grafana" enabled="true" stopProcessing="true">
<match url="grafana(/)?(.*)" />
<action type="Rewrite" url="http://localhost:3000/{R:2}" logRewrittenUrl="false" />
</rule>
</rules>
</rewrite>
Для получения более подробных инструкций обратитесь к учебному руководству по URL Rewrites в IIS.
Настройка Apache
Чтобы использовать Apache в качестве прокси, обеспечьте его правильную установку и настройку.
- Убедитесь, что модуль прокси Apache
mod_proxyустановлен и включён. Чтобы включить, выполните следующие команды:
a2enmod proxy
a2enmod proxy_http
- Чтобы настроить прокси, отредактируйте файл конфигурации сайта. Для этого внутри раздела
<VirtualHost>добавьте следующий код:
ProxyPreserveHost on
ProxyPass / http://your_grafana_server:3000
ProxyPassReverse / http://your_grafana_server:3000
- Наконец, перезапустите Apache, чтобы настройки вступили в силу.
После перезапуска перейдите на ваш сервер Apache на порту 80, и вы будете перенаправлены в Grafana.
Чтобы настроить Grafana, размещённую по подпути, замените подпуть следующим кодом (предполагая, что ваш экземпляр Grafana находится по подпути your_path):
ProxyPreserveHost on
ProxyPass /your_path http://your_grafana_server:3000
ProxyPassReverse /your_path http://your_grafana_server:3000
ProxyPass / http://your_grafana_server:3000/your_path
ProxyPassReverse / http://192.168.250.5:3000/your_path
Обратите внимание, что строки, содержащие your_path, должны идти перед строками, ссылающимися на корневой путь (/), чтобы это работало правильно.
Настройка Traefik
Traefik — облачный нативный прокси приложений.
Использование провайдера Docker и следующих меток настраивает маршрутизатор и службу для маршрутизации домена или поддомена.
labels:
traefik.http.routers.grafana.rule: Host(`grafana.example.com`)
traefik.http.services.grafana.loadbalancer.server.port: 3000
Чтобы развернуть по подпути:
labels:
traefik.http.routers.grafana.rule: Host(`example.com`) && PathPrefix(`/grafana`)
traefik.http.services.grafana.loadbalancer.server.port: 3000
Примеры с использованием провайдера файлов.
http:
routers:
grafana:
rule: Host(`grafana.example.com`)
service: grafana
services:
grafana:
loadBalancer:
servers:
- url: http://192.168.30.10:3000
http:
routers:
grafana:
rule: Host(`example.com`) && PathPrefix(`/grafana`)
service: grafana
services:
grafana:
loadBalancer:
servers:
- url: http://192.168.30.10:3000
Альтернатива для обслуживания Grafana по подпути
Note
Это нужно только в том случае, если вы не обрабатываете обслуживание по подпути через конфигурацию обратного прокси.
Если вы не хотите или не можете использовать обратный прокси для обслуживания Grafana по подпути, вы можете установить переменную конфигурации serve_from_sub_path в true.
- Включите подпуть в конец
root_url. - Установите
serve_from_sub_pathвtrue:
[server]
domain = example.com
root_url = %(protocol)s://%(domain)s:%(http_port)s/grafana/
serve_from_sub_path = true