diff --git a/daemon/call.h b/daemon/call.h index 8a2b77c0b..09d48cdcb 100644 --- a/daemon/call.h +++ b/daemon/call.h @@ -258,6 +258,10 @@ struct totalstats { atomic64 total_nopacket_relayed_sess; atomic64 total_oneway_stream_sess; + u_int64_t foreign_sessions; + u_int64_t own_sessions; + u_int64_t total_sessions; + mutex_t total_average_lock; /* for these two below */ u_int64_t total_managed_sess; struct timeval total_average_call_dur; @@ -269,6 +273,8 @@ struct totalstats { mutex_t total_calls_duration_lock; /* for these two below */ struct timeval total_calls_duration_interval; + + struct request_time offer, answer, delete; }; diff --git a/daemon/graphite.c b/daemon/graphite.c index a85050d24..c8a305e50 100644 --- a/daemon/graphite.c +++ b/daemon/graphite.c @@ -134,9 +134,11 @@ int send_graphite_data(struct callmaster *cm, struct totalstats *sent_data) { mutex_lock(&cm->totalstats_interval.managed_sess_lock); ts->managed_sess_max = cm->totalstats_interval.managed_sess_max; ts->managed_sess_min = cm->totalstats_interval.managed_sess_min; - - cm->totalstats_interval.managed_sess_max = g_hash_table_size(cm->callhash) - atomic64_get(&cm->stats.foreign_sessions); - cm->totalstats_interval.managed_sess_min = g_hash_table_size(cm->callhash) - atomic64_get(&cm->stats.foreign_sessions); + ts->total_sessions = g_hash_table_size(cm->callhash); + ts->foreign_sessions = atomic64_get(&cm->stats.foreign_sessions); + ts->own_sessions = ts->total_sessions - ts->foreign_sessions; + cm->totalstats_interval.managed_sess_max = ts->own_sessions;; + cm->totalstats_interval.managed_sess_min = ts->own_sessions; mutex_unlock(&cm->totalstats_interval.managed_sess_lock); rwlock_unlock_r(&cm->hashlock); @@ -179,6 +181,12 @@ int send_graphite_data(struct callmaster *cm, struct totalstats *sent_data) { if (graphite_prefix!=NULL) { rc = sprintf(ptr,"%s",graphite_prefix); ptr += rc; } rc = sprintf(ptr,"managed_sess_max "UINT64F" %llu\n", ts->managed_sess_max,(unsigned long long)g_now.tv_sec); ptr += rc; if (graphite_prefix!=NULL) { rc = sprintf(ptr,"%s",graphite_prefix); ptr += rc; } + rc = sprintf(ptr,"current_sessions_total "UINT64F" %llu\n", ts->total_sessions,(unsigned long long)g_now.tv_sec); ptr += rc; + if (graphite_prefix!=NULL) { rc = sprintf(ptr,"%s",graphite_prefix); ptr += rc; } + rc = sprintf(ptr,"current_sessions_own "UINT64F" %llu\n", ts->own_sessions,(unsigned long long)g_now.tv_sec); ptr += rc; + if (graphite_prefix!=NULL) { rc = sprintf(ptr,"%s",graphite_prefix); ptr += rc; } + rc = sprintf(ptr,"current_sessions_foreign "UINT64F" %llu\n", ts->foreign_sessions,(unsigned long long)g_now.tv_sec); ptr += rc; + if (graphite_prefix!=NULL) { rc = sprintf(ptr,"%s",graphite_prefix); ptr += rc; } rc = sprintf(ptr,"nopacket_relayed_sess "UINT64F" %llu\n", atomic64_get_na(&ts->total_nopacket_relayed_sess),(unsigned long long)g_now.tv_sec); ptr += rc; if (graphite_prefix!=NULL) { rc = sprintf(ptr,"%s",graphite_prefix); ptr += rc; } rc = sprintf(ptr,"oneway_stream_sess "UINT64F" %llu\n", atomic64_get_na(&ts->total_oneway_stream_sess),(unsigned long long)g_now.tv_sec); ptr += rc;