Snowflake Postgres-Metriken¶
Snowflake Postgres sammelt automatisch Instanzmetriken und speichert sie in der aktiven Ereignistabelle. Ein Monitoring-Agent erfasst Metriken etwa alle 5 bis 30 Sekunden (abhängig vom Metriktyp) und schreibt sie in SNOWFLAKE.TELEMETRY.EVENTS mit RECORD_TYPE = 'METRIC'.
Sie können diese Metriken direkt in Snowflake abfragen oder an eine externe Beobachtungsplattform wie Grafana oder Observe weiterleiten.
Bemerkung
Informationen zum Abfragen von Postgres *Protokoll*daten aus der Ereignistabelle finden Sie unter Snowflake Postgres-Protokollierung.
Verfügbare Metriken¶
Postgres-Metriken¶
Kennzahl |
Typ |
Beschreibung |
|---|---|---|
|
gauge |
Anzahl der aktiven Backend-Verbindungen |
|
gauge |
Gesamtgröße aller Datenbanken (Bytes) |
|
gauge |
WAL-Verzeichnisgröße (Bytes) |
|
gauge |
Größe des Protokollverzeichnisses (Bytes) |
|
gauge |
Größe der temporären Datei (Bytes) |
|
gauge |
Anzahl der gewährten Sperren |
|
gauge |
Anzahl der wartenden/blockierten Sperren |
|
gauge |
Postgres-Version als Ganzzahl (zum Beispiel 180003 = 18.0.3) |
Postgres-Prozessmetriken¶
Kennzahl |
Typ |
Einheit |
Dimensionen |
|---|---|---|---|
|
Summe (sum) |
Sekunden |
Status (Benutzer, System, Wartezeit) process.command, process.executable.name, process.owner, process.pid, process.parent_pid |
|
Summe (sum) |
bytes |
process.command, process.executable.name, process.owner, process.pid, process.parent_pid |
|
Summe (sum) |
bytes |
process.command, process.executable.name, process.owner, process.pid, process.parent_pid |
Bemerkung
Jeder Postgres-Prozess hat eine``process.cpu.time``-Zeile für jedenCPU-Status und jeweils eine für``process.memory.usage`` und``process.memory.virtual``.
Die process.*-Dimensionsattribute finden Sie in der Spalte``resource_attributes`` in jeder Zeile. Wie bei state-Werten für andere Metriken, befinden sich die state-Dimensionsattribute in der``record_attributes``-Spalte.
CPU-Metriken¶
Kennzahl |
Typ |
Einheit |
Dimensionen |
|---|---|---|---|
|
Summe (sum) |
Sekunden |
Status: user, system, wait, idle, nice, interrupt, softirq, steal CPU: CPU# |
|
gauge |
Threads |
-– |
|
gauge |
Threads |
-– |
|
gauge |
Threads |
-– |
Bemerkung
Jede cpu# (wie cpu0 und cpu2) hat eine system.cpu.time-Zeile für jedenCPU-Status.
system.cpu.time ist ein kumulativer Zähler. Um einen Prozentsatz zu erhalten, berechnen Sie das Delta zwischen aufeinanderfolgenden Stichproben und dividieren durch das verstrichene Intervall.
Arbeitsspeicher-Metriken¶
Kennzahl |
Typ |
Einheit |
Dimensionen |
|---|---|---|---|
|
Summe (sum) |
bytes |
state: used, free, cached, buffered, slab_reclaimable, slab_unreclaimable |
Bemerkung
Eine system.memory.usage-Zeile für jeden Status.
Festplattenmetriken¶
Kennzahl |
Typ |
Einheit |
Dimensionen |
|---|---|---|---|
|
Summe (sum) |
bytes |
Einbindungspunkt, Gerät, Status (verwendet, kostenlos), Typ, Modus |
Bemerkung
Eine system.filesystem.usage-Zeile für jeden Status.
Netzwerkmetriken¶
Kennzahl |
Typ |
Einheit |
Dimensionen |
|---|---|---|---|
|
Summe (sum) |
bytes |
Gerät, Richtung (Senden, Empfangen) |
Bemerkung
Jedes Gerät („eth0“ und „lo“) hat eine``system.network.io``-Zeile für jede Richtung.
Paging-Metriken¶
Kennzahl |
Typ |
Einheit |
Dimensionen |
|---|---|---|---|
|
Summe (sum) |
bytes |
Gerät, Status (verwendet, kostenlos) |
Bemerkung
Eine system.paging.usage-Zeile für jeden Status.
Ressourcenattribute¶
Jede Metrikzeile enthält die folgenden Felder in RESOURCE_ATTRIBUTES:
Attribut |
Beschreibung |
Beispiel |
|---|---|---|
|
Bezeichner der Postgres-Instanz |
|
|
Hostname des Servers |
|
|
EC2-Instanz-ID |
|
|
Instanzfamilie |
|
|
AWS-Region |
|
|
Verfügbarkeitszone |
|
|
Immer |
|
|
Immer |
|
Abfragen von Metriken¶
Für eine bestimmte Snowflake Postgres-Instanz können mehrere Server gleichzeitig ausgeführt werden, z. B. ein Primärserver und dessen HA-Server oder ein Ersatz-Upgrade, das darauf wartet, dass das Wartungsfenster der Instanz ausgetauscht wird. Da jeder dieser Server Metriken für die jeweilige instance_id der Instanz meldet, benötigen Sie zusätzlich den Server-host_name des aktuell aktiven Servers der Instanz.
Hier DESCRIBE POSTGRES INSTANCE finden Sie die instance_id Ihrer Postgres-Instanz:
Die instance_id der Instanz ist das erste Segment des zurückgegebenen``host``-Werts (alles vor dem ersten Punkt).
Bemerkung
Sie können die host-Spalte der Ausgabe des SHOW POSTGRES INSTANCES-Befehls verwenden, um die Instance-Host-Werte für alle laufenden Snowflake-Postgres-Instanzen in Ihrem Account anzuzeigen.
Um den aktuell verwendeten Server-host_name der Instanz zu ermitteln, führen Sie eine einfache DNS CNAME-Abfrage des host-Werts der Instanz durch.
Nehmen wir an, der zurückgegebene host-Wert war „4jypgsndvzd5ta6ufaryx6owja.sfengineering-pgtest.preprod.us-west-2.aws.postgres.snowflake.app“ (also wissen wir, dass die instance_id der Instanz „4jypsndvzd5ta6ufaryx6owja“ lautet).
Hier ist ein Beispiel für die Verwendung des ``dig``CLI-Dienstprogramms, um die DNS CNAME-Suche auszuführen:
Hier sehen Sie ein Beispiel zur Verwendung des dns.resolver-Moduls von Python:
Der host_name-Wert ist das erste Segment des zurückgegebenen Werts: „df6m4y5m5fgfpb5idy2pj67xmer“ in den obigen Beispielen.
Die folgende Abfrage gibt den neuesten Wert für jede in den letzten 5 Minuten erfasste Metrik zurück:
Bemerkung
Die obige Abfrage verwendet die Standard-Ereignistabelle des Kontos: SNOWFLAKE.TELEMETRY.EVENTS. Wenn Sie eine kundenspezifische Ereignistabelle eingerichtet haben, passen Sie die -Abfrage entsprechend an.
Beispiele für Metrikabfragen¶
Aktive Verbindungen¶
Arbeitsspeichernutzung nach Zustand¶
CPU-Lastdurchschnitte¶
Größe der Datenbank¶
Weiterleiten von Metriken an externe Tools¶
Da die Metriken in einer Standard-Snowflake-Tabelle gespeichert werden, können Sie sie an jede Beobachtungsplattform weiterleiten, die eine Snowflake-Verbindung unterstützt. Eine schrittweise Einrichtung mit bestimmten Tools finden Sie unter: