Monitoraggio dei server di sessione mediante Prometheus e Grafana
È possibile monitorare i server di sessione di Host Access for the Cloud utilizzando Prometheus e Grafana. Entrambi questi strumenti sono gratuiti, open source ed eseguibili nei container di Docker, caratteristiche che ne rendono semplice la distribuzione. Ciascun server di sessione fornisce un endpoint Prometheus che espone le metriche su tale server. Prometheus può essere configurato per recuperare i dati da questo endpoint e memorizzare regolarmente le metriche anche se provengono da più server di sessione. Grafana quindi fornisce un dashboard in cui è possibile eseguire query e visualizzare questi dati con una configurazione minima.
Prerequisiti:
Docker e Docker Compose devono essere installati.
Passaggi:
-
Creare un file Docker Compose (.yml) che contenga entrambe le immagini di Grafana e Prometheus.
-
Collegare Prometheus all'endpoint Prometheus del server di sessione.
-
Configurare l'origine dati di Grafana affinché comunichi con Prometheus e importare i dashboard preconfigurati.
-
Configurare i dashboard Grafana.
-
Accedere a Grafana.
Passaggio 1. Creare un file Docker Compose
Creare un file docker-compose.yml
contenente le immagini di Grafana e Prometheus.
versione: "3.1"
servizi:
grafana:
build: grafana
porte:
- '3000:3000'
prometheus:
immagine: prom/prometheus:v2.6.1
porte:
- '9090:9090'
volumi:
- ./config/prometheus.yml:/etc/prometheus/prometheus.yml
- ./prometheus:/prometheus
networks:
monitoring:
aliases:
- prometheus
networks:
monitoring:
Passaggio 2. Collegare Prometheus al proprio endpoint Prometheus di HACloud
Per collegare Prometheus al proprio endpoint, generare un file prometheus.yml
.
-
Nel esempio riportato, il file
prometheus.yml
viene salvato nella directory config. -
In questo esempio config consente di recuperare l'endpoint di Prometheus utilizzando il protocollo HTTP o HTTPS (TLS).
-
Se TLS è disabilitato sul server di sessione, rimuovere tls_config e modificare lo schema a http nella configurazione di esempio.
-
Configurare session-server-hostname.
Nota
A causa del networking di Docker, questo deve essere l'indirizzo IP o il nome host effettivo del computer host del server di sessione. Questo indirizzo IP può essere in genere ottenuto utilizzando ifconfig/ipconfig.
-
Modificare le porte, se necessario.
Esempio di config/prometheus.yml
scrape_configs:
- job_name: ' HACloud Session Server with TLS'
scrape_interval: 15s
scheme: https
tls_config:
insecure_skip_verify: true
metrics_path: actuator/prometheus
static_configs:
- targets: ['session-server-hostname:7443']
Passaggio 3. Configurare la comunicazione tra Prometheus e l'origine dati
La comunicazione può essere configurata nell'immagine Docker di Grafana tra l'istanza locale di Prometheus e l'origine dati di Grafana. All'avvio sono anche disponibili dashboard pre-caricati.
Esempio di grafana/Dockerfile
FROM grafana/grafana:8.0.5
ADD ./provisioning /etc/grafana/provisioning
ADD ./config.ini /etc/grafana/config.ini
ADD ./dashboards /var/lib/grafana/dashboards
[paths]
provisioning = /etc/grafana/provisioning
Esempio di grafana/provisioning/datasources/all.yml
datasources:
- name: 'Prometheus'
type: 'prometheus'
access: 'browser'
url: 'http://localhost:9090'
is_default: true
editable: false
Esempio di grafana/provisioning/dashboards/all.yml
- name: 'default'
org_id: 1
folder: ''
type: 'file'
options:
folder: '/var/lib/grafana/dashboards'
Passaggio 4. Configurare i dashboard Grafana
È disponibile un esempio di file JSON che consente di iniziare a configurare i dashboard Grafana.
Per fare in modo che il container di Docker carichi il dashboard all'avvio:
-
Individuare
HACloudSessionservers.json
nella directoryhacloud/utilities/grafana
. -
Copiare
HACloudSessionservers.json
nella directorygrafana/dashboard
.
Passaggio 5. Accedere a Grafana
-
Avviare il container di Docker con il comando docker-compose up -d.
-
Verificare che le destinazioni di Prometheus recuperino correttamente i server di sessione utilizzando
http://localhost:9090/targets
. -
Accedere a Grafana utilizzando
http://localhost:3000
. -
Entrambi nome utente e password = admin. Il nome utente e la password possono essere configurati utilizzando le variabili di ambiente di Docker.
-
Utilizzare il comando docker-compose down per arrestare il container di Docker.