Rrdtool Gleitenden 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 untere 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 Ausfall 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 peopleNotes auf RRDTool Implementierung von abweichendes Verhalten Erkennung oetikerwebtoolsrrdtool) ist die Abkürzung für Round Robin Database. RRD ist ein System zum Speichern und Anzeigen von Zeitreihendaten. Es speichert die Daten in einer sehr kompakten Weise, die nicht im Laufe der Zeit zu erweitern, und es stellt nützliche Grafiken durch die Verarbeitung der Daten bei verschiedenen zeitlichen Auflösungen. Die RRDtool-Software ist als eigenständige Anwendung oder als PERL-Bibliothek verfügbar. RRDtool ist ein flinkes Programm, das die IO-Operationen durch Echtzeit-Aktualisierungen in Zeitreihen minimiert. Zwar nicht so mächtig, wie ausgewachsene Datenbank-Software, hat es die Funktionalität durch eine Echtzeit-Umgebung erforderlich bieten: Umwandlung von Updates in unregelmäßigen Abständen in regelmäßigen Abständen über die lineare Interpolation Umwandlung von Zählerdaten zu Raten Aggregation über benutzerdefinierte Zeitintervalle über Mehrere Aggregationsfunktionen Dieses Dokument beschreibt die Implementierung einer anomalen Verhaltensdetektion für RRDTOOL. Es wird davon ausgegangen, dass mit den Internets des aktuellen Release (1.0.25) von RRDtool vertraut ist, da dieses Dokument auf die bereits existierende Architektur verweist. Es gibt mehrere Gründe, warum die Unterstützung für eine fehlerhafte Verhaltenserkennung in RRDtool integriert wurde, im Gegensatz zu einem separaten Programm. Dazu gehören: (1) Erleichtert effiziente Echtzeit-Anwendung von aberranten Verhaltenserkennung. Integration bietet eine größere Effizienz gegenüber einem externen Programm in Bezug auf IO-Zugang. Ein externes Programm würde Daten von RRD mit der gleichen Aktualisierungsfrequenz abrufen, während Code innerhalb von RRD auf diesen Daten bereits im Speicher arbeitet. Effizienz wird zu einer Top-Priorität für das Service-Netzwerk auf der IAPISP Ebene, wo RRDtool wesentlicher Bestandteil des Überwachungssystems von Hunderten von Netzwerkschnittstellen und Anwendungsdienste sein kann. (2) Nutzt Fähigkeit von RRDtool die zeitliche Interpolation (Daten-Updates in unregelmäßigen Abständen) und Umwandlung von Zählern, um Preise zu erfüllen. (3) Verwendet die graphischen Fähigkeiten von RRDtool. Es können Grafiken erzeugt werden, um die Ergebnisse einer anomalen Verhaltensdetektion unter Verwendung der vorhandenen Fähigkeiten von RRDtool anzuzeigen. (4) Leverages Client-Software entwickelt, um mit RRDtool laufen (d. h. Cricket). Abweichendes Verhalten Erkennung wird in drei Teile zerlegt, jedes Gebäude auf seinem Vorgänger: (1) Ein Algorithmus die Werte einer Zeitreihe einen Zeitschritt in die Zukunft für die Vorhersage. (2) Ein Maß für die Abweichung zwischen den vorhergesagten Werten und den beobachteten Werten. (3) Ein Mechanismus, um zu entscheiden, ob und wann ein beobachteter Wert oder eine beobachtete Folge von beobachteten Werten zu weit von den vorhergesagten Werten entfernt ist. Das Holt-Winters Time Series Forecasting-Algorithmus ist ein Online-oder inkrementell, Algorithmus, der adaptiv zukünftige Beobachtungen in einer Zeitreihe prognostiziert. Seine Prognose ist die Summe aus drei Komponenten: einer Grundlinie (oder einem Intercept), einem linearen Trend über die Zeit (oder Steigung) und einem saisonalen Koeffizienten (periodischer Effekt, z. B. ein Tageszyklus). Es gibt einen Jahreszeitkoeffizienten für jeden Zeitpunkt in der Periode (Zyklus). Nachdem ein Wert beobachtet wurde, wird jede dieser Komponenten über eine exponentielle Glättung aktualisiert. Der Algorithmus lernt aus früheren Werten und nutzt sie, um die Zukunft vorauszusagen. Die Anpassungsgeschwindigkeit wird durch drei Parameter bestimmt: alpha (Intercept), beta (Steigung) und gamma (saisonal). Die Vorhersage kann auch als geglätteter Wert für die Zeitreihen betrachtet werden. Das Maß für die Abweichung ist eine saisonal gewichtete absolute Abweichung. Der Begriff saisonale bedeutet Abweichung wird separat für jeden Zeitpunkt im saisonalen Zyklus gemessen. Wie bei Holt-Winters Forecasting wird die Abweichung anhand der aus den vergangenen Werten errechneten Maßnahme (aber nur zu diesem Zeitpunkt im Saisonzyklus) vorhergesagt. Nachdem der Wert beobachtet wurde, lernt der Algorithmus aus dem beobachteten Wert über exponentielle Glättung. Das Skalieren der Sequenz der vorhergesagten Abweichungswerte für die beobachteten Zeitreihen erzeugt Vertrauensbänder (wir denken in der Regel eher an die Sequenzen als kontinuierliche Linien als an diskrete Punkte). Ein fehlerhaftes Verhalten (ein potentieller Fehler) wird berichtet, wann immer die Anzahl von Malen, die der beobachtete Wert gegen die Vertrauensbänder verstößt, einen bestimmten Schwellenwert innerhalb eines vorgegebenen Zeitfensters (d. h. 5 Verstöße während der letzten 45 Minuten mit einem Wert, der alle 5 Minuten beobachtet wird) Dieser Abschnitt beschreibt die Architektur der Implementierung der anomalen Verhaltensdetektion im RRDtool. Auf der Festplatte ist die Round-Robin-Datenbank (RRD) in sequentielle Abschnitte, Round-Robin-Archive (RRA) organisiert. Innerhalb jeder RRA ist ein Abschnitt für jede der in diesem RRD gespeicherten Datenquellen (Eingang). Jede RRA wird durch eine Konsolidierungsfunktion definiert, die primäre Datenpunkte (PDP) auf konsolidierte Datenpunkte (CDP) abbildet. Auf einer anderen Ebene ist ein RRA nur ein Array von Datenwerten, das nach einer bestimmten Funktion in einem bestimmten festen Zeitintervall in Folge aktualisiert wird. Auf seinem Gesicht benötigt der Algorithmus des anormalen Verhaltens mindestens zwei Arrays, einen zum Speichern der Prognosewerte, die jedem primären Datenpunkt entsprechen, und einen zweiten, um die vorhergesagte Abweichung, die jedem primären Datenpunkt entspricht, zu speichern. Wie implementiert, werden die jahreszeitlichen Koeffizienten und Abweichungen, die verwendet werden, um die prognostizierten und vorhergesagten Abweichungen zu berechnen, in einem zweiten Paar RRAs gespeichert. Diese Arrays haben eine Länge gleich der Saisonzeit und werden einmal für jeden Primärdatenpunkt aktualisiert. Ausfälle werden durch eine fünfte RRA verfolgt, die Verstöße und Ausfälle bei jedem Aufruf der RRD-Aktualisierung bestimmt. Die für die Prognose benötigten Intercept - und Slope-Koeffizienten werden für jeden Primärdatenpunkt aktualisiert und für jede Datenquelle (DS) eindeutig. Sie könnten in einem zweiten Paar RRAs gespeichert werden. Jedoch ist nur der jüngste Wert von jedem für eine gegebene Prognose erforderlich. Diese Parameter werden, wie implementiert, in einem temporären Puffer in dem Header gespeichert, der für jede RRA-Datenquellenkombination in dem RRD (dem CDP Prep-Bereich) zugeordnet ist. Dieser Puffer wird bei jedem Aufruf der RRD-Aktualisierung auf die Festplatte zurückgespült. Die Anpassungsparameter sind für die Lebensdauer der RRA festgelegt und für alle Datenquellen innerhalb dieser RRA gleich. Sie werden im RRA-Parameterpuffer (in RRA def) gespeichert, der nur während der RRD-Aktualisierung gelesen wird. Daher fügt die Implementierung des Algorithmus des fehlerhaften Verhaltens fünf neue Konsolidierungsfunktionen zu RRDtool hinzu: (1) HWPREDICT: ein Array von Prognosen, die durch den Holt-Winters-Algorithmus berechnet werden, eine für jeden primären Datenpunkt. Das HWPREDICT-Array hängt von einem Array vom Typ SEASONAL zum Nachschlagen von Saisonkoeffizienten ab. Der Index dieses SEASONAL-Arrays wird als Parameter des HWPREDICT RRA gespeichert. (2) SEASONAL: eine Reihe von Saisonkoeffizienten mit einer Länge gleich der Jahreszeit. Für jeden primären Datenpunkt gibt es einen saisonalen Koeffizienten, der dem Index im Saisonzyklus entspricht. Um die saisonalen Koeffizienten über eine exponentielle Glättung zu aktualisieren, hängt die SEASONAL RRA von der HWPREDICT RRA ab. Der Index des passenden HWPREDICT RRA wird als Parameter gespeichert. (3) DEVPREDICT: ein Array von Abweichungsvorhersagen. Im Wesentlichen kopiert DEVPREDICT Werte aus dem DEVSEASONAL-Array, die er nicht selbst verarbeitet. Der Index des DEVSEASONAL-Arrays wird als Parameter gespeichert. (4) DEVSEASONAL: eine Reihe von saisonalen Abweichungen. Für jeden primären Datenpunkt gibt es eine saisonale Abweichung, die mit dem Index des primären Datenpunkts im Saisonzyklus übereinstimmt. Um Abweichungen zu berechnen, muss DEVSEASONAL RRA in der Lage sein, den vorhergesagten Wert zu berechnen und hängt somit von der HWPREDICT RRA ab. Der Index des passenden HWPREDICT RRA wird als Parameter gespeichert. (5) FAILURES: ein Array von booleschen Indikatoren, eine 1, die einen Fehler anzeigt. Der RRA-DS-Puffer speichert jeden Wert innerhalb des Fensters. Jede Aktualisierung entfernt den ältesten Wert aus diesem Puffer und fügt die neue Beobachtung ein. Bei jedem Update wird die Anzahl der Verletzungen neu berechnet. Die maximale Fensterlänge, die durch diesen Puffer erzwungen wird, beträgt 9 Zeitpunkte. Zum Vergleich mit Abweichungen ist die FAILURES RRA von der DEVSEASONAL RRA abhängig. Der Index des passenden DEVSEASONAL RRA wird als Parameter gespeichert. Dieser Abschnitt erläutert, wie der Algorithmus für die fehlerhafte Verhaltensermittlung in RRDtool in einem Beispiel verwendet wird. Unser Monitoring-Ziel ist eine Router-Schnittstelle auf einer Verbindung zweier Rechenzentren im WebTV-Produktionsdienstleistungsnetzwerk. Die Variable ist die ausgehende Bandbreite (in Mbps). Die Bandbreitennutzung folgt einem täglichen Zyklus und SNMP wird in fünf Minuten Intervallen abgefragt. Der erste Schritt ist die Erstellung einer RRD für dieses Ziel mit fehlerhafter Verhaltenserkennung aktiviert. Zur Unterstützung der expliziten Erstellung der HWPREDICT-, SEASONAL-, DEVPREDICT-, DEVSEASONAL - und FAILURES-RRAs unterstützt der erweiterte Befehl RRDtool create die implizite Erzeugung der anderen vier, wenn HWPREDICT allein angegeben wird. Um dies zu nutzen, verwenden Sie die folgende Syntax: ltarray lengthgt ist die Anzahl der Vorhersagen, die vor dem Wrap-around gespeichert werden sollen. Diese Zahl muss länger als die saisonale Periode sein. Dieser Wert wird auch die RRA-Zeilenzählung für DEVPREDICT RRA sein. Ltalphagt ist der Intercept-Adaptionsparameter, der zwischen 0 und 1 liegen muss. Ein größerer Wert bedeutet, dass sich der Intercept schneller anpasst. Der gleiche Wert wird auch für Gamma verwendet werden. Ltbetagt ist der Slope Adaption Parameter, wieder zwischen 0 und 1. ltperiodgt ist die Anzahl der primären Datenpunkte in der Saisonzeit. Dieser Wert wird die RRA-Zeilenanzahl für die SEASONAL - und DEVSEASONAL-RRAs sein. Mit dieser Option wird das FAILURES RRA mit der Standardfensterlänge von 9 und einem Standardschwellenwert von 7 erstellt. Die Standardlänge von FAILURES RRA ist eine Periode. Für das Beispiel ist der Befehl create: rrdtool create monitor. rrd s 300 Während das explizite Erstellen der zusätzlichen RRAs ein Mittel zur feineren Steuerung ist, können einige Parameter mit dem tune-Befehl geändert werden. Enhanced RRDtool unterstützt mehrere neue Melodien: - Fensterlänge - Fehlergrenze --alpha --beta gamma deltapos --deltaneg Jede dieser Flags nimmt ein einziges Argument an. Der Zweck des Arguments ist selbstverständlich. Das --gamma-Flag setzt den Adaptionsparameter sowohl für SEASONAL als auch für DEVSEASONAL RRAs zurück (Einstellung auf denselben Wert). --deltapos und deltaneg setzen den Skalenparameter für das obere und untere Konfidenzband, der Standardwert für beide ist 2 (ein symmetrisches Konfidenzband). Angenommen, wir sind unglücklich mit der Standard-Fensterlänge und dem Schwellenwert für die implizit durch den vorherigen Befehl erzeugte FAILURES RRA. Geben Sie den Befehl ein: rrdtool tune monitor. rrd --window-length 5 Der Rest des Beispiels verwendet die Standardfensterlänge von 9 und den Standardschwellenwert von 7. In einigen Fällen ist eine explizite Erstellung der RRAs erforderlich. Angenommen, der Netzwerktechniker interessiert sich nur für die Glättung der beobachteten Zeitreihen, nicht für die Vertrauensbänder oder für die fehlerhafte Verhaltenserkennung. Der Holt-Winters Forecasting-Algorithmus kann als ein Glättungsalgorithmus betrachtet werden. In diesem Fall kann er explizit die HWPREDICT und SEASONAL RRAs ohne die anderen erstellen. Verwenden Sie diese Syntax: RRA: HWPREDICT: ltlengthgt: ltalphagt: ltbetagt: ltperiodgt: ltindex von SEASONALgt RRA: SAISON: ltperiodgt: ltgammagt: ltindex von HWPREDICTgt Die Argumente von HWPREDICT die gleichen sind wie zuvor, mit dem Zusatz von: ltindex von SEASONALgt 1- Basierten Index des SEASONAL-Arrays in der Reihenfolge RRAs werden im create-Befehl angegeben. Die Argumente der SEASONAL RRA sind: ltperiodgt ist die Anzahl der primären Datenpunkte in der Saisonzeit. Er muss mit dem Wert übereinstimmen, der vom ltperiodgt-Argument von HWPREDICT angegeben wird. Es muss eine ganze Zahl größer als 2 sein. Ltgammagt ist der Anpassungsparameter für saisonale Koeffizienten, der zwischen 0 und 1 liegen muss. Ltindex des HWPREDICTgt 1-basierten Index des HWPREDICT Arrays in der Reihenfolge RRAs werden im Create-Befehl Confidence Bands angegeben Unabhängig von der fehlerhaften Verhaltenserkennung erzeugt werden. In diesem Fall erstellen Sie die vier RRAs HWPREDICT, SEASONAL, DEVSEASONAL und DEVPREDICT, aber lassen Sie die FAILURES RRA. Verwenden Sie diese Syntax: RRA: HWPREDICT: ltlengthgt: ltalphagt: ltbetagt: ltperiodgt: ltindex von SEASONALgt RRA: SAISON: ltperiodgt: ltgammagt: ltindex von HWPREDICTgt RRA: DEVSEASONAL: ltperiodgt: ltgammagt: ltindex von HWPREDICTgt RRA: DEVPREDICT: ltarray lengthgt: ltindex von DEVSEASONALgt Die Argumente von HWPREDICT und SEASONAL sind die gleichen wie vorher. Die Argumente von DEVSEASONAL und DEVPREDICT sind: ltperiodgt ist die Anzahl der primären Datenpunkte in der Saisonzeit. Er muss mit dem Wert übereinstimmen, der durch das Argument ltperiodgt der HWPREDICT - und SEASONAL-Arrays angegeben wird (diese Einschränkung kann in einer zukünftigen Implementierung aufgehoben werden). Es muss eine ganze Zahl größer als 2. ltarray lengthgt ist die Anzahl der Abweichungen zu speichern, bevor wrap-around diese Zahl muss länger als die saisonale Zeit. Ltgammagt ist der Anpassungsparameter für saisonale Abweichungen, die zwischen 0 und 1 liegen müssen. Er muss nicht mit dem Anpassungsparameter für das SEASONAL-Array übereinstimmen. ltindex von HWPREDICTgt 1 basierten Index des HWPREDICT Array in der Reihenfolge RRAs angegeben werden in dem Befehl zu erstellen ltindex von DEVSEASONALgt 1-basierten Index des DEVSEASONAL Array in der Reihenfolge RRAs angegeben werden in dem Befehl create Schließlich die Versäumnisse können RRA schaffen werden Explizit mit der Syntax, aber zumindest die HWPREDICT, SEASONAL und DEVSEASONAL Arrays müssen ebenfalls erstellt werden. Wenn auch Vertrauensbänder gewünscht werden, erstellen Sie DEVPREDICT. Verwenden Sie diese Syntax: RRA: FAILURES: ltlengthgt: ltthresholdgt: ltwindow lengthgt: ltindex von DEVSEASONALgt ltlengthgt ist die Anzahl der Indikatoren (0,1 Werte), die vor dem Wrap-around gespeichert werden sollen. A 1 zeigt einen Fehler an: das heißt, die Anzahl der Verstöße im letzten Beobachtungsfenster erfüllt oder überschreitet die Schwelle. Ltthresholdgt ist die minimale Anzahl von Verletzungen innerhalb eines Fensters (beobachtete Werte außerhalb der Vertrauensgrenzen), die einen Fehler darstellen. Ltwindow lengthgt ist die Anzahl der Zeitpunkte im Fenster. Geben Sie eine Ganzzahl an, die größer oder gleich dem Schwellenwert und kleiner oder gleich 28 ist (der Maximalwert). Ltindex des DEVSEASONALgt 1-basierten Index des DEVSEASONAL-Arrays in der Reihenfolge RRAs werden im create-Befehl angegeben. Der Algorithmus für die fehlerhafte Verhaltensdetektion erfordert nichts Ungewöhnliches für den RRDtool-Aktualisierungsbefehl, so daß der Sammelmechanismus (d. H. Das Cricket-Aufrufen von SNMP) normal läuft. Nehmen Sie nun an, dass einige Zeit verstrichen ist und der Netzwerktechniker die ausgehende Bandbreite an der Router-Schnittstelle überwacht. Er kann eine graphische Darstellung der täglichen Aktivität anzeigen, einschließlich Konfidenzbänder und alle Fehler, mit dem folgenden Befehl: rrdtool graph example. gif TICK: failffffa0: 1,0: Failures Durchschnittliche Bits aus LINE2: scaledobs0000ff: Durchschnittliche Bits aus LINE1: scaledupperff0000: Obergrenze Durchschnitt Bits aus LINE1: scaledlowerff0000: Lower Bound Average bits out TICK ist eine neue Grafikoption im RRD-Tool. Für jeden Wert ungleich Null im DEF - oder CDEF-Argument zeichnet er ein Häkchen. Die Länge der Markierung (Zeile) wird durch das dritte Argument (nach dem Farbcode) als Dezimalprozentsatz der y-Achse angegeben. 1,0 ist 100 der Länge der y-Achse, so dass die Tick-Marke eine vertikale Linie auf dem Graphen wird. Hier ist ein Beispiel für dieses Tagesgraph, das am Wed, 31. Mai 2000 für das zuvor beschriebene Routerziel erstellt wurde: Die dünnen roten Linien sind die Vertrauensbänder und die gelben Balken stellen Fehler dar (tatsächlich mehrfache Ausfälle in der Sequenz der beobachteten Werte strahlen außerhalb des Vertrauens Bändern in beiden Fällen außerhalb der Bande für etwa zwei Stunden liegen). Die TICK-Diagrammoption erzeugte die gelben Balken aus dem FAILURES RRA. Der Graph zeigt, dass die Bandbreite auf dieser ausgehenden Verbindung schneller zunimmt als erwartet durch das Modell (Vergangenheit). Es obliegt dem Netztechniker, zu entscheiden, ob dies ein anomales Verhalten von Interesse darstellt. Eine Annäherung, die der Techniker nehmen könnte, ist, die Zeitreihen für diese Fräserschnittstelle über einen längeren Zeitraum anzusehen. Im Nachhinein ist es leicht zu zeigen, dass etwas Ungewöhnliches vor sich geht und das anomale Verhaltensermittlungsmodell es in Echtzeit fängt. Hier ist die Zeitreihe für die Woche und Halbzeit vom 24. Mai 2000 bis 2. Juni 2000: Es ist klar, dass Mi, 31. Mai ist ungewöhnlich. Die Bandbreite nimmt in zwei Schritten zu: einmal am frühen Morgen und wieder am frühen Nachmittag. In diesem Fall kann das Dip auf 0 in der frühen Morgenstunde und der nachfolgende Sprung auf eine geplante Ausfallzeit für das Servicenetzwerk zurückgeführt werden. Vielleicht hat der Rest der Bandbreite Aktivität bei Wed die gleiche Ursache, in welchem ​​Fall aberranten Verhalten ist ein falsch positives in den Augen des Netzwerk-Techniker. Angesichts des Beispiels, es ist klar, dass es viele Vorteile der aberranten Verhaltenserkennung gibt, aber es kompliziert die Software-Implementierung und Auswirkungen Laufzeit-Performance. Diese Details werden in diesem Abschnitt behandelt. Für die fünf anomalen Erfassungs-RRAs wird jedes RRAs jedesmal aktualisiert, wenn ein primärer Datenpunkt (PDP) durch rrdupdate berechnet wird. Dies führt zu fünf zusätzlichen Festplatten-Suchoperationen. Darüber hinaus benötigen die SEASONAL - und DEVSEASONAL-RRAs jeweils einen Seekread-Betrieb. Während die Anzahl der zusätzlichen Datenträgeroperationen unabhängig von der Anzahl der Datenquellen ist und diese Operationen nach Möglichkeit immer nacheinander durchgeführt werden (dh das Suchvorgang vermeidet, sich innerhalb der Datei rückwärts zu bewegen), führen diese Operationen signifikante IO-Kosten relativ zu einer RRD ohne die fehlerhaften Erfassungs-RRAs ein . In einer herkömmlichen RRD-Datei gibt es üblicherweise nur eine RRA, die für jedes PDP aktualisiert wird, was nur einen einzigen Suchbeschreibungsvorgang erfordert. Nach dem Update enthalten die cdpprep Bereiche der HWPREDICT und SEASONAL RRAs genügend Informationen, um eine Prognose zukünftiger Werte zu erstellen. Der nächste vorhergesagte Wert kann unter Verwendung der folgenden Formel berechnet werden: Vorhersageabschnittssteigung (Sequenzlänge unbekannter Werte 1) Der Intercept wird in dem CDPhwintercept-Element des cdpprep-Bereichs des HWPREDICT RRA und der interessierenden Datenquelle gespeichert. Die Steigung wird im CDPhwslope-Mitglied des cdpprep-Bereichs des HWPREDICT RRA gespeichert. Der Ausdruck (Sequenzlänge unbekannter Werte 1) wird als CDPnullcount-Mitglied des cdpprep-Bereichs des HWPREDICT RRA gespeichert. Schließlich wird der Saisonkoeffizient im CDPhwseasonal-Mitglied des cdpprep-Bereichs der SEASONAL RRA und der interessierenden Datenquelle gespeichert. Eine abweichende Verhaltensdetektion braucht die Vorhersage nicht zu berechnen, bis der vorherzusagende Wert bereits beobachtet wird, es ist jedoch denkbar, dass eine andere Anwendung die Vorhersage bevor der Wert beobachtet werden kann. Dies könnte in Zukunft durch Hinzufügen eines neuen Aufrufs, rrdpredict, erleichtert werden, um die entsprechenden Puffer von HWPREDICT und SEASONAL RRAs zu lesen und die Vorhersage zu berechnen. Isolierte oder Sequenzen unbekannter (U) Werte sind in der Regel kein Problem für den Holt-Winters-Algorithmus, entweder beim Erstellen von Prognosen oder beim Aktualisieren von Werten (grundsätzlich für einen unbekannten Wert tritt keine Aktualisierung auf). Der Algorithmus kann mehrere Schritte in die Zukunft prognostizieren, vorausgesetzt, die Initialisierungsphase ist abgeschlossen. Ein Bulk-Update kann auftreten, wenn ein Zeitintervall zwischen den beobachteten Werten die Schrittgröße überschreitet. In diesem Fall erzeugt der beobachtete Wert mehr als einen primären Datenpunkt. Wenn das Intervall den Herzschlag einer Datenquelle übersteigt, werden alle dazwischenliegenden Primärdatenpunkte auf unbekannt (U) gesetzt, andernfalls werden sie auf denselben (gleichen) Wert gesetzt. Bulk-Updates erzeugen eine Komplikation für die anomalen Detektions-RRAs, die für jeden primären Datenpunkt aktualisiert werden. Das Hauptproblem sind die Kosten für die Berechnung der Vorhersage und der vorhergesagten Abweichung. Im Gegensatz zu dem Fall der herkömmlichen Konsolidierungsfunktion (d. h. Durchschnitt oder Maximum) sind die Zwischenkonsolidierten Datenpunkte (CDPs) für die Aberranterfassungs-RRAs nicht identisch und müssen separat berechnet werden. Diese Berechnung kostet beiseite, es gibt Implementierungsprobleme im Zusammenhang mit den Interdependenzen zwischen den aberranten Detektions-RRAs. Um die Prognosen und vorhergesagten Abweichungen in der Reihenfolge zu berechnen, erfordert jedes RRA, dass seine abhängigen RRAs synchronisiert werden (zur gleichen Zeit). Die Architektur der rrdupdate-Funktion besteht jedoch darin, jeden RRA unabhängig von den anderen zu verarbeiten. Diese Architektur wird durch die Optimierung auferlegt, die zu jedem RRA schreibt, in Folge auftritt. Angesichts dieser Probleme werden Aktualisierungen von mehr als 2 CDPs pro beobachtetem Wert (dh ein beobachteter Wert, der in mehr als 2 PDPs übersetzt) ​​derzeit nicht durch die aberrante Detektionsimplementierung unterstützt. Die Zwischen-CDPs werden auf U gesetzt. In der Zukunft kann die Implementierung Bulk-Updates unterstützen, insbesondere da der Algorithmus Sequenzen von U-Werten als Eingabe verarbeiten kann. Die Implementierung wurde entwickelt, um die Bootstrap-Initialisierung zu verwenden. Der Abfangkoeffizient wird auf den ersten bekannten Wert initialisiert. Die Steilheit wird auf 0 initialisiert, wobei diese Initialisierung auf der Annahme basiert, dass der lineare Trend über die Zeit nahe bei 0 liegt. Wenn dies nicht der Fall ist, wird die Zeit, die der Holt-Winters-Algorithmus benötigt, um von 0 wegzuziehen, von der saisonalen Anpassung abhängen Parameter, gamma. Während des ersten Saisonzyklus von bekannten Werten werden saisonale Koeffizienten initialisiert. Während des zweiten Saisonzyklus von bekannten Werten werden saisonale Abweichungen initialisiert. Die Empfindlichkeit des Algorithmus auf die Anfangswerte (die ersten beiden Zyklen) nimmt mit der Zeit ab, wie durch die Adaptionsparameter bestimmt. Das Gewicht des Ausgangswerts bleibt länger als nachfolgende Werte. Beispielsweise beträgt bei einem täglichen Zyklus, keiner periodischen Glättung und gamma 0,1 das Gewicht des Anfangswertes in der zehnten Iteration (Tag) saisonalen Komponente 0,4. Im Gegensatz dazu beträgt das Gewicht der Beobachtung des zweiten Tages am selben Punkt im Zyklus nur 0,04. Unbekannte Werte während der ersten zwei Saisonzyklen können den Kaltstart komplizieren. Die Implementierung initialisiert irgendwelche Koeffizienten, die sie während der ersten zwei Zyklen haben kann. Wenn einige Koeffizienten aufgrund unbekannter Werte unbekannt bleiben, werden sie während des ersten nachfolgenden Zyklus mit einem bekannten Wert zu diesem Zeitpunkt im Zyklus initialisiert. Da der erste Wert einer COUNTER-Datenquelle immer unbekannt ist, ist die minimale Kaltstartperiode für COUNTER-Datenquellen drei saisonale Zyklen. In Anbetracht der Überzeugung, dass saisonale Koeffizienten und Abweichungen glatte periodische Zeitfunktionen sind, läuft die Implementierung periodisch mit einem Fenster von 5 der Periode auf den DEVSEASONAL - und SEASONAL-RRAs. Dieser Vorgang erfordert das Lesen aller DEVSEASONAL - und SEASONAL-RRA-Werte von der Festplatte, deren Aktualisierung und das Zurückspülen auf die Festplatte. Die Glättung wird einmal pro Periode ausgeführt, wobei ein Offset durch einen FNV-Hash-Algorithmus auf dem Dateinamen der RRD-Datei bestimmt wird. Die Absicht des Hash-Algorithmus besteht darin, das zeitliche Verklumpen von Glättungsoperationen für mehrere RRD-Dateien zu verhindern (wie RRDTOOL normalerweise in einer Umgebung mit mehreren RRD-Dateien läuft). Die durch die RRD-Strukturdefinition bereitgestellten rradef-Parameter und cdpprep-Bereiche sind ausreichend, um alle notwendigen Parameter auf der Platte im Speicher und in dem Speicher für den Algorithmus der abweichenden Verhaltensdetektion zu speichern, wobei zuvor die Dump - und Restore-Funktionen (von XML) den Importeurport nicht vollständig unterstützten Datenstrukturen. Die Implementierung leert nun alle RRA-Parameter in XML mit dem ltparamgt - Tag auf dump und die Restore-Funktion liest die neuen Tags. Der Inhalt der cdpprep-Bereiche wird wie zuvor geschrieben, markiert durch das ltdsgt-Tag. Um das neue XML-Format zu identifizieren, verwendet die Implementierung ein Versionskennzeichen von 0002. Die folgende Liste beschreibt Dateien, die aus dem aktuellen Release (1.0.25) von RRDtool modifiziert wurden, um eine abweichende Verhaltenserkennung zu implementieren: rrdcreate. c. Unterstützung für die Gründung von HWPREDICT, SEASONAL, DEVSEASONAL und DEVPREDICT RRAs. Rrddump. c. Unterstützung für den Export von rradef par und cdpprep scratch Variablen. Rrdrestore. c. Unterstützung für den Import von rradef par - und cdpprep-Scratch-Variablen. Rrdhw. c. Hauptroutinen zur Aktualisierung der Holt-Winters RRAs Glättungsroutinen FIFO-Warteschlangenimplementierung. Rrdupdate. c. Aufrufroutinen in rrdhw. c als entsprechende Umschreibung für effiziente Bulk-Updates rrdgraph. c. Datenreduktionsunterstützung für HWPREDICT-, SEASONAL-, DEVSEASONAL - und DEVPREDICT-RRAs hinzuzufügen, die das TICK-Graphenelement hinzufügen. Rrdformat. h. Fügen Sie Enumerationswerte für Referenz in RRA - und CDP-Scratch-Arrays hinzu. Rrdtool. h. Funktion Prototypen, FIFO-Warteschlangenmethode Prototypen. Hash32.c. Implementierung von FNV-Hash. Fnv32.h. Header-Datei für FNV routines. Raspberry Pi 1-Wire Temperatursensor Projekt Hintergrund Dieses Projekt wurde inspiriert, wenn einige Rohre im Crawlspace über den Winter gefroren, wenn wir nicht da waren. Die Idee besteht darin, einige 1-Draht-Temperatursensoren aufzunehmen und sie mit einem Himbeer-Pi (RPi) zu treiben, die Messwerte zu protokollieren, eine Spurverfolgung durchzuführen und eventuell eine Glühlampe im Crawlspace auszulösen, wenn der gleitende Durchschnitt der Temperatur ansteigt Unterhalb einer Schwelle, um es ein wenig aufzuheizen, sicher. Stuff Ich landete mit: Himbeer-Pi (RPi Model-B), ein kleines Acryl-Etui für die RPi, eine SD-Karte zum Booten der RPi (ich benutzte 8Gb, weil sie herumliegen unbenutzt), 26-Pin-Flachbandkabel, Zwei 26 Ein RJ45 auf D-Sub-Adapter ohne D-Sub-Teil, Einige Cat5e Twisted-Pair-Kabel, RJ45 Crimp auf Enden für die Twisted-Pair-Kabel, Cat5e Twisted-Pair-Splitter. Einige Surface Mount RJ45 Buchsen, einige Twisted Pair Keystone Punchdown-Buchsen, Ein paar DS18S20 1-Draht-Thermometer, (optional) DS18B20 wasserdichte 1-Draht-Thermometer (n). (Optional) Realtek RTL8188CUS usb wifi adapter (Edimax EW7811) Ein Leistungsschalter Schwanz, Schrumpfschlauch, Löten. 10k Fußansicht Ein Himbeer-Pi ist ein Kreditkarten-großes Board, das Linux betreibt und hat einige nützliche Header für die Herstellung von Sachen. Mein Plan mit diesem Projekt war, die GPIO-Header der RPi zu verwenden, um die DS18S20s in regelmäßigen Abständen zu lesen und dann die Messwerte in irgendeine Art von Zeitreihen-Datenbank zu loggen (nach der Recherche habe ich das Rrdool und eine Python-Schnittstelle dazu verwendet). Ein Cronjob fragt die Temperaturwerte jede Minute ab. Ein anderer Cronjob berechnet einen 10-minütigen gleitenden Durchschnitt und kann die Glühlampen auslösen. Doch ein dritter Cronjob wacht stundenweise auf und fährt einige Grafiken auf einer Webseite, die als Display verwendet werden. Klicken Sie auf die meisten Bilder unten für größere Ansichten. Die Auswahl der DS18S20s Ich habe einige der Forschung über die 1-Draht-Thermometer und setzte sich auf dem DS18S20 vor allem wegen der Temperatur und Genauigkeit. Sie sind relativ teuer, leider. Die, die ich bekam, lief etwa 4 jeder () (Edit: sie können viel weniger teuer in diesen Tagen, ich sah 10 für 6 auf amazon vor kurzem). Sie können daisy-chained werden und sollen über Twisted Pair laufen. Eine weitere Möglichkeit ist, die wasserdichte 1-Draht-Thermometer (Link oben), die bereits umhüllt in einem wasserdichten Metallgehäuse mit einem 3ft schwarze Schnur läuft in sie zu kaufen. Dieses Ding war 5 von Amazonas, als ich es kaufte und es funktioniert auf dem gleichen 1-Draht-Netzwerk wie die anderen, keine Probleme. Es hat drei Drähte: redpower, blackground, whitedata. Einrichten der RPI Im nicht gehen, gehen in eine Tonne Detail hier, weil Sie alle diese Informationen anderswo online finden können. Das RPi will von einer SD-Karte starten. Es gibt mehrere Bilder können Sie dd auf die SD-Karte, wählte ich wheezy, die native Unterstützung für 1-Draht-Bus aus dem GPIO-Header haben. Einmal startete ich die RPi, stellte ich sicher, sshd ausgeführt wurde, hakte ein Ethernet-Kabel und tat den Rest des Setups und Codierung aus einer bequemeren Konsole. RPi GPIO - Proto Board - Twisted Pair Bridge Der RPi hat einen 26-Pin Header mit dem Namen GPIO (General Purpose IO). Ich habe gelesen, dass diese Pins sind grundsätzlich Haken direkt an den Mikroprozessor so wirklich vorsichtig sein, um sie durch einen Unfall. Seine leicht zu tun, wenn Sie baumelnde Drähte und Ruine könnte Ihre RPi. Eine Alternative zur Verwendung des GPIO-Headers ist, dass Sie einen kleinen USB-Brücken-Dongle erhalten können, der Ihr 1-Draht-Netzwerk in den USB-Port des RPi bringt. Ich beschloss, das GPIO-Material zu verwenden, weil ich so tapfer bin. Heres die GPIO-Pinbelegung: Ich habe ein 26-poliges Flachbandkabel mit einem kleinen 26-poligen Stecker gecrimpt, um den GPIO-Header aufzunehmen. Das Anbringen des Verbinders wurde in meinem Holzbearbeitungsschraubstock sorgfältig durchgeführt. Dann klemmte ich einige Drähte in das andere Ende des Verbinders und hakte es alle zu einem Breadboard, um zu sehen, wenn ich seeread ein DS18S20 könnte. Alles funktionierte und die RPi hatte einen Eintrag bei sysbusw1devices für das Thermometer, das ich als Datei lesen konnte (via cat oder ein Python-Skript). Heres, was es aussieht, wenn seine Arbeit (Ihre haben eine andere Seriennummer, sie sind alle einzigartig): Das genaue Format dieser Daten ist in dem oben genannten Datenblatt beschrieben. Die anfänglichen 0x2a und 0x00 sind die Temperatur-Nutzlast als Zeichen erweiterte twos Kompliment. Zum Glück für Sie und mich, jemand bereits konvertiert es auf eine Temperatur im Fahrer. Das ist das t Geschäft n die zweite Linie. Beachten Sie, dass theres eine implizite Dezimalpunkt so die oben genannten bedeutet 20.937176C. Denken Sie daran, um 1000 zu teilen. Es funktioniert auch beachten Sie die crcd1 YES Bit. Wenn das mit NEIN endet, zeigt der CRC (zyklische Redundanzprüfung, d. h. Fehlererfassungsbits) einen Datenfehler an, und Sie sollten das Lesen verwerfen und erneut versuchen. Das passiert. Ich hatte einige Proto-Boards, die hier liegen, also lötete ich einige Überschriften, die die Bandkabelverbindungsstücke passen. Weder die Proto-Board noch die Header war groß genug, um alle 26 Stifte aus dem Kabel, aber das ist ok, weil alles, was Sie auf dem Twisted-Pair-Netzwerk war ein Strom, Masse und Signal. Ich ursprünglich verwendet Strom aus GPIO Pin1 (3v), sondern später auf GPIO pin2 (5v) geschaltet, weil das Dokument über zuverlässige 1-Draht-Netzwerken empfohlen 5V und das Datenblatt für die DS18S20 sagt, es kann bis zu 5V behandeln. Für Masse verwendete ich GPIO Pin9 und für Signal verwendete ich GPIO pin7 (GPIO 4GPCLK0). Die DS18S20s verfügen über einen parasitären Leistungsmodus, wo Sie sie mit nur zwei Drähten ausführen können: Masse und Daten. Die Daten haben einen Pullup-Widerstand zur Stromversorgung und liefert genügend Strom für den Chip, um es auszuführen. Wenn Sie dies tun, müssen Sie den nicht benutzten Stromanschluss des DS18S20 erden. Ich habe nicht viel Glück mit diesem, though. Die DS18S20s berichten zurück schlechte Temperaturen Weise häufiger, wenn so verdrahtet. Diese zuverlässige 1-Draht-Netzwerk-doc sagt auch, dass für große Netzwerke sollten Sie drei Pins (Run Power). Also habe ich nicht Chaos mit herauszufinden, warum parasitären Power-Modus nicht sehr viel. Ich nahm einen D-Sub-RJ45-Adapter und entfernte den D-Sub-Teil, so dass ich hatte nur ein acht Stifte hängen von der Rückseite. Dann schneide ich ein paar verdrillte Kabel, verpresst ein Ende, steckte es in das D-Sub-Ding und benutzte ein Multimeter, um herauszufinden, welche Farben im Twisted-Pair-Kabel den Farben auf dem D-sub-Ding entsprachen. Auf meinem Setup sah es so aus: cat5e Twisted Pair D-Sub-Steckverbinder thingy Sie sollten Ihre eigenen überprüfen, wenn Sie sich entscheiden, es auf diese Weise tun, denn, Im sicher, dass dies nur auf die Art, wie ich Crimp Netzwerkkabel (übrigens, Die gleiche Reihenfolge wie die cat5e Twisted Pair Farben oben). Based on a diagram at hobby boards about 1-wire networks, I decided to use my twisted pair green wire for 5v power, my greenwhite wire for ground, my blue wire for data and my bluewhite wire for ground. I also hooked orange to GPIO1 and brown to GPIO17 with their pairs (orangewhite and brownwhite) both to ground also. I did this so that I could control far away light switches via a power switch tail or solid state relay later on. Twisting a signal or power wire with ground helps remove interference on the line and will help increase the length of network you can run. I used some hot glue and a zip tie to firmly anchor the D-sub thingy to the proto board and soldered the right pins to the right spots on the board to implement the connections described above. I added a 2k ohm resistor between power and signal and tested it out using a long Ethernet cable with one end cut off and jammed into a breadboard to see if I could still read the thermometer. Heres the final circuit and what it looked like: As you can see I ended up using a 2k ohm resistor instead of the recommended 4.7k ohm resistor, again on the advice of that reliable 1-wire network doc and some threads I had read online about long distance 1-wire networks. That doc defines network weight as the total amount of load (wire, devices) on the network and network radius as the distance between the master (RPi) and the most distant slave (DS18S20). I wanted several DS18S20s and had an idea that my network would need at least 20 meters of cable to do what I wanted. The 1-Wire Network Making the 1-wire network is basically as easy as laying twisted pair cable around wherever you want temperature readings. I chose to use unshielded cat5e twisted pair because I had a roll of it sitting in the closet. First, I took the DS1820s, a short distance of twisted pair cat5e cable, and a RJ45 end and made a little plug-in thermometer. Crimp the end onto the cable then solder the DS1820s three pins to the appropriate color wires on the other side. For me that is DS1820 pin1 (ground) to bluewhite, DS1820 pin2 (data) to blue and DS1820 pin3 (power) to green. I used two sizes of heat-shrink tubing to shield the wires from each other and to encase all the wires in a sheath. Be careful when youre doing this not to pre-shrink your heat shrink tubing by getting the soldering iron too close. Also look at your wires carefully I managed to nick a couple of them when stripping one of the cat5e cables and one of my thermometers would not work until I cut it open and fixed it with some electrical tape. Once you have your plug in thermometers you can run a normal twisted pair network around the area you want to take temperature readings from. I ordered some twisted pair RJ45 splitters online to facilitate this. I dont know if you can use an old hub if you have one and would love to hear. But definitely do not use a switch because my understanding is that a hub operates on the physical layer whereas a switch is aware of data. Dont worry about the bad reviews people give to RJ45 splitters: as best I can tell they are from dumb people who try to use them to wire up Ethernet instead of using a hubswitch. I terminated my runs with modular surface mount RJ45 jacks that I could plug the little thermometers into. Once everything was setup the fun part could begin: writing the code. After some research I found rrdtool. round robin database tool. This is a really neat utility that you can use to create and populate files that store a timeseries of data. It can compute derivative values, populate archive timeseries, and even make graphs of the data for you. And, to boot, there is a simple python interface to it. I also found a pretty good tutorial for using it. To setup the rrdtool on the SD card of the RPi you will need to provide the interval ( --step ) at which youll provide readings, designate one or more data sources, and create one or more RRA (round robin archives). Heres the command I ended up using: This creates three data sources (inside, outside and crawlspace) that can store data values between -50 and 50. All are supposed to be provided once every 60 seconds (--step) and will be considered to be unknown if more than 900 seconds have passed without being set. Values can be stored anytime after the UNIX timestamp passed to --start. Moreover it creates two RRAs one that averages just one datum (so takes the value of each update) and stores it for 525600 generations (1 year). The other averages sixty readings together allowing 25 of the 60 (up to 15) to be unknown and stores 87600 generations. Next, I wrote a simple python utility to poll the temperature of a sensor values and write them into this rrdtool file. Remember to check whether the CRC was valid on your read if its not the data is probably corrupt. This happens sometimes: This thing is called every minute from a cronjob and, as you can see, puts some data into the rrdtool file created above. Since rrdtool can also graph, I created another cronjob that runs once an hour to create a graph image: Heres a script that can wake up as a cronjob, compute the 10 minute moving average temperature, and toggle a light switch by setting GPIO pin 17 high or low. That pin goes out over the twisted pair network on the brown wire and can be fed into a power switch tail or a solid state relay to flip a switch. Remember that the GPIO pins are very low current ( 18ma) so you cant flip a mechanical relay with one of these directly. The wifi adapter I linked about from Edimax works with the RPi and doesnt need a powered USB hub. So I used it to avoid running Ethernet down to where I wanted the 1-Wire network to live. Heres another sample of a temperature graph extracted from the RRD (not live): index. html was last updated 1 January 2017 and is Copyright (C) 2002-2015 by Scott Gasch ( scott. gasch064gmail ).

Comments

Popular Posts