Database
 sql >> Database >  >> RDS >> Database

Monitoraggio delle prestazioni per TimescaleDB

ClusterControl è uno strumento facile da usare per monitorare le prestazioni di TimescaleDB in tempo reale. Fornisce dozzine di grafici predefiniti per visualizzare un'ampia varietà di statistiche sulle prestazioni relative ad utenti, throughput, tablespace, registri di ripristino, buffer, cache e I/O, ad esempio. Fornisce inoltre informazioni in tempo reale sul carico di lavoro del database. Il mio collega Sebastian ha precedentemente scritto su come distribuire facilmente TimescaleDB. In questo blog, ti mostreremo come monitorare diversi aspetti delle prestazioni di TimescaleDB con ClusterControl. Prima di tutto, consentitemi di fornire un po' di introduzione su TimescaleDB.

TimescaleDB è implementato come estensione su PostgreSQL, il che significa che un database Timescale viene eseguito all'interno di un'istanza PostgreSQL. Il modello di estensione consente al database di sfruttare molti degli attributi di PostgreSQL come affidabilità, sicurezza e connettività a un'ampia gamma di strumenti di terze parti. Allo stesso tempo, TimescaleDB sfrutta l'alto grado di personalizzazione disponibile per le estensioni aggiungendo hook in profondità nel pianificatore di query, nel modello di dati e nel motore di esecuzione di PostgreSQL. Il suo ecosistema parla il linguaggio nativo di PostgreSQL e aggiunge funzioni specializzate (e ottimizzazioni di query) per lavorare con i dati di serie temporali. Uno dei vantaggi offerti da TimescaleDB rispetto ad altri datastore specializzati per l'archiviazione di dati IoT o serie temporali è che puoi utilizzare la sintassi SQL, il che significa che puoi sfruttare i JOIN. Quindi eseguire query su metadati diversi è più facile per gli sviluppatori:semplifica il loro stack ed elimina i silos di dati.

TimescaleDB è stato testato e confrontato con centinaia di miliardi di righe e si adatta molto bene, specialmente con upsert o inserti rispetto a PostgreSQL vanilla. Se sei interessato ai loro strumenti di benchmarking, potresti prendere in considerazione la possibilità di dare un'occhiata alla loro Time Series Benchmark Suite (TSBS).

Usare TimescaleDB è abbastanza semplice se hai familiarità con un RDBMS come MySQL o PostgreSQL. Devi specificare il tuo database e creare un'estensione per TimescaleDB. Una volta creato, crei un Hypertable, che gestisce virtualmente tutte le interazioni degli utenti con TimescaleDB. Vedi un esempio qui sotto:

nyc_data=# CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;
WARNING:  
WELCOME TO
 _____ _                               _     ____________  
|_   _(_)                             | |    |  _  \ ___ \ 
  | |  _ _ __ ___   ___  ___  ___ __ _| | ___| | | | |_/ / 
  | | | |  _ ` _ \ / _ \/ __|/ __/ _` | |/ _ \ | | | ___ \ 
  | | | | | | | | |  __/\__ \ (_| (_| | |  __/ |/ /| |_/ /
  |_| |_|_| |_| |_|\___||___/\___\__,_|_|\___|___/ \____/
               Running version 1.2.2
For more information on TimescaleDB, please visit the following links:

 1. Getting started: https://docs.timescale.com/getting-started
 2. API reference documentation: https://docs.timescale.com/api
 3. How TimescaleDB is designed: https://docs.timescale.com/introduction/architecture

Note: TimescaleDB collects anonymous reports to better understand and assist our users.
For more information and how to disable, please see our docs https://docs.timescaledb.com/using-timescaledb/telemetry.

CREATE EXTENSION
nyc_data=# SELECT create_hypertable('rides_count', 'one_hour');
    create_hypertable     
--------------------------
 (1,public,rides_count,t)
(1 row)

Semplice come quella. Tuttavia, una volta che i dati diventano grandi, una domanda di follow-up che potresti avere sarebbe "Come puoi monitorare le prestazioni di TimescaleDB"? Bene, questo è ciò di cui parla il nostro blog. Vediamo come puoi farlo con ClusterControl.

Monitoraggio dei cluster TimescaleDB

Il monitoraggio di un cluster TimescaleDB in ClusterControl è quasi lo stesso del monitoraggio di un cluster di database PostgreSQL. Abbiamo i grafici a livello di cluster e nodo, dashboard, topologie, monitoraggio delle query e prestazioni. Esaminiamo ciascuno di questi.

La scheda "Panoramica"

I grafici di panoramica possono essere individuati andando su Cluster → Panoramica scheda.

In questa visualizzazione puoi visualizzare il carico del server, il tasso di hit della cache o filtrare su altre metriche:block-hit, block-read, commit o numero di connessioni.

Puoi anche creare le tue impostazioni dashboard personalizzate qui, proprio come il mio esempio di seguito che recupera i blocchi-hit e i blocchi-letti.

Questo è un buon punto di partenza per monitorare l'attività di rete, controllare il trasferimento e ricevere i pacchetti.

La scheda "Nodi"

I grafici dei nodi possono essere individuati andando su Cluster → Nodi scheda. Questo contiene una vista approfondita dei tuoi nodi, con metriche a livello di host e database. Vedi il grafico qui sotto:

Puoi anche controllare i principali processi in esecuzione nel sistema host se fai clic su "Top " tab. Vedi uno screenshot di esempio qui sotto:

Ci sono anche alcune funzionalità facendo clic con il pulsante destro del mouse sul nodo in cui è possibile abilitare l'archiviazione WAL o riavviare il demone PostgreSQL o riavviare l'host. Vedi l'immagine come mostrato di seguito:

Questo può essere utile se desideri pianificare la manutenzione su un nodo con prestazioni insufficienti.

La scheda "Dashboard"

Dashboards è stato rilasciato appena l'anno scorso e con il supporto dei dashboard di PostgreSQL puoi sfruttare questi grafici. Ad esempio, ho inserito 1 milione di righe nel database nyc_data. Guarda di seguito come si riflette nel dashboard di panoramica di PostgreSQL:

Dopo aver inserito le righe da 1,1 M, possiamo vedere che il nodo 192.168.70.40 è ancora performante e non c'è alcun segno di CPU elevata e utilizzo elevato del disco. Guarda la seguente dashboard mentre ne monitoriamo le prestazioni:

Oltre al dashboard Panoramica del cluster, puoi anche avere una visione dettagliata delle prestazioni del sistema. Vedi immagine sotto:

La scheda "Topologia"

Questa scheda è semplice ma offre una vista della topologia di replica master-slave. Ti fornisce informazioni brevi ma concise su come si comportano il tuo padrone e gli schiavi. Vedi immagine sotto:

La scheda "Monitoraggio query"

Il monitoraggio delle query in TimescaleDB è molto importante per un DBA e per gli sviluppatori che gestiscono la logica dell'applicazione. Questa scheda è molto importante per capire come funzionano le query. Puoi visualizzare qui le query principali, le query in esecuzione, i valori anomali delle query e le statistiche delle query. Ad esempio, puoi visualizzare le query in esecuzione su tutti gli host oppure filtrare in base al nodo che stai tentando di monitorare. Un esempio di seguito mostra come appare quando viene visualizzato in Query Monitor.

Se vuoi raccogliere statistiche sui tuoi blocchi/indici TimescaleDB, puoi trarne vantaggio qui in Query Statistics. Mostra un elenco dei tuoi indici utilizzati da TimescaleDB. Vedi immagine sotto:

Non solo è possibile visualizzare le statistiche di indici specifici, ma anche filtrarli in base alle statistiche di I/O della tabella, alle statistiche di I/O dell'indice o alle attese di blocco esclusive. Quindi puoi controllare gli altri elementi nell'elenco "Statistiche" che preferisci monitorare.

La scheda "Prestazioni"

In questa scheda, è qui che puoi rivedere le variabili impostate per l'ottimizzazione e l'ottimizzazione, impostare advisor, controllare la crescita del database e generare un'analisi dello schema per raccogliere tabelle senza chiavi primarie.

Ad esempio, puoi visualizzare fianco a fianco i nodi disponibili nel setup e confrontare le variabili. Vedi la scheda sotto:

È tutto per ora. Sarebbe bello ricevere il tuo feedback e soprattutto farci sapere cosa ci stiamo perdendo.