L'integrazione di MariaDB raccoglie le metriche relative alle prestazioni relative a InnoDB, al pool di buffer e a varie altre operazioni. Raccoglie inoltre log generali, di errore e di query lente e li analizza in un payload JSON. I log degli errori vengono analizzati per il codice di errore e il sottosistema. I log delle query lente vengono analizzati in coppie chiave-valore che descrivono le prestazioni di una query, inclusi il tempo di query e le righe esaminate.
Per ulteriori informazioni su MariaDB, consulta mariadb.org .
Prerequisiti
Per raccogliere la telemetria di MariaDB, devi installare l'agente operativo 2.8.0 o versioni successive.
Questo ricevitore supporta le versioni MariaDB da 10.1.X a 10.7.X.Configura la tua istanza MariaDB
MariaDB è un fork supportato dal punto di vista commerciale sviluppato dalla community del sistema di gestione di database relazionali (RDBMS) MySQL. Per raccogliere i log e le metriche per
MariaDB, utilizza i destinatari mysql
.
Il ricevitore mysql
si connette per impostazione predefinita a un server MariaDB locale tramite un socket Unix e l'autenticazione Unix come utente root
.
Configurare l'agente operativo per MariaDB
Seguendo la guida per la configurazione dell'agente Ops, aggiungi gli elementi richiesti per raccogliere i log e le metriche dalle istanze MariaDB e riavvia l'agente.
Esempio di configurazione
Il comando seguente crea il file di configurazione per raccogliere e importare log e metriche per MariaDB e riavvia l'agente Ops su Linux.
sudo tee /etc/google-cloud-ops-agent/config.yaml > /dev/null << EOF
logging:
receivers:
mysql_error:
type: mysql_error
mysql_general:
type: mysql_general
mysql_slow:
type: mysql_slow
service:
pipelines:
mysql:
receivers:
- mysql_error
- mysql_general
- mysql_slow
metrics:
receivers:
mysql:
type: mysql
service:
pipelines:
mysql:
receivers:
- mysql
EOF
sudo service google-cloud-ops-agent restart
Per connetterti all'istanza MariaDB utilizzando una connessione TCP con un nome utente e una password, specifica il nome utente e la password nel ricevitore delle metriche. Ad esempio:
metrics:
receivers:
mysql:
type: mysql
endpoint: localhost:3306
password: pwd
username: usr
service:
pipelines:
mysql:
receivers:
- mysql
Configura raccolta log
Per importare i log da MariaDB, devi creare i ricevitori per i log generati da MariaDB e quindi creare una pipeline per i nuovi destinatari.
Per configurare un ricevitore per i log di mysql_error
, specifica i campi seguenti:
Campo | Predefinito | Descrizione |
---|---|---|
type |
Questo valore deve essere mysql_error . |
|
include_paths |
[/var/log/mysqld.log, /var/log/mysql/mysqld.log, /var/log/mysql/error.log] |
Un elenco di percorsi di file system da leggere accodando ogni file. Nei percorsi è possibile utilizzare un carattere jolly (* ), ad esempio /var/log/mysql/*.log . |
exclude_paths |
[] |
Un elenco di pattern del percorso del file system da escludere dal set che corrisponde a include_paths . |
record_log_file_path |
false |
Se è impostato su true , il percorso del file specifico da cui è stato ottenuto il record viene visualizzato nella voce di log di output come valore dell'etichetta agent.googleapis.com/log_file_path . Quando utilizzi un carattere jolly, viene registrato solo il percorso del file da cui è stato ottenuto il record. |
wildcard_refresh_interval |
60s |
L'intervallo di aggiornamento dei percorsi dei file con caratteri jolly in include_paths . Specificato come durata, ad esempio 30s o 2m . Questa proprietà potrebbe essere utile con velocità effettiva di logging elevate in cui i file di log vengono ruotati più velocemente dell'intervallo predefinito. |
Per configurare un ricevitore per i tuoi log mysql_general
, specifica i seguenti campi:
Campo | Predefinito | Descrizione |
---|---|---|
type |
Questo valore deve essere mysql_general . |
|
include_paths |
[/var/lib/mysql/${HOSTNAME}.log] |
I file di log da leggere. |
exclude_paths |
[] |
Un elenco di pattern del percorso del file system da escludere dal set che corrisponde a include_paths . |
record_log_file_path |
false |
Se è impostato su true , il percorso del file specifico da cui è stato ottenuto il record viene visualizzato nella voce di log di output come valore dell'etichetta agent.googleapis.com/log_file_path . Quando utilizzi un carattere jolly, viene registrato solo il percorso del file da cui è stato ottenuto il record. |
wildcard_refresh_interval |
60s |
L'intervallo di aggiornamento dei percorsi dei file con caratteri jolly in include_paths . Specificato come durata, ad esempio 30s o 2m . Questa proprietà potrebbe essere utile con velocità effettiva di logging elevate in cui i file di log vengono ruotati più velocemente dell'intervallo predefinito. |
Per configurare un ricevitore per i tuoi log mysql_slow
, specifica i seguenti campi:
Campo | Predefinito | Descrizione |
---|---|---|
type |
Questo valore deve essere mysql_slow . |
|
include_paths |
[/var/lib/mysql/${HOSTNAME}-slow.log] |
I file di log da leggere. |
exclude_paths |
[] |
Un elenco di pattern del percorso del file system da escludere dal set che corrisponde a include_paths . |
record_log_file_path |
false |
Se è impostato su true , il percorso del file specifico da cui è stato ottenuto il record viene visualizzato nella voce di log di output come valore dell'etichetta agent.googleapis.com/log_file_path . Quando utilizzi un carattere jolly, viene registrato solo il percorso del file da cui è stato ottenuto il record. |
wildcard_refresh_interval |
60s |
L'intervallo di aggiornamento dei percorsi dei file con caratteri jolly in include_paths . Specificato come durata, ad esempio 30s o 2m . Questa proprietà potrebbe essere utile con velocità effettiva di logging elevate in cui i file di log vengono ruotati più velocemente dell'intervallo predefinito. |
Che cosa viene registrato
I logName
dei log mysql_error
, mysql_general
e mysql_slow
vengono
ricavati dagli ID ricevitore specificati nella configurazione.
A seconda della versione di MariaDB, i log mysql_error
potrebbero contenere i seguenti campi all'interno di LogEntry
:
Campo | Tipo | Descrizione |
---|---|---|
jsonPayload.level |
string | Livello voce di log |
jsonPayload.tid |
number | ID thread in cui ha origine il log |
jsonPayload.errorCode |
string | Codice di errore MariaDB associato al log |
jsonPayload.subsystem |
string | Sottosistema MariaDB da cui ha avuto origine il log |
jsonPayload.message |
string | Messaggio di log |
severity |
stringa (LogSeverity ) |
Livello voce di log (tradotto) |
timestamp |
stringa (Timestamp ) |
L'ora in cui è stata ricevuta la richiesta |
I campi vuoti o mancanti non saranno presenti nella voce di log.
I log di mysql_general
contengono i seguenti campi in LogEntry
:
Campo | Tipo | Descrizione |
---|---|---|
jsonPayload.tid |
number | ID thread in cui ha origine il log |
jsonPayload.command |
string | Tipo di azione di database che viene registrata |
jsonPayload.message |
string | Log dell'azione del database |
timestamp |
stringa (Timestamp ) |
L'ora in cui la voce è stata registrata. |
I log di mysql_slow
contengono i seguenti campi in LogEntry
:
Campo | Tipo | Descrizione |
---|---|---|
jsonPayload.user |
string | Utente che ha eseguito la query |
jsonPayload.database |
string | Database in cui è stata eseguita la query |
jsonPayload.host |
string | Host dell'istanza di database |
jsonPayload.ipAddress |
string | Indirizzo dell'istanza di database |
jsonPayload.tid |
number | ID thread in cui è stata registrata la query |
jsonPayload.queryTime |
number | Il tempo di esecuzione dell'estratto conto in secondi |
jsonPayload.lockTime |
number | Il tempo necessario per acquisire i blocchi in secondi |
jsonPayload.rowsSent |
number | Il numero di righe inviate al client |
jsonPayload.rowsExamined |
number | Il numero di righe esaminate dal livello del server |
jsonPayload.errorNumber † |
number | Il numero di errore dell'estratto conto o 0 se non si è verificato alcun errore |
jsonPayload.killed † |
number | Se l'istruzione è stata terminata, il numero di errore indica il motivo o 0 se l'istruzione è stata chiusa normalmente. |
jsonPayload.bytesReceived † |
number | Il numero di byte ricevuti da tutti i client |
jsonPayload.bytesSent † |
number | Il numero di byte inviati a tutti i client |
jsonPayload.readFirst † |
number | Il numero di volte in cui è stata letta la prima voce di un indice |
jsonPayload.readLast † |
number | Il numero di richieste di lettura dell'ultima chiave di un indice |
jsonPayload.readKey † |
number | Il numero di richieste di lettura di una riga in base a una chiave |
jsonPayload.readNext † |
number | Il numero di richieste di lettura della riga successiva in ordine chiave |
jsonPayload.readPrev † |
number | Il numero di richieste di lettura della riga precedente in ordine di chiavi |
jsonPayload.readRnd † |
number | Il numero di richieste di lettura di una riga in base a una posizione fissa |
jsonPayload.readRndNext † |
number | Il numero di richieste di lettura della riga successiva nel file di dati |
jsonPayload.sortMergePasses † |
number | Il numero di pass di unione che l'algoritmo di ordinamento ha dovuto eseguire |
jsonPayload.sortRangeCount † |
number | Il numero di ordinazioni effettuate utilizzando gli intervalli |
jsonPayload.sortRows † |
number | Il numero di righe ordinate |
jsonPayload.sortScanCount † |
number | Il numero di tipi di operazioni eseguiti tramite la tabella |
jsonPayload.createdTmpDiskTables † |
number | Il numero di tabelle temporanee interne sul disco create dal server |
jsonPayload.createdTmpTables † |
number | Il numero di tabelle temporanee interne create dal server |
jsonPayload.startTime † |
string | L'ora di inizio dell'esecuzione dell'estratto conto |
jsonPayload.endTime † |
string | Ora di fine esecuzione dell'istruzione |
jsonPayload.message |
string | Testo completo della query |
timestamp |
stringa (Timestamp ) |
L'ora in cui la voce è stata registrata. |
†
Questi campi vengono forniti solo se la variabile di sistema log_slow_extra
è impostata su 'ON'
. Questa variabile è disponibile a partire da MySQL 8.0.14.
Per informazioni su questi campi, consulta la documentazione di MySQL.
Configurazione della raccolta di metriche
Per raccogliere metriche da MariaDB, devi creare un ricevitore per le metriche MariaDB, quindi creare una pipeline per il nuovo destinatario. Per configurare un ricevitore per le metriche MariaDB, specifica i seguenti campi:
Campo | Predefinito | Descrizione |
---|---|---|
type |
Il valore deve essere mysql . |
|
endpoint |
localhost:3306 |
L'URL esposto da MariaDB. |
collection_interval |
60s |
Un valore time.Duration, come 30s o 5m . |
username |
root |
Il nome utente utilizzato per la connessione al server. |
password |
La password utilizzata per connettersi al server. |
Che cosa viene monitorato
La tabella seguente fornisce l'elenco delle metriche che l'agente operativo raccoglie dall'istanza MariaDB.
Tipo di metrica | |
---|---|
Tipo, Tipo Risorse monitorate |
Etichette |
workload.googleapis.com/mysql.buffer_pool_operations
|
|
CUMULATIVE , INT64 gce_instance |
operation
|
workload.googleapis.com/mysql.buffer_pool_pages
|
|
GAUGE , DOUBLE gce_instance |
kind
|
workload.googleapis.com/mysql.buffer_pool_size
|
|
GAUGE , DOUBLE gce_instance |
kind
|
workload.googleapis.com/mysql.commands
|
|
CUMULATIVE , INT64 gce_instance |
command
|
workload.googleapis.com/mysql.double_writes
|
|
CUMULATIVE , INT64 gce_instance |
kind
|
workload.googleapis.com/mysql.handlers
|
|
CUMULATIVE , INT64 gce_instance |
kind
|
workload.googleapis.com/mysql.locks
|
|
CUMULATIVE , INT64 gce_instance |
kind
|
workload.googleapis.com/mysql.log_operations
|
|
CUMULATIVE , INT64 gce_instance |
operation
|
workload.googleapis.com/mysql.operations
|
|
CUMULATIVE , INT64 gce_instance |
operation
|
workload.googleapis.com/mysql.page_operations
|
|
CUMULATIVE , INT64 gce_instance |
operation
|
workload.googleapis.com/mysql.row_locks
|
|
CUMULATIVE , INT64 gce_instance |
kind
|
workload.googleapis.com/mysql.row_operations
|
|
CUMULATIVE , INT64 gce_instance |
operation
|
workload.googleapis.com/mysql.sorts
|
|
CUMULATIVE , INT64 gce_instance |
kind
|
workload.googleapis.com/mysql.threads
|
|
GAUGE , DOUBLE gce_instance |
kind
|
Verificare la configurazione
Puoi utilizzare Esplora log e Metrics Explorer per verificare di aver configurato correttamente il ricevitore MariaDB. L'agente operativo potrebbe richiedere uno o due minuti per iniziare a raccogliere i log e le metriche.
Per verificare che i log siano stati importati, vai a Esplora log ed esegui la query seguente per visualizzare i log di MariaDB:
resource.type="gce_instance"
logName=("projects/PROJECT_ID/logs/mysql_error" OR "projects/PROJECT_ID/logs/mysql_general" OR "projects/PROJECT_ID/logs/mysql_slow")
Per verificare l'importazione delle metriche, vai a Metrics Explorer ed esegui la seguente query nella scheda MQL.
fetch gce_instance
| metric 'workload.googleapis.com/mysql.commands'
| align rate(1m)
| every 1m
Passaggi successivi
Per una procedura dettagliata su come utilizzare Ansible per installare l'agente Ops, configurare un'applicazione di terze parti e installare una dashboard di esempio, guarda il video Installare l'agente Ops per risolvere i problemi delle applicazioni di terze parti.