Rrdtool Gleitender Durchschnitt


Rrdgraphexamples Verschieben der Daten um eine Woche (604800 Sekunden) Wenn die spezialisierte Funktion RRAs für die anomale Verhaltensdetektion existieren, können sie dazu verwendet werden, das Diagramm einer Zeitreihe mit Vertrauensbändern und Ausfällen zu erzeugen. Dieses Beispiel erzeugt einen Graphen der Datenreihe in Blau (LINE2 mit der virtuellen Scaledobs-Datenquelle), Vertrauensschranken in Rot (skalierte und skalierte niedrigere virtuelle Datenquellen) und potentielle Fehler (dh ein anomales aberrantes Verhalten) Die Fail-Datenquelle). Die Rohdaten stammen aus einem AVERAGE RRA. Die feinste Auflösung der beobachteten Zeitreihen (ein konsolidierter Datenpunkt pro Primärdatenpunkt). Die vorhergesagten (oder geglätteten) Werte werden im HWPREDICT RRA gespeichert. Die prognostizierten Abweichungen (think standard deviation) werden im DEVPREDICT RRA gespeichert. Schließlich enthält die FAILURES RRA Indikatoren, wobei 1 für einen möglichen Fehler steht. Alle Daten werden durch Multiplikation mit 8 zu Bits (anstelle von Octets) umskaliert. Die Vertrauensgrenzen werden durch einen Versatz von 2 Abweichungen sowohl oberhalb als auch unterhalb der vorhergesagten Werte (die CDEFs oben und unten) berechnet. Vertikale Linien, die potenzielle Ausfälle anzeigen, werden über das TICK-Graphenelement aufgezeichnet, das Nicht-Nullwerte in einem RRA in Tick-Markierungen umwandelt. Hier bedeutet ein Achsenbruch-Argument von 1.0, dass die Tick-Markierungen die gesamte y-Achse überspannen und somit zu vertikalen Linien auf dem Graphen werden. Die Wahl von 2 Abweichungen (ein Skalierungsfaktor) stimmt mit dem von der FAILURES RRA intern verwendeten Standard überein. Wenn der interne Wert geändert wird (siehe rrdtune), sollte dieser Graphikbefehl konsistent sein. Der Befehl rrdtool graph ist entworfen, um Daten mit einer bestimmten zeitlichen Auflösung zu zeichnen, ungeachtet der tatsächlichen Auflösung der Daten in der RRD-Datei. Dies kann ein Problem für die spezialisierten Konsolidierungsfunktionen darstellen, die eine Eins-zu-eins-Abbildung zwischen Primärdatenpunkten und konsolidierten Datenpunkten beibehalten. Wenn ein Graph darauf besteht, den Inhalt dieser RRAs auf einer gröberen Zeitskala anzusehen, versucht der Graph-Befehl etwas Intelligentes zu tun, aber die Vertrauensbänder und Fehler haben nicht mehr dieselbe Bedeutung und können irreführend sein. Rrdgraph gibt einen Überblick über die Funktionsweise von rrdtool. Rrdgraphdata beschreibt DEF, CDEF und VDEF im Detail. Rrdgraphrpn beschreibt die RPN-Sprache, die in den xDEF-Anweisungen verwendet wird. Die rrdgraphgraph-Seite beschreibt alle Graphen - und Druckfunktionen. Programm von Tobias Oetiker 60tobioetiker. ch62 Dieses Handbuch Seite von Alex van den Bogaerdt 60alexvandenbogaerdt. nl62 mit Korrekturen andor Ergänzungen von mehreren Volkesì haben einen Fall, wo ich SNMP-Daten gesammelt haben und über rrdtool gespeichert. Für die tägliche und wöchentliche Grafik kommt richtig, aber wenn ich sehe monatlich und jährlich zeigt es nur, dass Tag Teil nicht korrekt Graph, wie unten gezeigt. Daily Graph-Code ist. (Arbeits korrekt) usrbinrrdtool Graph optelitecoreManageEngineAppManager11workinggraphsdaily-tps. png - v TPS - t TIME DEF: tps1rootgraphsTotalTPS. rrd: TPS: MAX - s -86.400 CDEF: tps2tps1,300, LINE1: tps2ff0000: TOTALTPS GPRINT: TPS2: LAST: Cur: 5.2 lf GPRINT: TPS2: MITTEL: Durchschnitt: 5.2lf GPRINT: TPS2: MAX: Max: 5.2lf GPRINT: TPS2: MIN: Minimum: 5.2lfttt Monats Graph-Code ist. usrbinrrdtool Graph (nicht Graph wie erwartet kommen) optelitecoreManageEngineAppManager11workinggraphsmonthly-tps. png - v TPS - t WOCHE DEF: tps1rootgraphsTotalTPS. rrd: TPS: MAX - s -2.592.000 CDEF: tps2tps1,300, LINE1: tps2ff0000: TOTALTPS GPRINT: TPS2: LAST: cur: 5.2lf GPRINT: TPS2: MITTEL: Durchschnitt: 5.2lf GPRINT: TPS2: MAX: Max: 5.2lf GPRINT: TPS2: MIN: Minimum: 5.2lfttt Jahres Graph-Code ist. usrbinrrdtool Graph (nicht Graph wie erwartet kommen) optelitecoreManageEngineAppManager11workinggraphsyearly-tps. png - v TPS - t MONAT DEF: tps1rootgraphsTotalTPS. rrd: TPS: MAX - s -31536000 CDEF: tps2tps1,300, LINE1: tps2ff0000: TOTALTPS GPRINT: TPS2: LAST: cur: 5.2lf GPRINT: TPS2: MITTEL: Durchschnitt: 5.2lf GPRINT: TPS2: MAX: Max: 5.2lf GPRINT: TPS2: MIN: Min: 5.2lfttt Bitte lassen Sie mich wissen, wenn ich etwas Unrechtes tue. Es wäre hilfreich, wenn Sie die Bilder für die nicht funktionierenden Graphen und auch die Struktur der RRD-Datei (mit rrdtool info) enthalten könnten. Dies würde uns sehen, wenn das Problem bezieht sich auf falsche RRA Definitionen und visuell zu sehen, was Sie durch die Grafik falsch zu verstehen. Zum Beispiel kann es sein, dass der MAX RRA einfach nicht lang genug ist, um einen Wert der Jahre in allen verfügbaren Auflösungen zu halten. Ndash Steve Shipway Sehr geehrte (r) Steve, Vielen Dank für Ihre Antwort. Leider bin ich nicht imstande, Bilder zu laden, wie ich 10 Ruf für das gleiche verlange. Könnten Sie bitte lassen Sie mich wissen, wie kann ich rrdtool Informationen zu überprüfen. Ich benutze Linux-System, wo ich installiert haben RPM für rrdtool und mit dem rrdtool aus crontab Zeitplan. ndash Jignesh Dholakiya 6. September 14 um 16:18 Uhr Gebrauch rrdtool info foo. rrd die RRD Struktur der foo. rrd Datei zu erhalten, die uns das Intervall zeigen wird, die Anzahl der RRAs definiert, und ihre Längen. Obwohl Sie nicht uplaod Bilder noch, sollten Sie in der Lage sein, kostenlose Online-Dienste wie photobucket nutzen, um ein Bild hochzuladen und eine URL hier, um es anzuzeigen. Ndash Steve Shipway Lieber Steve, unten ist der rrdtool info commnand Ausgang. rrdtool info TotalTPS. rrd Dateiname quotTotalTPS. rrdquot rrdversion quot0003quot Schritt 300 lastupdate 1410433802 Header 584 dsTPS. index 0 dsTPS. type quotABSOLUTEquot dsTPS. minimalheartbeat 600 dsTPS. min 0.0000000000e00 dsTPS. max 5.0000000000e02 dsTPS. lastds quot24quot dsTPS. value 2.2656499547e-01 dsTPS. unknownsec 0 rra0.cf quotMAXquot rra0.rows 1500 rra0.currow 1390 rra0.pdpperrow 1 rra0.xff 5.0000000000e-01 rra0.cdpprep0.value NaN rra0.cdpprep0.unknowndatapoints 0 ndash Jignesh Dholakiya 11. September 14 am 11.40 The Diagramm zeigt nur fünf Tage Wert von Daten in den Graphen, weil das alle Daten gibt es in Ihrem RRD. Ihre RRD ist so konfiguriert, dass sie alle Daten, die älter als diese sind, automatisch verwerfen. Die Graphen zeigen, dass Ihre RRD derzeit nur 6 Tage im Wert von Daten zur Anzeige hat. Da Sie Daten nicht grafisch darstellen können, die Sie nicht haben, zeigen die Graphen, was sie haben, und nichts für den Rest. Ihre rrdtool info gibt diese für RRA Definitionen (trimmed für Klarheit): Dies bedeutet, dass Sie eine einzelne RRA, Typ MAX, die 1pdp pro Zeile und 1500 Zeilen hat. Als Ergebnis ist Ihre RRA (Schritt) x (pdp pro Zeile) x (Anzahl der Zeilen) lang, die 1500x300 Sekunden, die etwas mehr als 5 Tage ist. Da Ihre RRD nur eine einzige RRA hat, werden alle Ihre Grafikfunktionen diese nutzen - wenn nötig zusätzliche Konsolidierung. So verwenden alle Graphen diese einzelne RRA. Allerdings ist Ihre RRA nur 5-und-ein-Bit-Tage lang. Daher werden Daten abgelaufen und verworfen, wenn es dieses alte ist. Als Ergebnis sind nur die letzten 5-und-ein-Bit-Tage Wert von Daten zur Verfügung stehen zu jeder Zeit für die grafische Darstellung, was ist, was Sie in den Grafiken zu sehen. Sie müssen die Daten länger halten. Es gibt zwei Möglichkeiten, dies zu tun - Vergrößern der Länge des vorhandenen RRA Erstellen zusätzlicher RRAs, um die konsolidierten Daten für die niedrigauflösenden Graphen zu halten. Option 1 ist die einfachste, da Sie rrdtool tune verwenden können, um die Größe der RRA Nummer 0 zu wachsen. Allerdings ist es sehr teuer auf dem Festplattenspeicher (da Sie die detaillierten Daten für den gesamten Zeitraum behalten werden), plus es ist teuer In CPU (RRDtool müssen auf der Fliege zu konsolidieren, wenn jährliche Grafiken). Diese Option wird nur empfohlen, wenn Sie die hochauflösenden Daten für den gesamten Zeitraum benötigen - etwa wenn Sie beispielsweise 95. Percentiles berechnen. Option 2 ist die beste. Sie fügen eine neue RRA, mit der gleichen CF, aber mehr pdpperrow, für jede Grafik, die Sie erstellen möchten. Für eine wöchentliche Grafik verwenden Sie pdpperrow6 (für eine halbstündige Konsolidierung), für die monatliche Nutzung 24 (zweistündlich) und für die jährliche Verwendung 288 (tägliche Konsolidierung). Im Laufe der Zeit werden die Daten in diese neuen RRA konsolidiert, und die Graphenfunktionen werden sie bevorzugt verwenden. Dies ist weniger rechenintensiv und benötigt weniger Speicherplatz, jedoch verlieren Sie die hochauflösenden Daten im Laufe der Zeit, und Ihre historischen Daten werden nicht automatisch in die neuen RRAs konsolidiert. Außerdem können Sie nicht einfach eine neue RRA zu einer vorhandenen RRD-Datei hinzufügen - Sie müssen entweder eine neue RRD erstellen oder ein Tool wie rrdmerge verwenden. Beantwortet Sep 16 14 um 22: 34Die Fetch-Funktion wird normalerweise intern von der Grafik-Funktion verwendet, um Daten von RRD s zu erhalten. Fetch analysiert die RRD und versucht, die Daten in der gewünschten Auflösung abzurufen. Die abgerufenen Daten werden auf stdout ausgedruckt. UNKNOWN-Daten werden häufig durch den String 34NaN34 dargestellt, abhängig von der Druckfunktion Ihres OS39s. Den Namen der RRD, von der Sie die Daten abrufen möchten. Die auf die Daten angewendet wird, die Sie abrufen möchten (AVERAGE, MIN, MAX, LAST) --resolution - r Auflösung (Standard ist die höchste Auflösung) das Intervall, das die Werte haben sollen (Sekunden pro Wert). Ein optionales Suffix kann verwendet werden (z. B. 5 m anstelle von 300 Sekunden). Rrdfetch wird versuchen, Ihre Anfrage übereinstimmen, aber es wird Daten zurückgeben, auch wenn keine absolute Übereinstimmung möglich ist. Siehe 34RESOLUTION INTERVAL34. Beginn der Zeitreihen. Eine Zeit in Sekunden seit Epoche (1970-01-01) ist erforderlich. Negative Zahlen beziehen sich auf die aktuelle Uhrzeit. Standardmäßig wird ein Tag im Wert von Daten abgerufen. Siehe auch Abschnitt AT-STYLE TIME SPECIFICATION für eine ausführliche Erläuterung der Möglichkeiten, die Startzeit anzugeben. Das Ende der Zeitreihe in Sekunden seit Epoche. Siehe auch Abschnitt AT-STYLE TIME SPECIFICATION für eine ausführliche Erläuterung, wie die Endzeit festgelegt werden kann. Passen Sie die Startzeit automatisch an die Auflösung an. Die Endzeit wird um den gleichen Betrag eingestellt. Dies vermeidet externe Berechnungen, wie in 34RESOLUTION INTERVAL34 beschrieben. Obwohl, wenn ein bestimmter RRA gewünscht wird dies nicht dafür sorgen, dass der Anfang und das Ende innerhalb seiner Grenzen fallen. Adresse des rrdcached-Daemons. Wenn es angegeben ist, wird ein Flush-Befehl an den Server gesendet, bevor die RRD-Dateien gelesen werden. Dies ermöglicht rrdtool, neue Daten zurückzugeben, auch wenn der Daemon so konfiguriert ist, dass er Werte für eine lange Zeit zwischenspeichert. Eine Liste der akzeptierten Formate finden Sie unter der Option - l im rrdcached-Handbuch. Beachten Sie, dass aus Gründen der Gewindesicherheit die mit - s und - e angegebene Zeit nicht die komplexen Formen verwenden kann, die in 34AT-STYLE TIME SPECIFICATION34 beschrieben sind. Die einzigen akzeptierten Argumente sind 34 einfache ganze Zahlen34. Positive Werte werden als Sekunden seit Epoche interpretiert, negative Werte (und Null) werden jetzt als relativ interpretiert. Also 34127253503534 bezieht sich auf 3409: 57: 15 (UCT), 29. April 201034 und 34-360034 bedeutet vor 34 Stunden 34. Um RRDtool zu erhalten, um etwas anderes als die feinste Auflösung RRA zu holen, müssen sowohl die Start - als auch die Endzeit an Grenzen festgelegt werden, die ein Vielfaches der gewünschten Auflösung sind. Betrachten Sie das folgende Beispiel: Dieses RRD sammelt Daten alle 10 Sekunden und speichert seine Mittelwerte über 5 Minuten, 15 Minuten, 1 Stunde und 1 Tag sowie die Maxima für 1 Stunde und 1 Tag. Betrachten Sie nun, dass Sie die 15-Minuten-Durchschnittsdaten für die letzte Stunde abrufen möchten. Sie könnten versuchen, aber dies wird fast immer in einer Zeitreihe, die nicht in der 15 Minuten RRA. Daher wird die höchste Auflösung RRA, d. H. 5-Minuten-Mittelwerte, gewählt, die in diesem Fall nicht das ist, was Sie wollen. Daher stellen Sie sicher, dass sowohl Start-und Endzeit sind ein Vielfaches von 900 (15m) sowohl Start-und Endzeit sind innerhalb der gewünschten RRA Also, wenn die Zeit jetzt heißt 34t34, Verwenden Sie die bash-Shell, könnte dies aussehen: Oder mit Die --align-start flag: Abgesehen von den traditionellen Sekunden seit der Epoche. RRDtool versteht auch at-style Zeitangabe. Die Spezifikation heißt 34at-style34 nach dem Unix-Befehl bei (1), der mäßig komplexe Möglichkeiten hat, die Zeit festzulegen, um den Job zu einem bestimmten Datum und zu einer bestimmten Uhrzeit auszuführen. Die at-style-Spezifikation besteht aus zwei Teilen: der TIME REFERENCE-Spezifikation und der TIME OFFSET-Spezifikation. Die Zeitreferenzspezifikation wird verwendet, um ein Referenzzeitmoment festzulegen (auf das dann der Zeitversatz angewendet wird). Wenn es vorhanden ist, sollte es zuerst kommen, wenn es weggelassen wird, es standardmäßig auf jetzt. Die Zeitreferenz besteht aus einem Tageszeitpunkt (der zuerst kommen sollte, falls vorhanden) und einer Tagesreferenz. Die Uhrzeit kann als HH: MM angegeben werden. HH. MM. Oder nur HH. Sie können Suffix es mit am oder pm oder 24-Stunden-Uhr. Einige spezielle Tageszeiten werden auch verstanden, einschließlich Mitternacht (00:00), Mittag (12:00) und britischer Teezeit (16:00). Der Tag kann als Monatsnamen-Tag des Monats und optional als 2- oder 4-stellige Jahreszahl (z. B. 8. März 1999) angegeben werden. Alternativ können Sie Tag-von-Wochenname (z. B. Montag) oder eines der Wörter: gestern verwenden. heute . Morgen . Sie können auch den Tag als vollständiges Datum in mehreren numerischen Formaten angeben, einschließlich MMDDYYYY. TT. MM. JJJJ. Oder JJJJMMTT. ANMERKUNG 1 . Dies unterscheidet sich von dem Original bei (1) Verhalten, bei dem ein Einzelzahldatum als MMDDYYYY interpretiert wird. ANMERKUNG 2 . Wenn Sie den Tag auf diese Weise angeben, ist auch die Uhrzeit ERFORDERLICH. Schließlich können Sie die Wörter jetzt verwenden. Anfang . Ende oder Epoche als Zeitreferenz. Jetzt bezieht sich auf das aktuelle Moment (und ist auch die Standardzeitreferenz). Start (Ende) kann verwendet werden, um eine Zeit relativ zu der Startzeit (Ende) für diejenigen Werkzeuge anzugeben, die diese Kategorien verwenden (rrdfetch. rrdgraph) und Epoche gibt die IX-Epoche an (IX-Zeitstempel 0 1970-01-01 00:00: 00 UTC). Epoche ist nützlich, um zwischen einem Zeitstempelwert und einigen Formen von abgekürzten Datetime-Spezifikationen zu disambiguieren, da es ermöglicht, Zeitversatz-Spezifikationen unter Verwendung von Einheiten zu verwenden, z. B. Epoche 19711205s eindeutig kennzeichnet Zeitstempel 19711205 und nicht 1971-12-05 00:00:00 UTC. Monat und Tag der Wochennamen können in ihrer natürlich abgekürzten Form (z. B. Dez für Dezember, Sonne für Sonntag usw.) verwendet werden. Die Worte jetzt. Anfang . Ende kann mit n abgekürzt werden. S D. h. Die Zeitversatz-Spezifikation wird verwendet, um bestimmte Zeitintervalle zu dem Zeitreferenzmoment hinzuzufügen. Es besteht aus einem Zeichen (160or160 -) und einem Betrag. Folgende Zeiteinheiten können zur Angabe des Betrags verwendet werden. Jahre . Monaten. Wochen . Tage . Std . Protokoll . Oder Sekunden. Diese Einheiten können in singulärer oder pluraler Form verwendet werden und auf natürliche Weise oder auf einen einzelnen Buchstaben abgekürzt werden (z. B. 3days, -1wk, -3y). Mehrere Zeiteinheiten (z. B. -5mon1w2d) oder verkettete (z -5h45min -5H - 45min -6h15min -7h1h30m-15min, etc.) HINWEIS 3 kombiniert werden. Wenn Sie die Zeitverschiebung in Tagen, Wochen, Monaten oder Jahren angeben, beenden Sie mit dem Zeitversatz, der je nach Ihrer Zeitreferenz variieren kann, da alle Zeiteinheiten keinen eindeutig definierten Zeitintervall haben (1160Jahre enthält entweder 365 oder 366 Tage, 1160month ist 28 bis 31 Tage lang, und sogar 1160 Tag kann nicht gleich zu 24 Stunden zweimal jährlich sein, wenn DST-bezogene Uhranpassungen stattfinden). Um dies zu bewältigen, wenn Sie Tage, Wochen, Monate oder Jahre als Ihre Zeit-Offset-Einheiten verwenden, wird Ihr Zeitreferenzdatum entsprechend angepasst, ohne dass zu viele weitere Anstrengungen unternommen werden, um etwas dagegen zu gewährleisten (in der Hoffnung, dass mktime (3) darauf achten wird Davon später). Dies kann zu einigen überraschenden (oder sogar ungültigen) Ergebnissen führen, z. B. 39May16031160-1month39 39Apr1603139 (sinnlos) 39May160139 (nach mktime (3) Normalisierung) in der EET Zeitzone 393: 30 Uhr 29. März 1999 -1 day39 ergibt 393: 30 Uhr 28. März 199.939 (Sonntag), die eine ungültige Kombination Timedate (wegen 03.00 - 62 4 Uhr DST Vorwärts-Uhrzeiteinstellung, siehe untenstehendes Beispiel). Im Gegensatz dazu, Stunden, Minuten und Sekunden sind gut Zeitintervalle definiert, und diese sind garantiert immer Zeit-Offsets genau erzeugen, wie angegeben (zB für EET Zeitzone, 398: 00160Mar1602716019991602160days39 398: 00160Mar16029160199939, aber da gibt es 1 Stunde DST vorwärts Uhr Anpassung, die etwa 3 eintritt: 00160Mar160271601999 und 8: 00160Mar160291601999 gleich 47 Stunden auf der anderen Seite 398: 00160Mar16027160199916048160hours39 399: 00160Mar16029160199939, wie erwartet) ANMERKUNG 4 zwischen 8 00160Mar160281601999, ist die tatsächliche Zeitintervall. Die Ein-Buchstaben-Abkürzung für beide Monate und Minuten ist m. Um Mehrdeutigkeiten sie, versucht der Parser Ihr mind160 :) zu lesen, indem Sie die folgenden zwei Heuristiken anwenden: Wenn m in Zusammenhang mit der (das heißt unmittelbar nach den) Jahre, Monate, Wochen verwendet wird, oder Tagen angenommen wird, Monate bedeuten. Während es im Kontext von Stunden, Minuten und Sekunden Minuten bedeutet. (Z. B. in -1y6m oder 3w1mm wird als Monate interpretiert, während in -3h20m oder 5s2mm der Parser für Minuten entscheidet). Außerhalb des Zusammenhangs (d. h. direkt nach dem Zeichen oder Zeichen) wird die Bedeutung von m von der unmittelbar folgenden Zahl erraten. Wenn der Absolutwert der Zahl 39 unter 25 liegt, wird angenommen, dass m Monate bedeutet. Sonst wird es als Minuten behandelt. (Z. B. -25m -25 Minuten, während 24m 24 Monate) Final NOTES. Bei der Zeitangabe wird zwischen Groß - und Kleinschreibung unterschieden. Whitespace kann frei eingefügt werden oder ganz weggelassen werden. Es gibt jedoch Fälle, in denen Whitespace erforderlich ist (z. B. 39midnight160Thu39). In diesem Fall sollten Sie entweder zitiere den ganzen Satz zu verhindern, dass abgesehen von der Shell genommen wird oder verwenden Sie 3939 (Unterstrich) oder 39,39 (Komma), die auch als Leerzeichen (z midnightThu oder Mitternacht, Do) zählen. 12. Oktober - 12. Oktober in diesem Jahr -1 Monate oder -1m - aktuelle Tageszeit, nur einen Monat vor (kann Überraschungen ergeben, siehe oben ANMERKUNG3). Mittag-gestern -3 Stunden - gestern Morgen kann auch als 9 am-1day angegeben werden. 23:59 31.12.1999 - 1 Minute bis zum Jahr 2000. 123199 23:59 - 1 Minute bis zum Jahr 2000 für Imperialisten. 12 Uhr 010101 - Beginn des neuen Jahrtausends Ende-3 Wochen oder e-3w - 3 Wochen vor Endzeit (kann als Startzeitangabe verwendet werden). Start6hours oder s6h - 6 Stunden nach Startzeit (kann als Endzeitangabe verwendet werden). 931225537 - 18:45 5. Juli 1999 (ja, seit 1970 auch gültig). 19970703 12:45 - 12:45 Juli 3th, 1997 (mein Favorit, und es hat sogar eine ISO-Nummer (8601)). Folgende Umgebungsvariablen können verwendet werden, um das Verhalten von rrdtool160fetch zu ändern: Wenn diese Umgebungsvariable gesetzt ist, hat sie die gleiche Wirkung wie die Option --daemon in der Befehlszeile. Wenn beide vorhanden sind, hat das Befehlszeilenargument Vorrang. Tobias Oetiker 60tobioetiker. ch62

Comments