Введение

В этом учебном руководстве вы настроите Grafana для работы за обратным прокси.

При работе Grafana за прокси вам нужно настроить доменное имя, чтобы сообщить Grafana, как правильно формировать ссылки и перенаправления.

  • В файле конфигурации Grafana измените server.domain на доменное имя, которое вы будете использовать:
Bash
[server]
domain = example.com
  • Перезапустите Grafana, чтобы изменения вступили в силу.

Настройка обратного прокси

Настройка nginx

nginx — это высокопроизводительный балансировщик нагрузки, веб-сервер и обратный прокси.

  • В вашем файле конфигурации nginx внутри раздела http добавьте следующее:
nginx
# Это требуется для проксирования 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:

nginx
# Это требуется для проксирования 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 по подпути:

Bash
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:

xml
  <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 в качестве прокси, обеспечьте его правильную установку и настройку.

  1. Убедитесь, что модуль прокси Apache mod_proxy установлен и включён. Чтобы включить, выполните следующие команды:
Bash
a2enmod proxy
a2enmod proxy_http
  1. Чтобы настроить прокси, отредактируйте файл конфигурации сайта. Для этого внутри раздела <VirtualHost> добавьте следующий код:
Bash
  ProxyPreserveHost on
  ProxyPass / http://your_grafana_server:3000
  ProxyPassReverse / http://your_grafana_server:3000
  1. Наконец, перезапустите Apache, чтобы настройки вступили в силу.

После перезапуска перейдите на ваш сервер Apache на порту 80, и вы будете перенаправлены в Grafana.

Чтобы настроить Grafana, размещённую по подпути, замените подпуть следующим кодом (предполагая, что ваш экземпляр Grafana находится по подпути your_path):

Bash
  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 и следующих меток настраивает маршрутизатор и службу для маршрутизации домена или поддомена.

YAML
labels:
  traefik.http.routers.grafana.rule: Host(`grafana.example.com`)
  traefik.http.services.grafana.loadbalancer.server.port: 3000

Чтобы развернуть по подпути:

YAML
labels:
  traefik.http.routers.grafana.rule: Host(`example.com`) && PathPrefix(`/grafana`)
  traefik.http.services.grafana.loadbalancer.server.port: 3000

Примеры с использованием провайдера файлов.

YAML
http:
  routers:
    grafana:
      rule: Host(`grafana.example.com`)
      service: grafana
  services:
    grafana:
      loadBalancer:
        servers:
          - url: http://192.168.30.10:3000
YAML
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.

  1. Включите подпуть в конец root_url.
  2. Установите serve_from_sub_path в true:
Bash
[server]
domain = example.com
root_url = %(protocol)s://%(domain)s:%(http_port)s/grafana/
serve_from_sub_path = true