Vai al contenuto

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:

  1. Creare un file Docker Compose (.yml) che contenga entrambe le immagini di Grafana e Prometheus.

  2. Collegare Prometheus all'endpoint Prometheus del server di sessione.

  3. Configurare l'origine dati di Grafana affinché comunichi con Prometheus e importare i dashboard preconfigurati.

  4. Configurare i dashboard Grafana.

  5. Accedere a Grafana.

Passaggio 1. Creare un file Docker Compose

Creare un file docker-compose.yml contenente le immagini di Grafana e Prometheus.

version: "3.1"
services:
  grafana:
    build: grafana
    ports:
      - '3000:3000'
  prometheus:
    image: prom/prometheus:v2.6.1
    ports:
      - '9090:9090'
    volumes:
      - ./config/prometheus.yml:/etc/prometheus/prometheus.yml
      - ./prometheus:/prometheus
    networks:
      monitoring:
        aliases:
          - prometheus
networks:
  monitoring:

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:5.3.2 
ADD ./provisioning /etc/grafana/provisioning 
ADD ./config.ini /etc/grafana/config.ini 
ADD ./dashboards /var/lib/grafana/dashboards
Esempio di grafana/config.ini

[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 directory hacloud/utilities/grafana.

  • Copiare HACloudSessionservers.json nella directory grafana/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.