Die Datenbank überwachen
Diese Seite richtet sich an Datenbankadministratoren, die Überwachung und Alarmierung für die Datenbank einer Exponential-Website einrichten. Sie beantwortet: was die Anwendung selbst über ihre Datenbank meldet, wie Sie es aus einem Skript lesen, welche Logzeilen einen Alarm verdienen und welche Prüfungen zur Engine gehören. Die Sicht der Anwendung und die Sicht des Servers ergänzen sich: Die erste sagt Ihnen, ob die Website die Datenbank nutzen kann, die zweite, wie es dem Server geht.
Inhalt
- Setup > Systeminformationen
- Aus einem Skript: exp:system:info
- Logdateien und Muster
- Warteschlangen
- Je Engine
- Checkliste
Setup > Systeminformationen
Die Seite braucht die Richtlinie setup/system_info und liest nur (Systeminformationen):
- Karte Datenbank: Engine und Serverversion, Treiberklasse, die Datei (SQLite) oder Server und Datenbankname, Zeichensatz, Zahl der Tabellen, Größe (SQLite immer; MySQL und PostgreSQL mit Größen messen).
- Teil Datenbankverbindung: Typ, Server, Socket, Datenbankname, Zeichensatz, Lesereplikat.
- Feld Datenbankabfragen: Modus des SQL-Abfrage-Cache, Trefferquote und der Schalter des SQL-Profilers.
- Zustandsprüfungen zuerst, Fehler und Warnungen vor Hinweisen; eine Warnung, wenn der Zeichensatz der Verbindung nicht UTF-8 ist.
- Bericht herunterladen (Text oder JSON) für eine Supportanfrage; Passwörter und der Datenbankbenutzer stehen nie darin.
Öffnen Sie sie über jeden Server, der die Website ausliefert (Apache mit PHP-FPM, der Port von Velocity): Jeder hat sein eigenes PHP und kann anders berichten.
Aus einem Skript: exp:system:info
./console exp:system:info --allow-root-user # the text report
./console exp:system:info --json --allow-root-user # JSON for your monitoring system
./console exp:system:info --sizes --allow-root-user # with directory and database sizesEs berichtet über das PHP der Kommandozeile und endet mit Exit-Code 1, wenn eine Prüfung scheitert, sodass es einen Alarm
speisen oder einen Deploy absichern kann. exp:expfetch (die Systemkarte) zeigt Version, Engine und Datenbank auf einem
Bildschirm mit Hinweisen.
Logdateien und Muster
Die Logs liegen in var/log/ (error.log; warning.log nur mit [DebugSettings] AlwaysLog[]=warning). exp:logs listet,
verfolgt und durchsucht sie (Log-Betrachter und Rotation).
| Muster | Bedeutung | Alarm |
|---|---|---|
Database implementation not supported | falsch geschriebenes DatabaseImplementation; jede Seite scheitert | sofort |
eZDBNoConnectionException, "database cannot be reached" | falscher Host, falsche Zugangsdaten oder der Server ist ausgefallen | sofort |
database is busy: the transaction could not start | Timeout der SQLite-Schreibwarteschlange (Schreibwarteschlange) | bei Wiederholung |
attempt to write a readonly database | Eigentümer der SQLite-Dateien (Rechte) | sofort |
could not set the connection charset | der Verbindungszeichensatz von MySQL ist zurückgefallen | bei der Einrichtung |
MONGO TODO | SQL, das der MongoDB-Adapter nicht übersetzen konnte | täglich prüfen |
ORA- | ein Oracle-Fehler | nach Nummer |
grep -c "database is busy" var/log/error.log
grep -rn "MONGO TODO" var/log/ | tailWarteschlangen
| Prüfung | Gesund |
|---|---|
SELECT action, COUNT(*), MIN(created) FROM ezpending_actions GROUP BY action; | kleine Zahlen, jüngstes MIN(created) |
abgelaufene Zeilen in ezsession (Datenbank-Sessions) | wenige |
| Setup > Cronjobs, jüngste Läufe | keine Probleme, letzter Lauf kürzlich |
Siehe Aufräumen: Cronjobs und Warteschlangentabellen.
Je Engine
| Engine | Aus Exponential | Aus der Engine |
|---|---|---|
| SQLite | PRAGMA quick_check, PRAGMA journal_mode (wal), Größe von -wal, Speicherplatz, Eigentümer der Dateien (SQLite-Wartung) | |
| PostgreSQL | Systeminformationen | Verbindungen, Sperren, Replikationsverzögerung, Autovacuum (Views pg_stat_*) |
| MySQL, MariaDB | Systeminformationen; verwendetes Replikat | Verbindungen, InnoDB-Status, Verzögerung der Replikate |
| MongoDB | Zahl der MONGO TODO | Serverstatus, Zustand des Replica Sets |
| Oracle | ext:ezoracle:health, der stündliche Cronjob ezoraclehealth, der bei Warnungen an HealthMailReceivers[] mailt (Wartungsbefehle und Cronjobs für Oracle) | AWR, OEM |
Überwachen Sie auch die Sicherungen selbst: ihr Alter, ihre Größe und den letzten Wiederherstellungstest (Sicherungen je Engine).
Checkliste
- To do:
exp:system:info --jsonwird abgefragt; Exit-Code 1 löst einen Alarm aus. - To do: Alarme für die oben als sofort markierten Logmuster.
- To do: Warteschlangentabellen werden täglich geprüft.
- To do: Überwachung auf Seiten der Engine für Verbindungen, Sperren, Replikation und Festplatte.
- To do: Alter der Sicherungen überwacht.
Verwandte Seiten
- Überwachung im Überblick, Gesundheitsprüfungen und Verfügbarkeit
- Datenbankfehler beheben
- Systeminformationen
- Freie Dokumentation: Diese Seite darf unter der GNU FDL 1.3 frei kopiert, übersetzt und verbessert werden.
Werden Sie Exponential-Partner
Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.