MariaDB

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

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
GAUGEDOUBLE
gce_instance
kind
workload.googleapis.com/mysql.buffer_pool_size
GAUGEDOUBLE
gce_instance
kind
workload.googleapis.com/mysql.commands
CUMULATIVE, INT64
gce_instance
command
workload.googleapis.com/mysql.double_writes
CUMULATIVEINT64
gce_instance
kind
workload.googleapis.com/mysql.handlers
CUMULATIVE, INT64
gce_instance
kind
workload.googleapis.com/mysql.locks
CUMULATIVEINT64
gce_instance
kind
workload.googleapis.com/mysql.log_operations
CUMULATIVE, INT64
gce_instance
operation
workload.googleapis.com/mysql.operations
CUMULATIVEINT64
gce_instance
operation
workload.googleapis.com/mysql.page_operations
CUMULATIVE, INT64
gce_instance
operation
workload.googleapis.com/mysql.row_locks
CUMULATIVEINT64
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
GAUGEDOUBLE
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.