Die MariaDB-Integration erfasst Leistungsmesswerte für InnoDB, den Zwischenspeicherpool und verschiedene andere Vorgänge. Außerdem werden allgemeine Logs, Fehlerlogs und Logs für langsame Abfragen erfasst und in eine JSON-Nutzlast geparst. Fehlerlogs werden nach ihrem Fehlercode und Subsystem geparst. Logs für langsame Abfragen werden in Schlüssel/Wert-Paare geparst, die die Leistung einer Abfrage beschreiben, einschließlich der Abfragezeit und der untersuchten Zeilen.
Weitere Informationen zu MariaDB finden Sie unter mariadb.org.
Vorbereitung
Zum Erfassen von MariaDB-Telemetrie müssen Sie Ops-Agent-Version 2.8.0 oder höher installieren.
Dieser Empfänger unterstützt die MariaDB-Versionen 10.1.X bis 10.7.X.MariaDB-Instanz konfigurieren
MariaDB ist eine von der Community entwickelte, kommerziell unterstützte Verzweigung des relationalen Datenbankverwaltungssystems (RDBMS) für MySQL. Zum Erfassen von Logs und Messwerten für MariaDB verwenden Sie die Empfänger mysql
.
Der mysql
-Empfänger stellt standardmäßig über einen Unix-Socket und eine Unix-Authentifizierung als root
-Nutzer eine Verbindung zu einem lokalen MariaDB-Server her.
Ops-Agent für MariaDB konfigurieren
Fügen Sie die erforderlichen Elemente zum Erfassen von Logs und Messwerten aus den MariaDB-Instanzen gemäß der Anleitung unter Ops-Agent konfigurieren hinzu und starten Sie den Agent neu.
Konfigurationsbeispiel
Der folgende Befehl erstellt die Konfigurationsdatei, um Logs und Messwerte für MariaDB zu erfassen und aufzunehmen, und startet den Ops-Agent unter Linux neu.
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
Wenn Sie eine Verbindung zu Ihrer MariaDB-Instanz über eine TCP-Verbindung mit einem Nutzernamen und einem Passwort herstellen möchten, geben Sie in dem Messwertempfänger den Nutzernamen und das Passwort an. Beispiel:
metrics:
receivers:
mysql:
type: mysql
endpoint: localhost:3306
password: pwd
username: usr
service:
pipelines:
mysql:
receivers:
- mysql
Logerfassung konfigurieren
Um Logs von MariaDB aufzunehmen, müssen Sie Empfänger für die von MariaDB erzeugten Logs erstellen und dann eine Pipeline für die neuen Empfänger erstellen.
Geben Sie die folgenden Felder an, um einen Empfänger für Ihre mysql_error
-Logs zu konfigurieren:
Feld | Standard | Beschreibung |
---|---|---|
type |
Dieser Wert muss mysql_error sein. |
|
include_paths |
[/var/log/mysqld.log, /var/log/mysql/mysqld.log, /var/log/mysql/error.log] |
Eine Liste mit Dateisystempfaden, die durch Tailing jeder Datei gelesen werden sollen. In den Pfaden kann ein Platzhalter (* ) verwendet werden. Beispiel: /var/log/mysql/*.log . |
exclude_paths |
[] |
Eine Liste von Dateisystempfadmustern, die aus dem mit include_paths übereinstimmenden Satz ausgeschlossen werden sollen. |
record_log_file_path |
false |
Wenn true festgelegt ist, wird der Pfad zu der spezifischen Datei, aus der der Logdatensatz abgerufen wurde, im Ausgabelogeintrag als Wert des Labels agent.googleapis.com/log_file_path angezeigt. Bei Verwendung eines Platzhalters wird nur der Pfad der Datei aufgezeichnet, aus der der Eintrag abgerufen wurde. |
wildcard_refresh_interval |
60s |
Das Intervall, in dem Platzhalterdateipfade in include_paths aktualisiert werden. Wird als Zeitdauer angegeben, z. B. 30s oder 2m . Dieses Attribut kann bei hohen Logging-Durchsätzen nützlich sein, wenn Logdateien schneller als das Standardintervall rotiert werden. |
Geben Sie die folgenden Felder an, um einen Empfänger für Ihre mysql_general
-Logs zu konfigurieren:
Feld | Standard | Beschreibung |
---|---|---|
type |
Dieser Wert muss mysql_general sein. |
|
include_paths |
[/var/lib/mysql/${HOSTNAME}.log] |
Die zu lesenden Logdateien. |
exclude_paths |
[] |
Eine Liste von Dateisystempfadmustern, die aus dem mit include_paths übereinstimmenden Satz ausgeschlossen werden sollen. |
record_log_file_path |
false |
Wenn true festgelegt ist, wird der Pfad zu der spezifischen Datei, aus der der Logdatensatz abgerufen wurde, im Ausgabelogeintrag als Wert des Labels agent.googleapis.com/log_file_path angezeigt. Bei Verwendung eines Platzhalters wird nur der Pfad der Datei aufgezeichnet, aus der der Eintrag abgerufen wurde. |
wildcard_refresh_interval |
60s |
Das Intervall, in dem Platzhalterdateipfade in include_paths aktualisiert werden. Wird als Zeitdauer angegeben, z. B. 30s oder 2m . Dieses Attribut kann bei hohen Logging-Durchsätzen nützlich sein, wenn Logdateien schneller als das Standardintervall rotiert werden. |
Geben Sie die folgenden Felder an, um einen Empfänger für Ihre mysql_slow
-Logs zu konfigurieren:
Feld | Standard | Beschreibung |
---|---|---|
type |
Dieser Wert muss mysql_slow sein. |
|
include_paths |
[/var/lib/mysql/${HOSTNAME}-slow.log] |
Die zu lesenden Logdateien. |
exclude_paths |
[] |
Eine Liste von Dateisystempfadmustern, die aus dem mit include_paths übereinstimmenden Satz ausgeschlossen werden sollen. |
record_log_file_path |
false |
Wenn true festgelegt ist, wird der Pfad zu der spezifischen Datei, aus der der Logdatensatz abgerufen wurde, im Ausgabelogeintrag als Wert des Labels agent.googleapis.com/log_file_path angezeigt. Bei Verwendung eines Platzhalters wird nur der Pfad der Datei aufgezeichnet, aus der der Eintrag abgerufen wurde. |
wildcard_refresh_interval |
60s |
Das Intervall, in dem Platzhalterdateipfade in include_paths aktualisiert werden. Wird als Zeitdauer angegeben, z. B. 30s oder 2m . Dieses Attribut kann bei hohen Logging-Durchsätzen nützlich sein, wenn Logdateien schneller als das Standardintervall rotiert werden. |
Was wird protokolliert?
Der logName
der Logs mysql_error
, mysql_general
und mysql_slow
werden von den Empfänger-IDs abgeleitet, die in der Konfiguration angegeben sind.
Je nach MariaDB-Version können mysql_error
-Logs die folgenden Felder im LogEntry
enthalten:
Feld | Typ | Beschreibung |
---|---|---|
jsonPayload.level |
String | Logeintragsebene |
jsonPayload.tid |
Zahl | Thread-ID, von der das Log stammt |
jsonPayload.errorCode |
String | Mit dem Log verknüpfter MariaDB-Fehlercode |
jsonPayload.subsystem |
String | MariaDB-Subsystem, von dem das Log stammt |
jsonPayload.message |
String | Log-Nachricht |
severity |
String (LogSeverity ) |
Ebene des Logeintrags (übersetzt) |
timestamp |
String (Timestamp ) |
Zeitpunkt des Eingangs der Anfrage |
Leere oder fehlende Felder werden nicht im Logeintrag angezeigt.
mysql_general
-Logs enthalten die folgenden Felder in LogEntry
:
Feld | Typ | Beschreibung |
---|---|---|
jsonPayload.tid |
Zahl | Thread-ID, von der das Log stammt |
jsonPayload.command |
String | Typ der zu protokollierenden Datenbankaktion |
jsonPayload.message |
String | Log der Datenbankaktion |
timestamp |
String (Timestamp ) |
Zeitpunkt, zu dem der Eintrag protokolliert wurde |
mysql_slow
-Logs enthalten die folgenden Felder in LogEntry
:
Feld | Typ | Beschreibung |
---|---|---|
jsonPayload.user |
String | Nutzer, der die Abfrage ausgeführt hat |
jsonPayload.database |
String | Datenbank, in der die Abfrage ausgeführt wurde |
jsonPayload.host |
String | Host der Datenbankinstanz |
jsonPayload.ipAddress |
String | Adresse der Datenbankinstanz |
jsonPayload.tid |
Zahl | Thread-ID, unter der die Abfrage protokolliert wurde |
jsonPayload.queryTime |
Zahl | Die Ausführungszeit der Anweisung in Sekunden |
jsonPayload.lockTime |
Zahl | Die Zeit in Sekunden, die zum Abrufen von Sperren benötigt wurde |
jsonPayload.rowsSent |
Zahl | Die Anzahl der an den Client gesendeten Zeilen |
jsonPayload.rowsExamined |
Zahl | Die Anzahl der von der Serverebene untersuchten Zeilen |
jsonPayload.errorNumber † |
Zahl | Die Fehlernummer der Anweisung oder 0, wenn kein Fehler aufgetreten ist |
jsonPayload.killed † |
Zahl | Wenn die Anweisung beendet wurde, gibt die Fehlernummer den Grund an oder 0, wenn die Anweisung normal beendet wurde |
jsonPayload.bytesReceived † |
Zahl | Die Anzahl der von allen Clients empfangenen Byte |
jsonPayload.bytesSent † |
Zahl | Die Anzahl der Byte, die an alle Clients gesendet wurden |
jsonPayload.readFirst † |
Zahl | Die Häufigkeit, mit der der erste Eintrag in einem Index gelesen wurde |
jsonPayload.readLast † |
Zahl | Die Anzahl der Anfragen zum Lesen des letzten Schlüssels in einem Index |
jsonPayload.readKey † |
Zahl | Die Anzahl der Anfragen zum Lesen einer Zeile basierend auf einem Schlüssel |
jsonPayload.readNext † |
Zahl | Die Anzahl der Anfragen zum Lesen der nächsten Zeile in der Schlüsselreihenfolge |
jsonPayload.readPrev † |
Zahl | Anzahl der Anfragen zum Lesen der vorherigen Zeile in der Schlüsselreihenfolge |
jsonPayload.readRnd † |
Zahl | Die Anzahl der Anfragen zum Lesen einer Zeile basierend auf einer festen Position |
jsonPayload.readRndNext † |
Zahl | Die Anzahl der Anfragen zum Lesen der nächsten Zeile in der Datendatei |
jsonPayload.sortMergePasses † |
Zahl | Anzahl der Zusammenführungen, die der Sortieralgorithmus ausführen musste |
jsonPayload.sortRangeCount † |
Zahl | Die Anzahl der Sortierungen, die mithilfe von Bereichen durchgeführt wurden |
jsonPayload.sortRows † |
Zahl | Die Anzahl der sortierten Zeilen |
jsonPayload.sortScanCount † |
Zahl | Die Anzahl der Sortierungen, die durch Scannen der Tabelle durchgeführt wurden |
jsonPayload.createdTmpDiskTables † |
Zahl | Die Anzahl der internen temporären Tabellen auf dem Laufwerk, die vom Server erstellt wurden |
jsonPayload.createdTmpTables † |
Zahl | Die Anzahl der internen temporären Tabellen, die vom Server erstellt werden |
jsonPayload.startTime † |
String | Beginn der Anweisungsausführung |
jsonPayload.endTime † |
String | Ende der Anweisungsausführung |
jsonPayload.message |
String | Vollständiger Text der Abfrage |
timestamp |
String (Timestamp ) |
Zeitpunkt, zu dem der Eintrag protokolliert wurde |
†
Diese Felder werden nur bereitgestellt, wenn die Systemvariable log_slow_extra
auf 'ON'
gesetzt ist. Diese Variable ist ab MySQL 8.0.14 verfügbar.
Informationen zu diesen Feldern finden Sie in der MySQL-Dokumentation.
Messwerterfassung konfigurieren
Um Messwerte aus MariaDB zu erfassen, müssen Sie einen Empfänger für MariaDB-Messwerte erstellen und dann eine Pipeline für den neuen Empfänger erstellen. Um einen Empfänger für Ihre MariaDB-Messwerte zu konfigurieren, geben Sie die folgenden Felder an:
Feld | Standard | Beschreibung |
---|---|---|
type |
Der Wert muss mysql betragen. |
|
endpoint |
localhost:3306 |
Die von MariaDB bereitgestellte URL. |
collection_interval |
60s |
Ein Wert für time.Duration, wie z. B. 30s oder 5m . |
username |
root |
Das Nutzername für die Verbindung mit dem Server. |
password |
Das Passwort für die Verbindung mit dem Server. |
Was wird überwacht?
Die folgende Tabelle enthält die Liste der Messwerte, die der Ops-Agent aus der MariaDB-Instanz erfasst.
Messwerttyp | |
---|---|
Art, Typ Überwachte Ressourcen |
Label |
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
|
Konfiguration prüfen
Mit dem Log-Explorer und dem Metrics Explorer können Sie prüfen, ob Sie den MariaDB-Empfänger richtig konfiguriert haben. Es kann ein bis zwei Minuten dauern, bis der Ops-Agent beginnt, Logs und Messwerte zu erfassen.
Um zu prüfen, ob die Logs aufgenommen wurden, rufen Sie den Log-Explorer auf. Führen Sie dann die folgende Abfrage aus, um die MariaDB-Logs aufzurufen:
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")
Um zu prüfen, ob die Messwerte aufgenommen wurden, rufen Sie den Metrics Explorer auf und führen Sie die folgende Abfrage auf dem Tab MQL aus.
fetch gce_instance
| metric 'workload.googleapis.com/mysql.commands'
| align rate(1m)
| every 1m
Nächste Schritte
Eine Anleitung zur Installation von Ops-Agent mit Ansible zum Konfigurieren einer Drittanbieteranwendung und zum Installieren eines Beispieldashboards finden Sie im Video Ops-Agent installieren, um Fehler in Drittanbieteranwendungen zu beheben.