Vai al contenutoNaviga tra le pagine: pagina precedente [tasto di scelta p]/pagina successiva [tasto di scelta n]
documentation.suse.com / Documentazione di SUSE Enterprise Storage 7 / Guida alle operazioni e all'amministrazione / Funzionamento del cluster / Monitoraggio e creazione di avvisi
Si applica a SUSE Enterprise Storage 7

16 Monitoraggio e creazione di avvisi

In SUSE Enterprise Storage 7, cephadm esegue la distribuzione di uno stack di monitoraggio e creazione di avvisi. Gli utenti devono definire i servizi (ad esempio Prometheus, Alertmanager e Grafana) da distribuire con cephadm in un file di configurazione YAML oppure distribuirli tramite l'interfaccia riga di comando. Se sono distribuiti più servizi dello stesso tipo, viene eseguita una configurazione ad elevata disponibilità. L'utilità di esportazione dei nodi rappresenta un'eccezione a questa regola.

Tramite cephadm è possibile distribuire i servizi di monitoraggio seguenti:

  • Prometheus è il kit di strumenti per la creazione di avvisi e il monitoraggio. Raccoglie i dati forniti dalle utilità di esportazione di Prometheus e genera avvisi preconfigurati se vengono raggiunte delle soglie predefinite.

  • Alertmanager gestisce gli avvisi inviati dal server Prometheus. Deduplica, raggruppa e instrada gli avvisi al ricevitore corretto. Per default, il Ceph Dashboard sarà configurato automaticamente come ricevitore.

  • Grafana è il software di visualizzazione e creazione di avvisi. La funzionalità di creazione di avvisi di Grafana non è utilizzata da questo stack di monitoraggio. Per la creazione di avvisi, è utilizzato Alertmanager.

  • Node exporter è un'utilità di esportazione per Prometheus che fornisce i dati relativi al nodo su cui è installato. Si consiglia di installare questa utilità di esportazione dei nodi su tutti i nodi.

Il modulo Manager di Prometheus fornisce un'utilità di esportazione Prometheus da passare ai contatori delle prestazioni di Ceph dal punto di raccolta in ceph-mgr.

La configurazione di Prometheus, incluse le destinazioni di scrape (daemon che forniscono metriche), viene impostata automaticamente da cephadm. cephadm inoltre distribuisce un elenco di avvisi di default, ad esempio health error, 10% OSDs down o pgs inactive.

Per default, il traffico verso Grafana è cifrato tramite TLS. È possibile specificare un proprio certificato TLS o utilizzarne uno autofirmato. Se prima della distribuzione di Grafana non è stato configurato nessun certificato personalizzato, ne verrà creato e configurato automaticamente uno autofirmato per Grafana.

È possibile configurare i certificati personalizzati per Grafana utilizzando i comandi seguenti:

cephuser@adm >  ceph config-key set mgr/cephadm/grafana_key -i $PWD/key.pem
cephuser@adm >  ceph config-key set mgr/cephadm/grafana_crt -i $PWD/certificate.pem

Alertmanager gestisce gli avvisi inviati dal server Prometheus. Si occupa di deduplicarli, raggrupparli e instradarli al ricevitore corretto. È possibile silenziare gli eventi tramite Alertmanager, ma è possibile gestire i silenziamenti anche dal Ceph Dashboard.

Si consiglia di distribuire l'utilità Node Exporter su tutti i nodi. A questo scopo, utilizzare il file monitoring.yaml con il tipo di servizio node-exporter. Per ulteriori informazioni sulla distribuzione dei servizi, vedere Sezione 5.4.3.8, «Distribuzione dello stack di monitoraggio».

16.1 Configurazione di immagini personalizzate o locali

Suggerimento
Suggerimento

Questa sezione descrive come modificare la configurazione delle immagini del container utilizzate durante la distribuzione o l'aggiornamento dei servizi. Non include i comandi da eseguire per la distribuzione o la ridistribuzione dei servizi.

Il metodo consigliato per la distribuzione dello stack di monitoraggio consiste nell'applicarne la specifica come descritto in Sezione 5.4.3.8, «Distribuzione dello stack di monitoraggio».

Per distribuire le immagini del container personalizzate o locali, è necessario impostare tali immagini in cephadm. A questo scopo, è necessario eseguire il comando seguente:

cephuser@adm > ceph config set mgr mgr/cephadm/OPTION_NAME VALUE

Dove OPTION_NAME è uno dei nomi seguenti:

  • container_image_prometheus

  • container_image_node_exporter

  • container_image_alertmanager

  • container_image_grafana

Se non viene impostata alcuna opzione o se l'impostazione è stata rimossa, come VALUE vengono utilizzate le immagini seguenti:

  • registry.suse.com/caasp/v4.5/prometheus-server:2.18.0

  • registry.suse.com/caasp/v4.5/prometheus-node-exporter:0.18.1

  • registry.suse.com/caasp/v4.5/prometheus-alertmanager:0.16.2

  • registry.suse.com/ses/7/ceph/grafana:7.0.3

Esempio:

cephuser@adm > ceph config set mgr mgr/cephadm/container_image_prometheus prom/prometheus:v1.4.1
Nota
Nota

Se viene impostata un'immagine personalizzata, il valore di default verrà sostituito (ma non sovrascritto). Il valore di default cambia quando sono disponibili degli aggiornamenti. Se si imposta un'immagine personalizzata, non sarà possibile aggiornare automaticamente il componente per cui è stata impostata tale immagine. Sarà necessario aggiornare manualmente la configurazione (tag e nome immagine) per poter installare gli aggiornamenti.

Se si sceglie di seguire invece le raccomandazioni, sarà possibile reimpostare l'immagine personalizzata impostata in precedenza. Dopodiché, il valore di default verrà utilizzato nuovamente. Utilizzare ceph config rm per reimpostare l'opzione di configurazione:

cephuser@adm > ceph config rm mgr mgr/cephadm/OPTION_NAME

Esempio:

cephuser@adm > ceph config rm mgr mgr/cephadm/container_image_prometheus

16.2 Aggiornamento dei servizi di monitoraggio

Come accennato nella Sezione 16.1, «Configurazione di immagini personalizzate o locali», cephadm è fornito con gli URL delle immagini del container consigliate e testate, che sono utilizzate per default.

Con l'aggiornamento dei pacchetti Ceph, potrebbero essere disponibili nuove versioni di tali URL. Questo aggiornamento si applica solo alla posizione da cui viene eseguito il pull delle immagini del container e non vale per i servizi.

In seguito all'aggiornamento degli URL delle nuove immagini del container (manualmente come descritto nella Sezione 16.1, «Configurazione di immagini personalizzate o locali» o automaticamente tramite l'aggiornamento del pacchetto Ceph), è possibile aggiornare i servizi di monitoraggio.

A questo scopo, utilizzare ceph orch redeploy come segue:

cephuser@adm > ceph orch redeploy node-exporter
cephuser@adm > ceph orch redeploy prometheus
cephuser@adm > ceph orch redeploy alertmanager
cephuser@adm > ceph orch redeploy grafana

Al momento, non esiste nessun comando singolo che consenta di aggiornare tutti i servizi di monitoraggio. L'ordine in cui i servizi vengono aggiornati non ha importanza.

Nota
Nota

Se si utilizzano immagini del container personalizzate, gli URL specificati per i servizi di monitoraggio non cambieranno automaticamente se i pacchetti Ceph vengono aggiornati. Se sono state specificate immagini del container personalizzate, sarà necessario immettere manualmente gli URL delle nuove immagini del container. Ad esempio, ciò si applica nel caso in cui si utilizzi un registro del container locale.

Alla Sezione 16.1, «Configurazione di immagini personalizzate o locali», è possibile trovare gli URL delle immagini del container consigliate per l'utilizzo.

16.3 Disabilitazione del monitoraggio

Per disabilitare lo stack di monitoraggio, eseguire i comandi seguenti:

cephuser@adm > ceph orch rm grafana
cephuser@adm > ceph orch rm prometheus --force   # this will delete metrics data collected so far
cephuser@adm > ceph orch rm node-exporter
cephuser@adm > ceph orch rm alertmanager
cephuser@adm > ceph mgr module disable prometheus

16.4 Configurazione di Grafana

Per poter verificare la presenza dei dashboard di Grafana prima che questi vengano caricati dal front-end, il back-end del Ceph Dashboard richiede l'URL Grafana. A causa del metodo applicato per l'implementazione di Grafana nel Ceph Dashboard, ciò vuol dire che sono necessarie due connessioni attive per poter visualizzare i grafici di Grafana nel Ceph Dashboard:

  • Il back-end (modulo Ceph MGR) deve verificare l'esistenza del grafico richiesto. Se la richiesta va a buon fine, comunica al front-end che può accedere a Grafana in sicurezza.

  • Il front-end richiede quindi i grafici di Grafana direttamente dal browser dell'utente tramite un iframe. L'accesso all'istanza di Grafana viene eseguito direttamente dal Ceph Dashboard senza deviazioni.

A questo punto, l'ambiente potrebbe rendere difficile al browser dell'utente l'accesso diretto all'URL configurato nel Ceph Dashboard. Per risolvere questo problema, è possibile configurare un URL separato che verrà utilizzato esclusivamente per comunicare al front-end (il browser dell'utente) quale URL utilizzare per accedere a Grafana.

Per modificare l'URL restituito al front-end, immettere il comando seguente:

cephuser@adm > ceph dashboard set-grafana-frontend-api-url GRAFANA-SERVER-URL

Se per questa opzione non è impostato alcun valore, verrà semplicemente eseguito il fallback al valore dell'opzione GRAFANA_API_URL, impostato automaticamente e aggiornato su base periodica da cephadm. Se è presente un valore impostato, il browser riceverà l'istruzione di utilizzare questo URL per accedere a Grafana.

16.5 Configurazione del modulo Manager di Prometheus

Il modulo Manager di Prometheus è un modulo interno di Ceph che ne estende le funzionalità. Il modulo legge i (meta)dati di Ceph relativi allo stato e all'integrità e fornisce a Prometheus tali dati (sottoposti a scrape) in un formato utilizzabile.

Nota
Nota

Per applicare le modifiche alla configurazione, è necessario riavviare il modulo Manager di Prometheus.

16.5.1 Configurazione dell'interfaccia di rete

Per default, il modulo Manager di Prometheus accetta le richieste HTTP sulla porta 9283 su tutti gli indirizzi IPv4 e IPv6 sull'host. È possibile configurare la porta e l'indirizzo di ascolto con ceph config-key set, con le chiavi mgr/prometheus/server_addr e mgr/prometheus/server_port. Questa porta è registrata nel registro di Prometheus.

Per aggiornare il valore di server_addr, eseguire il comando seguente:

cephuser@adm > ceph config set mgr mgr/prometheus/server_addr 0.0.0.0

Per aggiornare il valore di server_port, eseguire il comando seguente:

cephuser@adm > ceph config set mgr mgr/prometheus/server_port 9283

16.5.2 Configurazione del valore di scrape_interval

Per default, il modulo Manager di Prometheus è configurato su un intervallo di scraping di 15 secondi. Si sconsiglia di utilizzare un intervallo di scraping inferiore a 10 secondi. Per impostare un diverso intervallo di scraping nel modulo di Prometheus, impostare scrape_interval sul valore desiderato:

Importante
Importante

Per garantire il corretto funzionamento del modulo, il relativo valore di scrape_interval impostato deve corrispondere sempre all'intervallo di scraping di Prometheus.

cephuser@adm > ceph config set mgr mgr/prometheus/scrape_interval 15

16.5.3 Configurazione della cache

Sui cluster di grandi dimensioni (più di 1000 OSD), può essere necessario molto tempo per completare il recupero delle metriche. Senza la cache, il modulo Manager di Prometheus potrebbe sovraccaricare il manager e causare l'arresto anomalo o il blocco delle istanze di Ceph Manager. Di conseguenza, la cache è abilitata per default e non è possibile disabilitarla, ma ciò implica che può diventare obsoleta. La cache è considerata obsoleta quando l'intervallo di tempo impiegato per il recupero delle metriche da Ceph supera il valore impostato per scrape_interval.

In questo caso, viene registrato un avviso e il modulo reagirà in uno dei modi seguenti:

  • Risponderà con un codice di stato 503 HTTP (servizio non disponibile).

  • Restituirà i contenuti della cache, anche se potrebbero essere obsoleti.

Questo comportamento può essere configurato con i comandi ceph config set.

Per inviare al modulo l'istruzione di rispondere con i dati verosimilmente obsoleti, impostarlo su return:

cephuser@adm > ceph config set mgr mgr/prometheus/stale_cache_strategy return

Per inviare al modulo l'istruzione di rispondere con l'errore service unavailable, impostarlo su fail:

cephuser@adm > ceph config set mgr mgr/prometheus/stale_cache_strategy fail

16.5.4 Abilitazione del monitoraggio dell'immagine RBD

Tramite l'abilitazione dei contatori delle prestazioni dinamiche dell'OSD, il modulo Manager di Prometheus può facoltativamente raccogliere le statistiche I/O per ogni singola immagine RBD. Tali statistiche vengono raccolte per tutte le immagini all'interno dei pool specificati nel parametro di configurazione mgr/prometheus/rbd_stats_pools.

Il parametro è un elenco di voci pool[/namespace] separate da virgole o spazi. Se lo spazio dei nomi non è specificato, vengono raccolte le statistiche relative a tutti gli spazi dei nomi nel pool.

Esempio:

cephuser@adm > ceph config set mgr mgr/prometheus/rbd_stats_pools "pool1,pool2,poolN"

Il modulo effettua la scansione dei pool e degli spazi dei nomi specificati e crea un elenco di tutte le immagini disponibili e lo aggiorna periodicamente. È possibile configurare l'intervallo tramite il parametro mgr/prometheus/rbd_stats_pools_refresh_interval (secondi), impostato per default su 300 secondi (cinque minuti).

Ad esempio, se l'intervallo di sincronizzazione è stato modificato in 10 minuti:

cephuser@adm > ceph config set mgr mgr/prometheus/rbd_stats_pools_refresh_interval 600

16.6 Modello di sicurezza di Prometheus

Il modello di sicurezza di Prometheus presume che utenti non attendibili dispongano dell'accesso ai log e all'endpoint HTTP di Prometheus. Gli utenti non attendibili dispongono dell'accesso a tutti i (meta)dati raccolti da Prometheus e contenuti nel database, oltre a una serie di informazioni operative e di debug.

Tuttavia l'API HTTP di Prometheus è limitata alle operazioni di sola lettura. Non è possibile modificare le configurazioni utilizzando l'API e i segreti non vengono esposti. Inoltre, Prometheus dispone di misure integrate per attenuare l'impatto degli attacchi Denial of Service.

16.7 Webhook SNMP di Prometheus Alertmanager

Se si desidera ricevere notifiche sugli avvisi di Prometheus tramite trap SNMP, è possibile installare il webhook SNMP di Prometheus Alertmanager tramite cephadm. A tale scopo, è necessario creare un file della specifica del posizionamento e del servizio con i contenuti seguenti:

Nota
Nota

Per ulteriori informazioni sui file del servizio e del posizionamento, vedere Sezione 5.4.2, «Specifica del servizio e del posizionamento».

service_type: container
service_id: prometheus-webhook-snmp
placement:
    ADD_PLACEMENT_HERE
image: registry.suse.com/ses/7/prometheus-webhook-snmp:latest
args:
    - "--publish 9099:9099"
envs:
    - ARGS="--debug --snmp-host=ADD_HOST_GATEWAY_HERE"
    - RUN_ARGS="--metrics"
EOF

Utilizzare questa specifica del servizio per eseguire il servizio con le relative impostazioni di default.

Quando si esegue il servizio, è necessario pubblicare la porta di attesa del ricevitore Prometheus utilizzando l'argomento della riga di comando --publish HOST_PORT:CONTAINER_PORT, poiché tale porta non è esposta automaticamente dal container. È possibile eseguire questa operazione aggiungendo le righe seguenti alla specifica:

args:
    - "--publish 9099:9099"

In alternativa, connettere il container alla rete host tramite l'argomento della riga di comando --network=host.

args:
    - "--network=host"

Se il ricevitore di trap SNMP non è installato sullo stesso host del container, occorre specificare anche il nome di dominio completo (FQDN) dell'host SNMP. Utilizzare il gateway di rete del container per poter ricevere i trap SNMP al di fuori del container o dell'host.

envs:
    - ARGS="--debug --snmp-host=CONTAINER_GATEWAY"

16.7.1 Configurazione del servizio prometheus-webhook-snmp

È possibile configurare il container utilizzando le variabili di ambiente o un file di configurazione.

Per le variabili di ambiente, utilizzare ARGS per impostare le opzioni globali e RUN_ARGS per le opzioni del comando run. È necessario adattare la specifica del servizio come segue:

envs:
    - ARGS="--debug --snmp-host=CONTAINER_GATEWAY"
    - RUN_ARGS="--metrics --port=9101"

Per utilizzare un file di configurazione, la specifica del servizio deve essere adattata come segue:

files:
    etc/prometheus-webhook-snmp.conf:
        - "debug: True"
        - "snmp_host: ADD_HOST_GATEWAY_HERE"
        - "metrics: True"
volume_mounts:
    etc/prometheus-webhook-snmp.conf: /etc/prometheus-webhook-snmp.conf

Per procedere con la distribuzione, eseguire il comando seguente:

cephuser@adm > ceph orch apply -i SERVICE_SPEC_FILE

Consultare Sezione 5.4.3, «Distribuzione dei servizi Ceph» per maggiori informazioni.

16.7.2 Configurazione di Prometheus Alertmanager per SNMP

Infine, occorre configurare Prometheus Alertmanager specificamente per i trap SNMP. Se questo servizio non è già stato distribuito, creare un file della specifica del servizio. È necessario sostituire IP_OR_FQDN con l'indirizzo IP o con il nome di dominio completo dell'host su cui è stato installato il webhook SNMP di Prometheus Alertmanager. Esempio:

Nota
Nota

Se questo servizio è stato già distribuito, per assicurarsi che Alertmanager sia configurato correttamente per SNMP, ripetere la distribuzione con le impostazioni seguenti.

  service_type: alertmanager
  placement:
    hosts:
    - HOSTNAME
  webhook_configs:
    - 'http://IP_OR_FQDN:9099/'

Applicare la specifica del servizio con il comando seguente:

cephuser@adm > ceph orch apply -i SERVICE_SPEC_FILE