X-Git-Url: http://git.harvie.cz/?p=svn%2FPrometheus-QoS%2F.git;a=blobdiff_plain;f=parselogs.c;fp=parselogs.c;h=ffd82a1e333e8d6bcf2bf46d061ae0fed9e3014d;hp=a5c2acfdced78d0e6dc991456ebb9ff6601574d9;hb=3856be6ab5f6ada6c64a059a61da74d65122592e;hpb=67120c6224470998a5f772a8e1e3ebda3203aade diff --git a/parselogs.c b/parselogs.c index a5c2acf..ffd82a1 100644 --- a/parselogs.c +++ b/parselogs.c @@ -20,6 +20,8 @@ struct IpLog char *name; long traffic; long guaranted; + long avg; + time_t logged_time; int i; int lmsid; long l; @@ -32,6 +34,7 @@ void parse_ip_log(int argc, char **argv) long traffic=0l, traffic_month, total=0, guaranted; int col, col2, y_ok, m_ok, accept_month, i=1, any_month=0, lmsid; char mstr[4], ystr[5]; + long log_timestamp, log_started = 0, log_ended = 0; FILE *f; string(str,STRLEN); string(filename,STRLEN); @@ -75,14 +78,15 @@ void parse_ip_log(int argc, char **argv) /* sorry... next release of C<<1 header file will include for_path_files(name,path) { } macro */ sprintf(str,"%s %s/",ls,log_dir); shell(str); + /* for_each(file, str, dir, log_dir) */ input(str,STRLEN) { if(strstr(str,".log")) { ptr=strrchr(str,'\n'); if(ptr) *ptr='\0'; - sprintf(filename,"%s/%s",log_dir,str); - printf("Parsing %s ...",filename); + sprintf(filename,"%s/%s", log_dir,str); + printf("Parsing %s ...", filename); accept_month=0; traffic_month=0; guaranted=0; @@ -92,6 +96,7 @@ void parse_ip_log(int argc, char **argv) y_ok=m_ok=0; valid_columns(ptr,_,'\t',col) switch(col) { + case 1: log_timestamp = atol(ptr); break; case 2: name = ptr;break; case 3: traffic = atol(ptr);break; /* column number - was 7, now 11...*/ @@ -117,17 +122,32 @@ void parse_ip_log(int argc, char **argv) if(y_ok && m_ok) { traffic_month += traffic; + if(log_started == 0) + { + log_started = log_timestamp; + } accept_month = 1; } + else if (log_started != 0 && log_ended == 0) + { + log_ended = log_timestamp; + } } done; /* ugly macro end */ if(accept_month) { + if(log_ended == 0) + { + log_ended = time(NULL); + } + create(iplog,IpLog); iplog->name = name; iplog->guaranted = guaranted; - iplog->traffic = traffic_month; + iplog->avg = traffic_month * 8 / (log_ended - log_started); /* Mbps */ + iplog->logged_time = (log_ended - log_started); + iplog->traffic = traffic_month; /* MB */ iplog->lmsid = lmsid; insert(iplog,iplogs,desc_order_by,traffic); printf(" %ld MB\n",iplog->traffic); @@ -143,23 +163,33 @@ void parse_ip_log(int argc, char **argv) f=fopen(str,"w"); if(f > 0) { + time_t max_logged_time = 0; + fprintf(f, "\n\ \n\ \n\ \n\ \n\ +\n\ \n ", month, year); row_odd_even = 0; for_each(iplog, iplogs) { + if(iplog->logged_time > max_logged_time) + { + max_logged_time = iplog->logged_time; + } + if(iplog->traffic) { fprintf(f, "%s\n\ -\n\ +\n\ \n\ - \n\ - \n", - iplog->traffic, iplog->traffic>>10, iplog->guaranted); +\n\ +\n", + iplog->traffic, iplog->traffic>>10, iplog->guaranted, iplog->avg); total+=iplog->traffic>>10; iplog->i=i; iplog->l=total; } } fprintf(f,"\ - \ - \ - \n", total, line); +\ +\ +\ +\ +\n", total, line, (8*(total<<20))/max_logged_time/i); fputs("
%s %slmsData transfersMin.speedAvg.speed
%d%s\ +%s", tr_odd_even(), i++, log_url, iplog->name, iplog->name); + if(iplog->lmsid > 0) { /*base URL will be configurable soon ... */ @@ -167,21 +197,25 @@ void parse_ip_log(int argc, char **argv) } else if(iplog->lmsid == 0) { - fputs("-------",f); + fputs("------",f); } fprintf(f, "%ld MB%ld GB%ld kb/s
%ld GB%ld kb/s\ +%ld Mb/s\ +
Total:%ld GB%Ld kb/s
Total:%ld GB%Ld kb/s%Ld kb/s
\n", f); row_odd_even = 0;