Grafanu mám nainstalovanou pomocí dockeru a v Apache konfiguraci jsem nastavil reverzní proxy včetně řešení problému s websockety. V rámci nastavení může pomoct konfigurace Grafany s InfluxDB.
grafana: container_name: grafana image: grafana/grafana restart: unless-stopped user: "0" ports: - "127.0.0.1:3000:3000" environment: - TZ=Etc/UTC - GF_PATHS_DATA=/var/lib/grafana - GF_PATHS_LOGS=/var/log/grafana - GF_SERVER_DOMAIN=mojedomena.live - GF_SERVER_ROOT_URL=%(protocol)s://%(domain)s/grafana/ volumes: - ./volumes/grafana/data:/var/lib/grafana - ./volumes/grafana/log:/var/log/grafana healthcheck: test: ["CMD", "wget", "-O", "/dev/null", "http://localhost:3000"] interval: 30s timeout: 10s retries: 3 start_period: 30s
V kódu jsou důležité tyto řádky, které jsou příprava pro reverzní proxy:
- GF_SERVER_DOMAIN=mojedomena.live - GF_SERVER_ROOT_URL=%(protocol)s://%(domain)s/grafana/
Pro povolení anonymního přihlášení pro čtení a možnosti vkládání grafu z grafany pro čtení do jiných systémů (například UI NodeRED) je potřeba ještě přidat do environment následující řádky:
- GF_SECURITY_ALLOW_EMBEDDING=true - GF_AUTH_ANONYMOUS_ENABLED=true
Když jsem v Grafaně změnil organizaci, musel jsem provést úpravu i v docker-compose.yml, aby anonymní uživatel mohl zobrazit data organizace. Bez úpravy vyžaduje grafana přihlášení.
- GF_AUTH_ANONYMOUS_ORG_NAME=Doma - GF_AUTH_ANONYMOUS_ORG_ROLE=Viewer
ProxyPreserveHost On RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME} RequestHeader set "X-Forwarded-Host" expr=%{HTTP_HOST} ProxyPass /grafana/ http://localhost:3000/ ProxyPassReverse /grafana/ http://localhost:3000/ # Povolení proxy pro WebSockets RewriteEngine On RewriteCond %{HTTP:Upgrade} =websocket [NC] RewriteCond %{HTTP:Connection} upgrade [NC] RewriteRule /grafana/(.*) "ws://localhost:3000/$1" [P,L] # Povolení proxy pro HTTPS WebSockets RewriteCond %{HTTP:Upgrade} =websocket [NC] RewriteCond %{HTTP:Connection} upgrade [NC] RewriteRule /grafana/(.*) "wss://localhost:3000/$1" [P,L]