@ -97,11 +97,11 @@ static void conf_server(const struct conf *cfg, struct ast_sockaddr *addr)
}
}
void AST_OPTIONAL_API_NAME ( ast_statsd_log_ full ) ( const char * metric_name ,
const char * metric_type , intmax_t value , double sample_rate )
void AST_OPTIONAL_API_NAME ( ast_statsd_log_ string ) ( const char * metric_name ,
const char * metric_type , const char * value , double sample_rate )
{
RAII_VAR ( struct conf * , cfg , NULL , ao2_cleanup ) ;
RAII_VAR ( struct ast_str * , msg , NULL , ast_free ) ;
struct conf * cfg ;
struct ast_str * msg ;
size_t len ;
struct ast_sockaddr statsd_server ;
@ -109,9 +109,6 @@ void AST_OPTIONAL_API_NAME(ast_statsd_log_full)(const char *metric_name,
return ;
}
cfg = ao2_global_obj_ref ( confs ) ;
conf_server ( cfg , & statsd_server ) ;
/* Rates <= 0.0 never get logged.
* Rates > = 1.0 always get logged .
* All others leave it to chance .
@ -122,9 +119,11 @@ void AST_OPTIONAL_API_NAME(ast_statsd_log_full)(const char *metric_name,
}
cfg = ao2_global_obj_ref ( confs ) ;
conf_server ( cfg , & statsd_server ) ;
msg = ast_str_create ( 40 ) ;
if ( ! msg ) {
ao2_cleanup ( cfg ) ;
return ;
}
@ -132,7 +131,7 @@ void AST_OPTIONAL_API_NAME(ast_statsd_log_full)(const char *metric_name,
ast_str_append ( & msg , 0 , " %s. " , cfg - > global - > prefix ) ;
}
ast_str_append ( & msg , 0 , " %s:% jd |%s" , metric_name , value , metric_type ) ;
ast_str_append ( & msg , 0 , " %s:% s |%s" , metric_name , value , metric_type ) ;
if ( sample_rate < 1.0 ) {
ast_str_append ( & msg , 0 , " |@%.2f " , sample_rate ) ;
@ -144,20 +143,39 @@ void AST_OPTIONAL_API_NAME(ast_statsd_log_full)(const char *metric_name,
len = ast_str_strlen ( msg ) ;
ast_debug ( 6 , " send: %s \n " , ast_str_buffer ( msg ) ) ;
ast_debug ( 6 , " Sending statistic %s to StatsD server \n " , ast_str_buffer ( msg ) ) ;
ast_sendto ( socket_fd , ast_str_buffer ( msg ) , len , 0 , & statsd_server ) ;
ao2_cleanup ( cfg ) ;
ast_free ( msg ) ;
}
void AST_OPTIONAL_API_NAME ( ast_statsd_log_full ) ( const char * metric_name ,
const char * metric_type , intmax_t value , double sample_rate )
{
char char_value [ 30 ] ;
snprintf ( char_value , sizeof ( char_value ) , " %jd " , value ) ;
ast_statsd_log_string ( metric_name , metric_type , char_value , sample_rate ) ;
}
void AST_OPTIONAL_API_NAME ( ast_statsd_log ) ( const char * metric_name ,
const char * metric_type , intmax_t value )
{
ast_statsd_log_full ( metric_name , metric_type , value , 1.0 ) ;
char char_value [ 30 ] ;
snprintf ( char_value , sizeof ( char_value ) , " %jd " , value ) ;
ast_statsd_log_string ( metric_name , metric_type , char_value , 1.0 ) ;
}
void AST_OPTIONAL_API_NAME ( ast_statsd_log_sample ) ( const char * metric_name ,
intmax_t value , double sample_rate )
{
ast_statsd_log_full ( metric_name , AST_STATSD_COUNTER , value ,
char char_value [ 30 ] ;
snprintf ( char_value , sizeof ( char_value ) , " %jd " , value ) ;
ast_statsd_log_string ( metric_name , AST_STATSD_COUNTER , char_value ,
sample_rate ) ;
}