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

Wisse, was deine Elefanten machen - PostgreSQL wiki

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

10-Sekunden-Auflosung

Wisse, was deine Elefanten machen Folie 6

Page 8: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

CPU, Speicher, Netzwerk-I/O

Wisse, was deine Elefanten machen Folie 15

Page 19: Wisse, was deine Elefanten machen - PostgreSQL wiki

CPU, Speicher, Netzwerk-I/O

Wisse, was deine Elefanten machen Folie 16

Page 20: Wisse, was deine Elefanten machen - PostgreSQL wiki

CPU, Speicher, Netzwerk-I/O

Wisse, was deine Elefanten machen Folie 17

Page 21: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

Netzwerk-Plugin: Unicast

Wisse, was deine Elefanten machen Folie 19

Page 23: Wisse, was deine Elefanten machen - PostgreSQL wiki

Netzwerk-Plugin: Multicast

Wisse, was deine Elefanten machen Folie 20

Page 24: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

Netzwerk-Plugin: Proxy

Wisse, was deine Elefanten machen Folie 23

Page 27: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki
Page 39: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

Optional

Wisse, was deine Elefanten machen Folie 50

Page 54: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

SNMP-Plugin: Users

Wisse, was deine Elefanten machen Folie 53

Page 58: Wisse, was deine Elefanten machen - PostgreSQL wiki

SNMP-Plugin: USV-Last

Wisse, was deine Elefanten machen Folie 54

Page 59: Wisse, was deine Elefanten machen - PostgreSQL wiki

SNMP-Plugin: Cache-Alter

Wisse, was deine Elefanten machen Folie 55

Page 60: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

tail-Plugin: Verbindungen von Exim

Wisse, was deine Elefanten machen Folie 58

Page 63: Wisse, was deine Elefanten machen - PostgreSQL wiki

tail-Plugin: SSH Brute-Force-Attacke

Wisse, was deine Elefanten machen Folie 59

Page 64: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

unixsock-Plugin: Beispiel

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

<- | 0 Success

Wisse, was deine Elefanten machen Folie 65

Page 73: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

Java-Plugin: Beispiel

public MagicPlugin (){

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

}

Wisse, was deine Elefanten machen Folie 71

Page 79: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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: Wisse, was deine Elefanten machen - PostgreSQL wiki

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