Может еще кто скрипт импорта потестит? ...а то у меня наверно не так много трафика, что б он хоть как-то ощутимо продолжительно работал...
checkpoint.sh
Код: Выделить всё
#!/bin/sh
[ -z "$1" ] && exit 1
ipacctctl $1_ip_acct:$1 checkpoint
echo "CREATE TEMPORARY TABLE traffic_tmp (
date_in timestamp NOT NULL DEFAULT now(),
ip_from inet NOT NULL,
s_port int NOT NULL,
ip_to inet NOT NULL,
d_port int NOT NULL,
proto int NOT NULL,
packets int NOT NULL,
bytes int NOT NULL,
unixtime int NOT NULL
);
COPY traffic_tmp (ip_from, s_port, ip_to, d_port, proto, packets, bytes, unixtime) FROM stdin;" >> $1.log
ipacctctl $1_ip_acct:$1 show >> $1.log
echo "\.
SELECT add_traffic('$1');" >> $1.log
psql -f $1.log ng_ipacct -U pgsql 2>/dev/null
ipacctctl $1_ip_acct:$1 clear
cat /dev/null > $1.log
base.sql
Код: Выделить всё
CREATE TABLE ifaces ( -- таблица с интерфейсами
id serial,
title varchar(16) NOT NULL, -- название интерфейса
CONSTRAINT ifaces_pk PRIMARY KEY (id),
CONSTRAINT ifaces_u1 UNIQUE (title)
);
CREATE TABLE traffic ( -- траффик по интерфейсам
id serial,
ifaces_id int NOT NULL,
ip_from inet NOT NULL,
s_port int NOT NULL,
ip_to inet NOT NULL,
d_port int NOT NULL,
proto int NOT NULL,
packets int NOT NULL, -- количество прошедших пакетов
bytes int NOT NULL, -- количество прошедших байт
date_packet timestamp NOT NULL, -- время прохождеия пакетов
CONSTRAINT traffic_pk PRIMARY KEY (id),
CONSTRAINT traffic_f1 FOREIGN KEY (ifaces_id) REFERENCES ifaces (id)
);
CREATE OR REPLACE FUNCTION add_traffic(ifaces.title%TYPE) RETURNS int AS $_$
DECLARE
titleIN ALIAS FOR $1;
ifacesID ifaces.id%TYPE;
BEGIN
SELECT id INTO ifacesID FROM ifaces WHERE title = titleIN;
INSERT INTO traffic (ifaces_id, ip_from, s_port, ip_to, d_port, proto, date_packet, packets, bytes)
SELECT ifacesID AS ifaces_id, ip_from, s_port, ip_to, d_port, proto, abstime(unixtime), sum(packets) AS packets, sum(bytes) AS bytes
FROM traffic_tmp
GROUP BY ip_from, s_port, ip_to, d_port, proto, unixtime;
RETURN 0;
END;
$_$ LANGUAGE plpgsql;