Полезные скрипты для обработки записанных пакетов

К сожалению, TMeter не имеет встроенного средства для построения отчетов из базы данных собранных пакетов. В качестве помощи в создании собственных отчетов, здесь размещены несколько примеров скриптов для Microsoft SQL Server.

1. Подсчет общего количества трафика для каждого фильтра

select filterid, sum(sent),sum(recv) from packets group by filterid

2. Подсчет общего количества трафика для каждого фильтра за определенный день

select filterid as filterid, sum(sent) as sent, sum(recv) as recv from packets
   where datediff(day,'2002-11-24',ts)=0
   group by filterid
   order by filterid

3. Подсчет общего количества трафика для каждого фильтра за определенный месяц

select filterid as filterid, sum(sent) as sent, sum(recv) as recv from packets
   where datediff(month,'2002-11-01',ts)=0
   group by filterid
   order by filterid

4. Подсчет общего количества трафика для определенного фильтра за каждый день определенного месяца

Переменная @dd должна быть установлена первым днем месяца, для которого вы хотите сформировать отчет.

declare @dd datetime
set @dd='2002-11-01'
select datediff(day,@dd,ts) as mday, sum(sent) as sent, sum(recv) as recv
   from packets
   where (filterid=1 AND (datediff(month,@dd,ts)=0))
   group by datediff(day,@dd,ts)
   order by datediff(day,@dd,ts)

Приме выше использует даты с нулевым индексом. Т.е. первый день месяца будет 0, второй день - будет 1 и т.д. Для избежания этой проблемы, вы можете использовать промежуточную временную таблицу:

drop table #p1
go
declare @dd datetime
set @dd='2002-11-01'
select datediff(day,@dd,ts) as mday, sum(sent) as sent, sum(recv) as recv
   into #p1
   from packets 
   where (filterid=1 AND (datediff(month,@dd,ts)=0))
   group by datediff(day,@dd,ts)
go
update #p1 set mday=mday+1
go
select * from #p1 order by mday

5. Вычисление общего количества трафика для каждого хоста определенного фильтра за определенный месяц.

select dst_ip, sum(sent) as sent, sum(recv) as recv 
   from packets
   where (filterid=1 AND (datediff(month,'2002-11-01',ts)=0))
   group by dst_ip