Obsah

Grafana

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.

Konfigurace docker-compose

 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

konfigurace Apache

 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]

Další zdroje

https://geekflare.com/prometheus-grafana-setup-for-linux/