diff options
| -rw-r--r-- | opentracker.c | 2 | ||||
| -rw-r--r-- | ot_mutex.h | 1 | ||||
| -rw-r--r-- | ot_stats.c | 25 |
3 files changed, 24 insertions, 4 deletions
diff --git a/opentracker.c b/opentracker.c index 46f3beb..debb868 100644 --- a/opentracker.c +++ b/opentracker.c | |||
| @@ -351,6 +351,8 @@ LOG_TO_STDERR( "sync: %d.%d.%d.%d\n", h->ip[0], h->ip[1], h->ip[2], h->ip[3] ); | |||
| 351 | mode = TASK_STATS_PEERS; | 351 | mode = TASK_STATS_PEERS; |
| 352 | else if( !byte_diff(data,4,"conn")) | 352 | else if( !byte_diff(data,4,"conn")) |
| 353 | mode = TASK_STATS_CONNS; | 353 | mode = TASK_STATS_CONNS; |
| 354 | else if( !byte_diff(data,4,"scrp")) | ||
| 355 | mode = TASK_STATS_SCRAPE; | ||
| 354 | else if( !byte_diff(data,4,"top5")) | 356 | else if( !byte_diff(data,4,"top5")) |
| 355 | mode = TASK_STATS_TOP5; | 357 | mode = TASK_STATS_TOP5; |
| 356 | else if( !byte_diff(data,4,"fscr")) | 358 | else if( !byte_diff(data,4,"fscr")) |
| @@ -24,6 +24,7 @@ typedef enum { | |||
| 24 | TASK_STATS_UDP = 0x0004, | 24 | TASK_STATS_UDP = 0x0004, |
| 25 | TASK_STATS_FULLSCRAPE = 0x0005, | 25 | TASK_STATS_FULLSCRAPE = 0x0005, |
| 26 | TASK_STATS_TPB = 0x0006, | 26 | TASK_STATS_TPB = 0x0006, |
| 27 | TASK_STATS_SCRAPE = 0x0007, | ||
| 27 | 28 | ||
| 28 | TASK_STATS_SLASH24S = 0x0100, | 29 | TASK_STATS_SLASH24S = 0x0100, |
| 29 | 30 | ||
| @@ -24,6 +24,8 @@ static unsigned long long ot_overall_tcp_successfulannounces = 0; | |||
| 24 | static unsigned long long ot_overall_udp_successfulannounces = 0; | 24 | static unsigned long long ot_overall_udp_successfulannounces = 0; |
| 25 | static unsigned long long ot_overall_tcp_successfulscrapes = 0; | 25 | static unsigned long long ot_overall_tcp_successfulscrapes = 0; |
| 26 | static unsigned long long ot_overall_udp_successfulscrapes = 0; | 26 | static unsigned long long ot_overall_udp_successfulscrapes = 0; |
| 27 | static unsigned long long ot_overall_tcp_connects = 0; | ||
| 28 | static unsigned long long ot_overall_udp_connects = 0; | ||
| 27 | static unsigned long long ot_full_scrape_count = 0; | 29 | static unsigned long long ot_full_scrape_count = 0; |
| 28 | static unsigned long long ot_full_scrape_size = 0; | 30 | static unsigned long long ot_full_scrape_size = 0; |
| 29 | 31 | ||
| @@ -171,11 +173,11 @@ static size_t stats_connections_mrtg( char * reply ) { | |||
| 171 | return sprintf( reply, | 173 | return sprintf( reply, |
| 172 | "%llu\n%llu\n%i seconds (%i hours)\nopentracker connections, %lu conns/s :: %lu success/s.", | 174 | "%llu\n%llu\n%i seconds (%i hours)\nopentracker connections, %lu conns/s :: %lu success/s.", |
| 173 | ot_overall_tcp_connections+ot_overall_udp_connections, | 175 | ot_overall_tcp_connections+ot_overall_udp_connections, |
| 174 | ot_overall_tcp_successfulannounces+ot_overall_udp_successfulannounces, | 176 | ot_overall_tcp_successfulannounces+ot_overall_udp_successfulannounces+ot_overall_udp_connects, |
| 175 | (int)t, | 177 | (int)t, |
| 176 | (int)(t / 3600), | 178 | (int)(t / 3600), |
| 177 | events_per_time( ot_overall_tcp_connections+ot_overall_udp_connections, t ), | 179 | events_per_time( ot_overall_tcp_connections+ot_overall_udp_connections, t ), |
| 178 | events_per_time( ot_overall_tcp_successfulannounces+ot_overall_udp_successfulannounces, t ) | 180 | events_per_time( ot_overall_tcp_successfulannounces+ot_overall_udp_successfulannounces+ot_overall_udp_connects, t ) |
| 179 | ); | 181 | ); |
| 180 | } | 182 | } |
| 181 | 183 | ||
| @@ -184,11 +186,11 @@ static size_t stats_udpconnections_mrtg( char * reply ) { | |||
| 184 | return sprintf( reply, | 186 | return sprintf( reply, |
| 185 | "%llu\n%llu\n%i seconds (%i hours)\nopentracker udp4 stats, %lu conns/s :: %lu success/s.", | 187 | "%llu\n%llu\n%i seconds (%i hours)\nopentracker udp4 stats, %lu conns/s :: %lu success/s.", |
| 186 | ot_overall_udp_connections, | 188 | ot_overall_udp_connections, |
| 187 | ot_overall_udp_successfulannounces, | 189 | ot_overall_udp_successfulannounces+ot_overall_udp_connects, |
| 188 | (int)t, | 190 | (int)t, |
| 189 | (int)(t / 3600), | 191 | (int)(t / 3600), |
| 190 | events_per_time( ot_overall_udp_connections, t ), | 192 | events_per_time( ot_overall_udp_connections, t ), |
| 191 | events_per_time( ot_overall_udp_successfulannounces, t ) | 193 | events_per_time( ot_overall_udp_successfulannounces+ot_overall_udp_connects, t ) |
| 192 | ); | 194 | ); |
| 193 | } | 195 | } |
| 194 | 196 | ||
| @@ -205,6 +207,17 @@ static size_t stats_tcpconnections_mrtg( char * reply ) { | |||
| 205 | ); | 207 | ); |
| 206 | } | 208 | } |
| 207 | 209 | ||
| 210 | static size_t stats_scrape_mrtg( char * reply ) { | ||
| 211 | time_t t = time( NULL ) - ot_start_time; | ||
| 212 | return sprintf( reply, | ||
| 213 | "%llu\n%llu\n%i seconds (%i hours)\nopentracker scrape stats, %lu scrape/s (tcp and udp)", | ||
| 214 | ot_overall_tcp_successfulscrapes, | ||
| 215 | ot_overall_udp_successfulscrapes, | ||
| 216 | (int)t, | ||
| 217 | (int)(t / 3600), | ||
| 218 | events_per_time( (ot_overall_tcp_successfulscrapes+ot_overall_udp_successfulscrapes), t ) | ||
| 219 | ); | ||
| 220 | } | ||
| 208 | 221 | ||
| 209 | static size_t stats_fullscrapes_mrtg( char * reply ) { | 222 | static size_t stats_fullscrapes_mrtg( char * reply ) { |
| 210 | ot_time t = time( NULL ) - ot_start_time; | 223 | ot_time t = time( NULL ) - ot_start_time; |
| @@ -244,6 +257,8 @@ size_t return_stats_for_tracker( char *reply, int mode, int format ) { | |||
| 244 | switch( mode ) { | 257 | switch( mode ) { |
| 245 | case TASK_STATS_CONNS: | 258 | case TASK_STATS_CONNS: |
| 246 | return stats_connections_mrtg( reply ); | 259 | return stats_connections_mrtg( reply ); |
| 260 | case TASK_STATS_SCRAPE: | ||
| 261 | return stats_scrape_mrtg( reply ); | ||
| 247 | case TASK_STATS_UDP: | 262 | case TASK_STATS_UDP: |
| 248 | return stats_udpconnections_mrtg( reply ); | 263 | return stats_udpconnections_mrtg( reply ); |
| 249 | case TASK_STATS_TCP: | 264 | case TASK_STATS_TCP: |
| @@ -271,6 +286,8 @@ void stats_issue_event( ot_status_event event, int is_tcp, size_t event_data ) { | |||
| 271 | break; | 286 | break; |
| 272 | case EVENT_SCRAPE: | 287 | case EVENT_SCRAPE: |
| 273 | if( is_tcp ) ot_overall_tcp_successfulscrapes++; else ot_overall_udp_successfulscrapes++; | 288 | if( is_tcp ) ot_overall_tcp_successfulscrapes++; else ot_overall_udp_successfulscrapes++; |
| 289 | case EVENT_CONNECT: | ||
| 290 | if( is_tcp ) ot_overall_tcp_connects++; else ot_overall_udp_connects++; | ||
| 274 | case EVENT_FULLSCRAPE: | 291 | case EVENT_FULLSCRAPE: |
| 275 | ot_full_scrape_count++; | 292 | ot_full_scrape_count++; |
| 276 | ot_full_scrape_size += event_data; | 293 | ot_full_scrape_size += event_data; |
