Hallo Gruppe, Hallo Andreas,
wiedermal saß der Fehler vorm Bildschirm. 'pmacct' zählt richtig, alle anderen nicht. Die Auflösung: 'ipac-ng' schaut sich "nur" IPv4 an und da läuft nachts ja noch ein Backup ins RZ über - oh staune IPv6. Der Hoster ist so gütig mir traffic in seinen Netzen nicht zu berechnen und zeigt ihn mir deshalb auch nicht an. Nun habe ich gelernt, dass 'obnam' nicht mehr in einer Stunde fertig ist und über 20gb vom Backupziel pro Sicherung einliest.
Nun sammeln sich die Daten und machen vermutlich absehbar die Datenbank unbedienbar. 'ipac-ng' hatte da eine super Funktion "-r : replace", die Daten zusammengefasst hat. So habe ich Daten alle Minute gesammelt, aller Stunden, Tage, Wochen und Monate aber zusammengefasst. Sowas hätte ich jetzt gern wieder um der Millionen Zeilen Herr zu werden. 'pmacct' selbst kann das offenbar nicht, nur in täglich neue Tabellen schreiben was die Datenmenge ja nicht minimiert.
Jetzt braucht es wohl intelligente und performante SQL-Syntax das für mich zu erledigen - ein Wunder, dass es sowas offenbar noch nicht fertig gibt. Ich habe die Spalten ip_src, ip_dst, ports_src, port_dst, bytes sowie inserted (vereinfacht). Nun sollen alle Zeilen, deren 4 erste Spalten identisch sind und deren 'inserted' innerhalb einer Stunde liegen zu einer Zeile mit summierten 'bytes' zusammengefasst werden. Nur muss man dazu immer wieder iterativ über die gesamte DB rennen, was mir Sorgen bereitet.
Hier die aktuelle Tabelle:
CREATE TABLE acct ( mac_src macaddr NOT NULL DEFAULT '0:0:0:0:0:0', mac_dst macaddr NOT NULL DEFAULT '0:0:0:0:0:0', ip_src inet NOT NULL DEFAULT '0.0.0.0', ip_dst inet NOT NULL DEFAULT '0.0.0.0', port_src INT NOT NULL DEFAULT 0, port_dst INT NOT NULL DEFAULT 0, ip_proto SMALLINT NOT NULL DEFAULT 0, packets BIGINT NOT NULL, bytes BIGINT NOT NULL, stamp_inserted timestamp without time zone NOT NULL DEFAULT CURRENT_TIMESTAMP(0), stamp_updated timestamp without time zone, CONSTRAINT acct_pk PRIMARY KEY (mac_src, mac_dst, ip_src, ip_dst, port_src, port_dst, ip_proto, stamp_inserted) );
Ich möchte da so wenig wie möglich keys drin haben, da die die INSERTS und UPDATES durch 'pmacct' sicher nur verlangsamen - kann man da welche entfernen?
Und wie komme ich jetzt am Besten zu meiner Datenzusammenführung?
neben stamp_updated auch noch stamp_inserted. Ich weiß nicht, wann stamp_updated gesetzt wird und auch nicht auf was, vermute aber, Du solltest eher auf stamp_inserted aggregieren.
Ja, wenn die Konfiguration - und dort konkret sql_refresh_time und sql_history - zusammenpassen, dann ist 'stamp_insterted' wohl das Mittel der Wahl.
Mit freundlichen Grüßen / Kind regards Ronny Seffner -- Ronny Seffner | Alter Viehweg 1 | 01665 Klipphausen www.seffner.de | ronny@seffner.de | +49 35245 72950 7EA62E22D9CC4F0B74DCBCEA864623A568694DB8