PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 ·...

82
Wisse, was deine Elefanten machen PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ Harl <[email protected]> teamix GmbH / collectd core team PGConf.DE 2011 11. November 2011

Transcript of PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 ·...

Page 1: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Wisse, was deine Elefanten machenPostgreSQL Performance-Analyse mit collectd

Sebastian ”tokkee“ Harl <[email protected]>

teamix GmbH / collectd core team

PGConf.DE 201111. November 2011

Page 2: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Uber teamix

• gegrundet 2001• Ursprunge: Open-Source und Netzwerke

DebianNagiosSchulungenu.v.m.

• Heute auch:NetAppVMWareRiverbed (WAN-Beschleunigung)JuniperN-IX (Nurnberger Internet-eXchange)

Wisse, was deine Elefanten machen Folie 2

Page 3: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Was ist collectd?UberblickWichtige Eigenschaften

Plugin-Uberblick

PostgreSQL Prozesse

Statistiken von PostreSQL abfragen

Performance-Daten in RDBMS speichern

Uber den Tellerrand

Wisse, was deine Elefanten machen Folie 3

Page 4: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Was ist collectd?

• collectd sammelt Leistungsdaten von Rechnern• Leistungsdaten sind zum Beispiel:

CPU-AuslastungSpeichernutzungNetzwerkverkehr

• Daten werden erhoben, verarbeitet und gespeichert• Haufig: Darstellung als Graphen• → Performance-Analyse, Kapazitatsplanung• Nicht verwechseln mit Monitoring!• Homepage: http://collectd.org/

Wisse, was deine Elefanten machen Folie 4

Page 5: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Wichtige Eigenschaften

• Daemon• Freie Software (großtenteils GPLv2)• Portierbar (Linux, *BSD, Solaris, . . . )• Skalierbar (OpenWrt, . . . , Cluster / Cloud)• Effizient (Default-Auflosung: 10 Sekunden)• Modular (uber 100 Plugins in Version 5.0)

Wisse, was deine Elefanten machen Folie 5

Page 6: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Wichtige Eigenschaften

• Daemon• Freie Software (großtenteils GPLv2)• Portierbar (Linux, *BSD, Solaris, . . . )• Skalierbar (OpenWrt, . . . , Cluster / Cloud)• Effizient (Default-Auflosung: 10 Sekunden)• Modular (uber 100 Plugins in Version 5.0)

Wisse, was deine Elefanten machen Folie 5

Page 7: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

10-Sekunden-Auflosung

Wisse, was deine Elefanten machen Folie 6

Page 8: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Wichtige Eigenschaften

• Daemon• Freie Software (großtenteils GPLv2)• Portierbar (Linux, *BSD, Solaris, . . . )• Skalierbar (OpenWrt, . . . , Cluster / Cloud)• Effizient (Default-Auflosung: 10 Sekunden)• Modular (uber 100 Plugins in Version 5.0)

Wisse, was deine Elefanten machen Folie 7

Page 9: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Wichtige Eigenschaften

• Daemon• Freie Software (großtenteils GPLv2)• Portierbar (Linux, *BSD, Solaris, . . . )• Skalierbar (OpenWrt, . . . , Cluster / Cloud)• Effizient (Default-Auflosung: 10 Sekunden)• Modular (uber 100 Plugins in Version 5.0)

Wisse, was deine Elefanten machen Folie 7

Page 10: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Verfugbare Plugins (Auswahl)

apache amqp apcups ascent batterybind conntrack contextswitch cpu cpufreqcsv curl curl json dbi dfdisk dns email entropy execfilecount fscache GenericJMX gmond hddtempinterface ipmi iptables ipvs irqjava libvirt load logfile madwifimatch regex mbmon memcachec memcached memoryMonitorus multimeter mysql netapp netlinknetwork nfs nginx notify email ntpdnut olsrd onewire openvpn OpenVZoracle perl ping postgresql powerdnsprocesses protocols python routeros rrdcachedrrdtool sensors serial snmp swapsyslog table tail tape target scaletcpconns teamspeak2 ted thermal tokyotyrantunixsock uptime users uuid vmemvserver wireless write http xmms zfs arc

Wisse, was deine Elefanten machen Folie 8

Page 11: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Technische Details

• Aktuelle Version ist 5.0 (Release: Marz 2011)• Pakete fur diverse Distributionen vorhanden

(Debian, RedHat, FreeBSD, OpenWrt, OpenSolaris [WIP], . . . )• Major-Version 4.x ist an einigen Stellen inkompatibel1

→ v5upgrade Target• Geschrieben in C• Versionsverwaltung mit Git

→ git://git.verplant.org/collectd.git

1http://collectd.org/wiki/index.php/V4_to_v5_migration_guideWisse, was deine Elefanten machen Folie 9

Page 12: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Verwendung

• Daemon lauft auf jedem Client (Ausnahme: SNMP o.a.)• ublicherweise: ein oder mehrere zentrale Server, die Werte von

Clients empfangen (Push-Modell)• First steps: install; select plugins; start daemon;

enjoy ;-)

Wisse, was deine Elefanten machen Folie 10

Page 13: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Darstellung: Collection 4 (C4)

• Grundidee: Daten uber, z. B., JSON zur Verfugung stellen• verschiedene Frontends davor moglich• effiziente Handhabung von vielen Datensatzen durch Caching• flexible Konfiguration von Graphen

Wisse, was deine Elefanten machen Folie 11

Page 14: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Was ist collectd?

Plugin-UberblickCPU, Speicher, Netzwerk-I/ONetzwerk-PluginRRDtool-Plugin (Uberblick)Generische Plugins (Uberblick)Eigene Erweiterungen (Uberblick)

PostgreSQL Prozesse

Statistiken von PostreSQL abfragen

Performance-Daten in RDBMS speichern

Uber den Tellerrand Wisse, was deine Elefanten machen Folie 12

Page 15: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Plugin-Uberblick

• Spezielle Lese-PluginsCPU, Speicher, Netzwerk-Schnittstellen

• Schreib- bzw. IO-PluginsNetzwerk-PluginRRDtool, RRDCacheD

• Generische PluginsSNMPtailPostgreSQL

Wisse, was deine Elefanten machen Folie 13

Page 16: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

CPU, Speicher, Netzwerk-I/O

Synopsis

LoadPlugin "cpu"LoadPlugin "memory"LoadPlugin "interface"

<Plugin interface>Interface loInterface sit0IgnoreSelected true

</Plugin>

Wisse, was deine Elefanten machen Folie 14

Page 17: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

CPU, Speicher, Netzwerk-I/O

Synopsis

LoadPlugin "cpu"LoadPlugin "memory"LoadPlugin "interface"

<Plugin interface>Interface loInterface sit0IgnoreSelected true

</Plugin>

Wisse, was deine Elefanten machen Folie 14

Page 18: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

CPU, Speicher, Netzwerk-I/O

Wisse, was deine Elefanten machen Folie 15

Page 19: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

CPU, Speicher, Netzwerk-I/O

Wisse, was deine Elefanten machen Folie 16

Page 20: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

CPU, Speicher, Netzwerk-I/O

Wisse, was deine Elefanten machen Folie 17

Page 21: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Netzwerk-Plugin

Betriebsarten

• Daten versenden (”Client“)• Daten empfangen (”Server“)• Weiterleiten (”Proxy“)• Unicast (”Punkt-zu-Punkt“)• Multicast (”Punkt-zu-Gruppe“)• IPv4 und IPv6

Ein Daemon fur allesRolle des Daemon hangt von der Konfiguration ab.

Wisse, was deine Elefanten machen Folie 18

Page 22: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Netzwerk-Plugin: Unicast

Wisse, was deine Elefanten machen Folie 19

Page 23: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Netzwerk-Plugin: Multicast

Wisse, was deine Elefanten machen Folie 20

Page 24: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Netzwerk-Plugin: Server/Client

Synopsis: Client

LoadPlugin "network"

<Plugin "network">Server "collectd0.musterfirma.de"Server "collectd1.musterfirma.de"Server "ff18::efc0:4a42"

</Plugin>

Wisse, was deine Elefanten machen Folie 21

Page 25: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Netzwerk-Plugin: Server/Client

Synopsis: Server

LoadPlugin "network"

<Plugin "network">Listen "collectd0.musterfirma.de"Listen "ff18::efc0:4a42"

</Plugin>

Wisse, was deine Elefanten machen Folie 22

Page 26: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Netzwerk-Plugin: Proxy

Wisse, was deine Elefanten machen Folie 23

Page 27: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Netzwerk-Plugin: Proxy

Synopsis: Proxy

LoadPlugin "network"

<Plugin "network">Listen "collectgw.extern.musterfirma.de"Server "collectd1.intern.musterfirma.de"Forward true

</Plugin>

Wisse, was deine Elefanten machen Folie 24

Page 28: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Netzwerk-Plugin

Authentifizierung / Verschlusselung

• (seit Version 4.7.0)• Authentifizierung via HMAC-SHA-256• Verschlusselung mit AES-256 (OFB)

Wisse, was deine Elefanten machen Folie 25

Page 29: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Netzwerk-Plugin

Authentifizierung / VerschlusselungClient

Nichts Sign Encrypt

Server

Nichts akzeptiert akzeptiert nicht moglichAuthFile akzeptiert akzeptiert akzeptiert

Sign nicht akzeptiert akzeptiert akzeptiertEncrypt nicht akzeptiert nicht akzeptiert akzeptiert

Wisse, was deine Elefanten machen Folie 26

Page 30: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

RRDtool-Plugin (Uberblick)

• Schreibt Daten effizient in RRD-Dateien → Caching• Funktionalitat nun in RRDtool als RRD Caching Daemon

verfugbar

Synopsis

LoadPlugin "rrdtool"

<Plugin "rrdtool">DataDir "/var/lib/collectd/rrd"

</Plugin>

Wisse, was deine Elefanten machen Folie 27

Page 31: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

RRDtool-Plugin (Caching)

Konfiguration

<Plugin "rrdtool">DataDir "/var/lib/collectd/rrd"

CacheTimeout 3600 # 1 hourCacheFlush 86400 # 1 day

WritesPerSecond 30</Plugin>

• FLUSH ermoglicht dennoch die graphische Darstellung vonaktuellen Daten

Wisse, was deine Elefanten machen Folie 28

Page 32: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Generische Plugins (Uberblick)

• Idee: Generische Ansatze, statt Speziallosungen• → Benutzerkonfiguration bestimmt das Verhalten• ⇒ Unterstutzung fur neue Gerate braucht i.d.R. keine neue

Version von collectd• Beispiele: SNMP, tail, curl, DBI, PostgreSQL

Wisse, was deine Elefanten machen Folie 29

Page 33: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Eigene Erweiterungen (Uberblick)

• collectd API: C, Perl, Python, Java• Externe Programme mittels unixsock- oder exec-Plugin

Wisse, was deine Elefanten machen Folie 30

Page 34: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Was ist collectd?

Plugin-Uberblick

PostgreSQL Prozesse

Statistiken von PostreSQL abfragen

Performance-Daten in RDBMS speichern

Uber den Tellerrand

Wisse, was deine Elefanten machen Folie 31

Page 35: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

PostgreSQL Prozesse

% ps ax | grep postgres20177 ? S 0:05 /usr/lib/postgresql/8.3/bin/postgres

-D /var/lib/postgresql/8.3/main-c config_file=/etc/postgresql/8.3/main/postgresql.conf

20183 ? Ss 0:09 postgres: writer process20184 ? Ss 0:05 postgres: wal writer process20185 ? Ss 0:04 postgres: autovacuum launcher process20186 ? Ss 0:13 postgres: stats collector process20312 ? Ss 2:04 postgres: collectd mail 127.0.0.1(33027) idle

• Behandlung einer Client-Verbindung:postgres: user database host activity

Wisse, was deine Elefanten machen Folie 32

Page 36: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Das processes Plugin von collectd

• Das processes Plugin kann div. Informationen uber einzelneProzesse (oder Gruppen)

RSS- und VM-GroßeUser- und System-ZeitAnzahl Page-FaultsSchatzwerte zum I/O

• Auswahl entweder an Hand des Prozessnamens oder Regex aufKommandozeile

Wisse, was deine Elefanten machen Folie 33

Page 37: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Das processes Plugin: Konfiguration

collectd.conf

<Plugin "processes">ProcessMatch pg_writer "postgres:.writer.process"ProcessMatch pg_wal_writer "postgres:.wal.writer.process"ProcessMatch pg_autovacuum "postgres:.*autovacuum"ProcessMatch pg_stats_collector \

"postgres:.stats.collector.process"# Datenbankverbindungen durch Benutzer ’user’ProcessMatch pg_user_mail "postgres:.user"# Datenbankverbindungen auf DB ’mail’ProcessMatch pg_db_mail "postgres:.[A-Za-z0-9]+.mail"

</Plugin>

(vor 5.0.1 durften Regexen kein Whitespace enthalten)

Wisse, was deine Elefanten machen Folie 34

Page 38: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨
Page 39: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Was ist collectd?

Plugin-Uberblick

PostgreSQL Prozesse

Statistiken von PostreSQL abfragenDer PostgreSQL Statistik-SammlerDas postgresql Plugin von collectd

Performance-Daten in RDBMS speichern

Uber den Tellerrand

Wisse, was deine Elefanten machen Folie 36

Page 40: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Der PostgreSQL Statistik-Sammler

postgresql.conf

# Aktuell ausgefuhrtes Kommandotrack_activities = on# Tabellen- und Index-Zugrifftrack_counts = on# Benutzerdefinierte Funktionentrack_functions = none # none, pl, all

Ablegen der Statistiken, z.B. auf Flash-Speicher:

stats_temp_directory = ’/mnt/flash/pg_stat_tmp’

Wisse, was deine Elefanten machen Folie 37

Page 41: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Sammeln der Statistiken

• Server Prozesse ubermitteln Statistiken vor idle• Reports werden vom Sammler minimal alle

PGSTAT STAT INTERVAL Millisekunden erstellt• Wahrend einer Transaktion wird ein Snapshot des Reports

verwendet→ siehe pg stat clear snapshot()

Wisse, was deine Elefanten machen Folie 38

Page 42: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Abfrage der Statistiken

• Einige vordefinierte Viewspg stat bgwriterpg stat databasepg stat all indexespg statio all tablesu.v.m. (Tabelle 27.1 in Doku)

• alternativ: Funktionen zur Abfrage der einzelnen Werte

Wisse, was deine Elefanten machen Folie 39

Page 43: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Das postgresql Plugin von collectd

• Generisches Plugin, welches beliebige (numerische) Werte uberSQL abfragen kann

• Standardmaßig werden diverse Werte vom Statistik-Sammlerabgefragt

• Konfiguration besteht aus zwei Teilen:SQL-Queries mit Spezifikation zur Interpretation der WerteDatenbankverbindungen

Wisse, was deine Elefanten machen Folie 40

Page 44: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Einschub: Namensschema von collectd

• jeder Datensatz hat einen eindeutigen IdentifierHostnamePlugin NamePlugin Instanz (optional)TypTyp Instanz (optional)

• hostname/plugin[-instanz]/typ[-instanz]• Der Typ definiert, wie ein Datum interpretiert werden soll

(angelehnt an RRDtools Datasource-Typen)• Typen mussen vordefiniert sein (types.db(5))

• Beispiel: server1.bsp.de/cpu-0/cpu-idle

Wisse, was deine Elefanten machen Folie 41

Page 45: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Das postgresql Plugin: Query-Definition

collectd.conf

<Plugin postgresql><Query disk_usage>

Statement "SELECT pg_database_size($1) AS size;"Param database

<Result>Type pg_db_sizeValuesFrom "size"

</Result></Query>

</Plugin>

Wisse, was deine Elefanten machen Folie 42

Page 46: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Das postgresql Plugin: DB-Definition

collectd.conf

<Plugin postgresql><Database mail>

Host "db.bsp.de"User "user"Password "geheim"Query disk_usageQuery disk_io

</Database></Plugin>

Wisse, was deine Elefanten machen Folie 43

Page 47: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Was ist collectd?

Plugin-Uberblick

PostgreSQL Prozesse

Statistiken von PostreSQL abfragen

Performance-Daten in RDBMS speichern

Uber den Tellerrand

Wisse, was deine Elefanten machen Folie 44

Page 48: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Performance-Daten in RDBMS speichern

• Traditionell: Speichern in RRDtool (konstanter Speicherverbrauch,Konsolidierung, schlechte Skalierbarkeit)

• Speicherung in RDBMS ermoglicht komplexe Auswertung undbessere Skalierung

• Probleme:Struktur der Datenbank (Komplexitat vs. unnotige Redundanz vs.Performance)Behandlung von alten Daten (Partitionierung?)

Wisse, was deine Elefanten machen Folie 45

Page 49: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Was ist collectd?

Plugin-Uberblick

PostgreSQL Prozesse

Statistiken von PostreSQL abfragen

Performance-Daten in RDBMS speichern

Uber den Tellerrand

Wisse, was deine Elefanten machen Folie 46

Page 50: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Uber den Tellerrand: Interaktion

• collectd-nagiosFragt Daten via unixsock-Plugin ab und erzeugt Nagios-kompatibleAusgabe

• exec-nagios.pxPerl-Skript welches Nagios-Plugins ausfuhrt (→ exec-Plugin)

• exec-munin.pxPerl-Skript welches Munin-Plugins ausfuhrt (→ exec-Plugin)

• gmond-PluginEmpfangt und verarbeitet Ganglia Multicast-Pakete

Wisse, was deine Elefanten machen Folie 47

Page 51: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Wisse, was deine Elefanten machen

Vielen Dank fur die Aufmerksamkeit!

Gibt es Fragen?

https://www.postgresql.eu/events/feedback/pgconfde2011/

Wisse, was deine Elefanten machen Folie 48

Page 52: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Wisse, was deine Elefanten machen

Kontakt:Sebastian ”tokkee“ Harlteamix GmbH, Nurnberg

<[email protected]>

<[email protected]> — irc.freenode.net/#collectd — http://identi.ca/collectd

Artikel zum Thema collectd:http://linuxtechnicalreview.de/Vorschau/(show)/Themen/

Monitoring/Performance-Analyse-mit-Collectd

Wisse, was deine Elefanten machen Folie 49

Page 53: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Optional

Wisse, was deine Elefanten machen Folie 50

Page 54: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

SNMP-Plugin

Allgemeines

• Fragt Netzwerk-Zubehor via SNMP ab• Generisch: Nicht fur ein gestimmtes Gerat geschrieben• Mehrere Gerate werden parallel abgefragt

Konfiguration

• ”Data“-Blocke• ”Host“-Blocke

Wisse, was deine Elefanten machen Folie 50

Page 55: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

SNMP-Plugin

Synopsis: Data-Block

<Plugin "snmp"><Data "ifmib_if_octets64">

Type "if_octets"Table trueInstance "IF-MIB::ifName"Values "IF-MIB::ifHCInOctets" \

"IF-MIB::ifHCOutOctets"</Data>

</Plugin>

Wisse, was deine Elefanten machen Folie 51

Page 56: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

SNMP-Plugin

Synopsis: Host-Block

<Plugin "snmp"><Host "switch0.intern.musterfirma.de">

Address "10.0.42.2"Version 1Community "public"Collect "ifmib_if_octets64"Interval 60

</Host></Plugin>

Wisse, was deine Elefanten machen Folie 52

Page 57: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

SNMP-Plugin: Users

Wisse, was deine Elefanten machen Folie 53

Page 58: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

SNMP-Plugin: USV-Last

Wisse, was deine Elefanten machen Folie 54

Page 59: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

SNMP-Plugin: Cache-Alter

Wisse, was deine Elefanten machen Folie 55

Page 60: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

tail-Plugin

Allgemeines

• Verfolgt Log-Dateien• Extrahiert Werte oder zahlt Ereignisse• Selektion der Zeilen / Werte mit regularen Ausdrucken• Verwendbar fur MTAs, Web-Server, . . .

Wisse, was deine Elefanten machen Folie 56

Page 61: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

tail-Plugin

Konfiguration

<Plugin "tail"><File "/var/log/exim4/mainlog">

Instance "exim"<Match>

Regex "S=([1-9][0-9]*)"DSType "CounterAdd"Type "ipt_bytes"Instance "total"

</Match></File>

</Plugin>

Wisse, was deine Elefanten machen Folie 57

Page 62: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

tail-Plugin: Verbindungen von Exim

Wisse, was deine Elefanten machen Folie 58

Page 63: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

tail-Plugin: SSH Brute-Force-Attacke

Wisse, was deine Elefanten machen Folie 59

Page 64: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

RRDCacheD-Plugin

Allgemeines

• Update-Prinzip des RRDtool-Plugins• Eigenstandiger Daemon• Integration in RRDtool 1.4• Weitere Funktionen, z. B. Journaling• Vorteil: Neustart von collectd ohne Cache-Verlust

Wisse, was deine Elefanten machen Folie 60

Page 65: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

RRDCacheD-PluginSu

chba

um

Upd

ate-

Que

ue

Flus

h-Q

ueue

Upd

ate-

Thr

ead

Dat

eisy

stem

Graphik c© Florian ”octo“ Forster

Wisse, was deine Elefanten machen Folie 61

Page 66: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

RRDCacheD-PluginSu

chba

um

Upd

ate-

Que

ue

Flus

h-Q

ueue

Upd

ate-

Thr

ead

Dat

eisy

stem

Graphik c© Florian ”octo“ Forster

Wisse, was deine Elefanten machen Folie 61

Page 67: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

RRDCacheD-PluginSu

chba

um

Upd

ate-

Que

ue

Flus

h-Q

ueue

Upd

ate-

Thr

ead

Dat

eisy

stem

Graphik c© Florian ”octo“ Forster

Wisse, was deine Elefanten machen Folie 61

Page 68: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

RRDCacheD-PluginSu

chba

um

Upd

ate-

Que

ue

Flus

h-Q

ueue

Upd

ate-

Thr

ead

Dat

eisy

stem

Graphik c© Florian ”octo“ Forster

Wisse, was deine Elefanten machen Folie 61

Page 69: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Perl-Plugin

Allgemeines

• Integriert einen Perl-Interpreter(vergleichbar zu Apaches mod perl)

• Instanziierung und Syntax-Analyse nur einmal• Exportiert die API

(→ nicht nur Lese-Plugins moglich)

Wisse, was deine Elefanten machen Folie 62

Page 70: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Perl-Plugin: Beispiel

package Collectd::Plugin::Magic;use Collectd qw( :all );sub magic_read{

my $vl = { plugin => ’magic’,values => [Magic->getCurrentLevel ()] };

plugin_dispatch_values (’magic_level’, $vl);}plugin_register (TYPE_READ, ’magic’, ’magic_read’);

Wisse, was deine Elefanten machen Folie 63

Page 71: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

unixsock-Plugin

Allgemeines

• Offnet einen UNIX-Domain-Socket• Kennt mehrere Befehle

(z. B. PUTVAL, FLUSH, LISTVAL)• Interaktion mit externen Programmen moglich• collectdctl (ab Version 5.0, eta: dieses Jahr ;-))• cussh.pl: ”collectd UNIX socket shell“

Wisse, was deine Elefanten machen Folie 64

Page 72: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

unixsock-Plugin: Beispiel

-> | PUTVAL "testhost/magic/magic_level" \interval=10 1179574444:42

<- | 0 Success

Wisse, was deine Elefanten machen Folie 65

Page 73: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

exec-Plugin

Allgemeines

• Fuhrt Programme aus• Liest von deren Standard-Ausgabe• Konnen uber langere Perioden laufen

(vgl. init)

Wisse, was deine Elefanten machen Folie 66

Page 74: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

exec-Plugin: Beispiel

#!/bin/shINTVL=${COLLECTD_INTERVAL:-10}CHOST="${COLLECTD_HOSTNAME:-localhost}"IDENT="$CHOST/magic/magic_level"while sleep $INTVLdo

VALUE=‘magic --level‘echo "PUTVAL \"$IDENT\" interval=$INTVL N:$VALUE"

done

Wisse, was deine Elefanten machen Folie 67

Page 75: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Java-Plugin

Allgemeines

• Integriert eine ”Java Virtual Maschine“ (JVM)• Exportiert die API

(→ nicht nur Lese-Plugins moglich)• Prinzipielle Ahnlichkeit zum Perl-Plugin

Wisse, was deine Elefanten machen Folie 68

Page 76: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Java-Plugin: Beispiel

import org.collectd.api.Collectd;import org.collectd.api.CollectdReadInterface;public class MagicPlugin

implements CollectdReadInterface{

public int read (); /* Callback-Funktion */public MagicPlugin (); /* Konstruktor */

}

Wisse, was deine Elefanten machen Folie 69

Page 77: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Java-Plugin: Beispiel

public int read (){

ValueList vl = new ValueList ();vl.setHost ("testhost");vl.setPlugin ("magic");vl.setType ("magic_level");vl.addValue (Magic.getCurrentLevel ());return (Collectd.dispatchValues (vl));

}

Wisse, was deine Elefanten machen Folie 70

Page 78: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Java-Plugin: Beispiel

public MagicPlugin (){

/* Callback-Funktion anmelden */Collectd.registerRead ("MagicPlugin", this);

}

Wisse, was deine Elefanten machen Folie 71

Page 79: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Erweiterungen: Zusammenfassung

• collectd API nutzenC, Perl, Python und Java moglich

• Externe Programme erweiternunixsock-Plugin ermoglicht Kommunikation

• Eigenes Programm / Skript schreiben→ exec-Plugin

Wisse, was deine Elefanten machen Folie 72

Page 80: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Erweiterungen: Zusammenfassung

• collectd API nutzenC, Perl, Python und Java moglich

• Externe Programme erweiternunixsock-Plugin ermoglicht Kommunikation

• Eigenes Programm / Skript schreiben→ exec-Plugin

Wisse, was deine Elefanten machen Folie 72

Page 81: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Erweiterungen: Zusammenfassung

• collectd API nutzenC, Perl, Python und Java moglich

• Externe Programme erweiternunixsock-Plugin ermoglicht Kommunikation

• Eigenes Programm / Skript schreiben→ exec-Plugin

Wisse, was deine Elefanten machen Folie 72

Page 82: PostgreSQL Performance-Analyse mit collectd Sebastian tokkee“ …pgsql.pdf · 2011-11-11 · Plugin-Uberblick¨ CPU, Speicher, Netzwerk-I/O Netzwerk-Plugin RRDtool-Plugin (Uberblick)¨

Uber den Tellerrand: Zubehor

• snmp-probe-host.pxErzeugt semi-automatisch <Host />-Blocke fur das SNMP-Plugin

• jcollectdJava-Implementierung des Netzwerk-Protokolls (→ JMX)

• kcollectdKDE-Programm zur Near-Realtime-Anzeige von Graphen

• Perl, Ruby, Python Module und C-Bibliothek fur dieKommunikation mit dem unixsock-Plugin verfugbar

Wisse, was deine Elefanten machen Folie 73