libosmovty 1.9.0.196-9975
Osmocom VTY library
stats_vty.c File Reference

VTY interface for statsd / statistic items. More...

#include <stdlib.h>
#include <string.h>
#include "config.h"
#include <osmocom/vty/command.h>
#include <osmocom/vty/buffer.h>
#include <osmocom/vty/vty.h>
#include <osmocom/vty/telnet_interface.h>
#include <osmocom/vty/misc.h>
#include <osmocom/core/stats.h>
#include <osmocom/core/counter.h>
#include <osmocom/core/rate_ctr.h>
#include <osmocom/core/stats_tcp.h>

Data Structures

struct  rctr_vty_ctx
 

Macros

#define CFG_STATS_STR   "Configure stats sub-system\n"
 
#define CFG_REPORTER_STR   "Configure a stats reporter\n"
 
#define SHOW_STATS_STR   "Show statistical values\n"
 
#define SKIP_ZERO_STR   "Skip items with total count zero\n"
 
#define STATS_STR   "Stats related commands\n"
 

Functions

static struct osmo_stats_reporterosmo_stats_vty2srep (struct vty *vty)
 
static int set_srep_parameter_str (struct vty *vty, int(*fun)(struct osmo_stats_reporter *, const char *), const char *val, const char *param_name)
 
static int set_srep_parameter_int (struct vty *vty, int(*fun)(struct osmo_stats_reporter *, int), const char *val, const char *param_name)
 
 DEFUN (cfg_stats_reporter_local_ip, cfg_stats_reporter_local_ip_cmd, "local-ip ADDR", "Set the IP address to which we bind locally\n" "IP Address\n")
 
 DEFUN (cfg_no_stats_reporter_local_ip, cfg_no_stats_reporter_local_ip_cmd, "no local-ip", NO_STR "Set the IP address to which we bind locally\n")
 
 DEFUN (cfg_stats_reporter_remote_ip, cfg_stats_reporter_remote_ip_cmd, "remote-ip ADDR", "Set the remote IP address to which we connect\n" "IP Address\n")
 
 DEFUN (cfg_stats_reporter_remote_port, cfg_stats_reporter_remote_port_cmd, "remote-port <1-65535>", "Set the remote port to which we connect\n" "Remote port number\n")
 
 DEFUN (cfg_stats_reporter_mtu, cfg_stats_reporter_mtu_cmd, "mtu <100-65535>", "Set the maximum packet size\n" "Size in byte\n")
 
 DEFUN (cfg_no_stats_reporter_mtu, cfg_no_stats_reporter_mtu_cmd, "no mtu", NO_STR "Set the maximum packet size\n")
 
 DEFUN (cfg_stats_reporter_prefix, cfg_stats_reporter_prefix_cmd, "prefix PREFIX", "Set the item name prefix\n" "The prefix string\n")
 
 DEFUN (cfg_no_stats_reporter_prefix, cfg_no_stats_reporter_prefix_cmd, "no prefix", NO_STR "Set the item name prefix\n")
 
 DEFUN (cfg_stats_reporter_level, cfg_stats_reporter_level_cmd, "level (global|peer|subscriber)", "Set the maximum group level\n" "Report global groups only\n" "Report global and network peer related groups\n" "Report global, peer, and subscriber groups\n")
 
 DEFUN (cfg_stats_reporter_enable, cfg_stats_reporter_enable_cmd, "enable", "Enable the reporter\n")
 
 DEFUN (cfg_stats_reporter_disable, cfg_stats_reporter_disable_cmd, "disable", "Disable the reporter\n")
 
 DEFUN (cfg_stats_reporter_flush_period, cfg_stats_reporter_flush_period_cmd, "flush-period <0-65535>", CFG_STATS_STR "Send all stats even if they have not changed (i.e. force the flush)" "every N-th reporting interval. Set to 0 to disable regular flush (default).\n" "0 to disable regular flush (default), 1 to flush every time, 2 to flush every 2nd time, etc\n")
 
 DEFUN (cfg_stats_reporter_statsd, cfg_stats_reporter_statsd_cmd, "stats reporter statsd [NAME]", CFG_STATS_STR CFG_REPORTER_STR "Report to a STATSD server\n" "Name of the reporter\n")
 
 DEFUN (cfg_no_stats_reporter_statsd, cfg_no_stats_reporter_statsd_cmd, "no stats reporter statsd [NAME]", NO_STR CFG_STATS_STR CFG_REPORTER_STR "Report to a STATSD server\n" "Name of the reporter\n")
 
 DEFUN (cfg_stats_reporter_log, cfg_stats_reporter_log_cmd, "stats reporter log [NAME]", CFG_STATS_STR CFG_REPORTER_STR "Report to the logger\n" "Name of the reporter\n")
 
 DEFUN (cfg_no_stats_reporter_log, cfg_no_stats_reporter_log_cmd, "no stats reporter log [NAME]", NO_STR CFG_STATS_STR CFG_REPORTER_STR "Report to the logger\n" "Name of the reporter\n")
 
 DEFUN (cfg_stats_interval, cfg_stats_interval_cmd, "stats interval <0-65535>", CFG_STATS_STR "Set the reporting interval\n" "Interval in seconds (0 disables the reporting interval)\n")
 
 DEFUN (cfg_tcp_stats_interval, cfg_tcp_stats_interval_cmd, "stats-tcp interval <0-65535>", CFG_STATS_STR "Set the tcp socket stats polling interval\n" "Interval in seconds (0 disables the polling interval)\n")
 
 DEFUN (cfg_tcp_stats_batch_size, cfg_tcp_stats_batch_size_cmd, "stats-tcp batch-size <1-65535>", CFG_STATS_STR "Set the number of tcp sockets that are processed per stats polling interval\n" "Number of sockets per interval\n")
 
 DEFUN (show_stats, show_stats_cmd, "show stats [skip-zero]", SHOW_STR SHOW_STATS_STR SKIP_ZERO_STR)
 
 DEFUN (show_stats_level, show_stats_level_cmd, "show stats level (global|peer|subscriber) [skip-zero]", SHOW_STR SHOW_STATS_STR "Set the maximum group level\n" "Show global groups only\n" "Show global and network peer related groups\n" "Show global, peer, and subscriber groups\n" SKIP_ZERO_STR)
 
static int asciidoc_handle_counter (struct osmo_counter *counter, void *sctx_)
 
static void asciidoc_counter_generate (struct vty *vty)
 
static int asciidoc_rate_ctr_handler (struct rate_ctr_group *ctrg, struct rate_ctr *ctr, const struct rate_ctr_desc *desc, void *sctx_)
 
static int asciidoc_rate_ctr_group_handler (struct rate_ctr_group *ctrg, void *sctx_)
 
static int asciidoc_osmo_stat_item_handler (struct osmo_stat_item_group *statg, struct osmo_stat_item *item, void *sctx_)
 
static int asciidoc_osmo_stat_item_group_handler (struct osmo_stat_item_group *statg, void *sctx_)
 
 DEFUN (show_stats_asciidoc_table, show_stats_asciidoc_table_cmd, "show asciidoc counters", SHOW_STR "Asciidoc generation\n" "Generate table of all registered counters\n")
 
static int rate_ctr_group_handler (struct rate_ctr_group *ctrg, void *sctx_)
 
 DEFUN (show_rate_counters, show_rate_counters_cmd, "show rate-counters [skip-zero]", SHOW_STR "Show all rate counters\n" SKIP_ZERO_STR)
 
 DEFUN (stats_report, stats_report_cmd, "stats report", STATS_STR "Manurally trigger reporting of stats\n")
 
static int reset_rate_ctr_group_handler (struct rate_ctr_group *ctrg, void *sctx_)
 
 DEFUN (stats_reset, stats_reset_cmd, "stats reset", STATS_STR "Reset all rate counter stats\n")
 
static int config_write_stats_reporter (struct vty *vty, struct osmo_stats_reporter *srep)
 
static int config_write_stats (struct vty *vty)
 
void osmo_stats_vty_add_cmds (void)
 Add stats related commands to the VTY Call this once during your application initialization if you would like to have stats VTY commands enabled. More...
 

Variables

struct host host
 
struct cmd_node cfg_stats_node
 
static const struct value_string stats_class_strs []
 

Detailed Description

VTY interface for statsd / statistic items.

This code allows you to register a couple of VTY commands that permit configuration of the Statistics reporting functionality from the VTY.

Use osmo_stats_vty_add_cmds once at application start-up to enable related commands.

Macro Definition Documentation

◆ CFG_REPORTER_STR

#define CFG_REPORTER_STR   "Configure a stats reporter\n"

◆ CFG_STATS_STR

#define CFG_STATS_STR   "Configure stats sub-system\n"

◆ SHOW_STATS_STR

#define SHOW_STATS_STR   "Show statistical values\n"

◆ SKIP_ZERO_STR

#define SKIP_ZERO_STR   "Skip items with total count zero\n"

◆ STATS_STR

#define STATS_STR   "Stats related commands\n"

Function Documentation

◆ asciidoc_counter_generate()

static void asciidoc_counter_generate ( struct vty vty)
static

◆ asciidoc_handle_counter()

static int asciidoc_handle_counter ( struct osmo_counter counter,
void *  sctx_ 
)
static

◆ asciidoc_osmo_stat_item_group_handler()

◆ asciidoc_osmo_stat_item_handler()

◆ asciidoc_rate_ctr_group_handler()

◆ asciidoc_rate_ctr_handler()

static int asciidoc_rate_ctr_handler ( struct rate_ctr_group ctrg,
struct rate_ctr ctr,
const struct rate_ctr_desc desc,
void *  sctx_ 
)
static

◆ config_write_stats()

◆ config_write_stats_reporter()

◆ DEFUN() [1/25]

DEFUN ( cfg_no_stats_reporter_local_ip  ,
cfg_no_stats_reporter_local_ip_cmd  ,
"no local-ip"  ,
NO_STR "Set the IP address to which we bind locally\n  
)

◆ DEFUN() [2/25]

DEFUN ( cfg_no_stats_reporter_log  ,
cfg_no_stats_reporter_log_cmd  ,
"no stats reporter log "  [NAME],
NO_STR CFG_STATS_STR CFG_REPORTER_STR "Report to the logger\n" "Name of the reporter\n  
)

◆ DEFUN() [3/25]

DEFUN ( cfg_no_stats_reporter_mtu  ,
cfg_no_stats_reporter_mtu_cmd  ,
"no mtu"  ,
NO_STR "Set the maximum packet size\n  
)

◆ DEFUN() [4/25]

DEFUN ( cfg_no_stats_reporter_prefix  ,
cfg_no_stats_reporter_prefix_cmd  ,
"no prefix"  ,
NO_STR "Set the item name prefix\n  
)

◆ DEFUN() [5/25]

DEFUN ( cfg_no_stats_reporter_statsd  ,
cfg_no_stats_reporter_statsd_cmd  ,
"no stats reporter statsd "  [NAME],
NO_STR CFG_STATS_STR CFG_REPORTER_STR "Report to a STATSD server\n" "Name of the reporter\n  
)

◆ DEFUN() [6/25]

DEFUN ( cfg_stats_interval  ,
cfg_stats_interval_cmd  ,
"stats interval <0-65535>"  ,
CFG_STATS_STR "Set the reporting interval\n" "Interval in seconds (0 disables the reporting interval)\n  
)

◆ DEFUN() [7/25]

DEFUN ( cfg_stats_reporter_disable  ,
cfg_stats_reporter_disable_cmd  ,
"disable"  ,
"Disable the reporter\n  
)

◆ DEFUN() [8/25]

DEFUN ( cfg_stats_reporter_enable  ,
cfg_stats_reporter_enable_cmd  ,
"enable"  ,
"Enable the reporter\n  
)

◆ DEFUN() [9/25]

DEFUN ( cfg_stats_reporter_flush_period  ,
cfg_stats_reporter_flush_period_cmd  ,
"flush-period <0-65535>"  ,
CFG_STATS_STR "Send all stats even if they have not changed   i.e. force the flush)" "every N-th reporting interval. Set to 0 to disable regular flush (default).\n" "0 to disable regular flush (default,
1 to flush every  time,
2 to flush every 2nd  time,
etc\n  
)

◆ DEFUN() [10/25]

DEFUN ( cfg_stats_reporter_level  ,
cfg_stats_reporter_level_cmd  ,
"level (global|peer|subscriber)"  ,
"Set the maximum group level\n" "Report global groups only\n" "Report global and network peer related groups\n" "Report  global,
peer  ,
and subscriber groups\n  
)

◆ DEFUN() [11/25]

DEFUN ( cfg_stats_reporter_local_ip  ,
cfg_stats_reporter_local_ip_cmd  ,
"local-ip ADDR"  ,
"Set the IP address to which we bind locally\n" "IP Address\n  
)

◆ DEFUN() [12/25]

DEFUN ( cfg_stats_reporter_log  ,
cfg_stats_reporter_log_cmd  ,
"stats reporter log "  [NAME],
CFG_STATS_STR CFG_REPORTER_STR "Report to the logger\n" "Name of the reporter\n  
)

◆ DEFUN() [13/25]

DEFUN ( cfg_stats_reporter_mtu  ,
cfg_stats_reporter_mtu_cmd  ,
"mtu <100-65535>"  ,
"Set the maximum packet size\n" "Size in byte\n  
)

◆ DEFUN() [14/25]

DEFUN ( cfg_stats_reporter_prefix  ,
cfg_stats_reporter_prefix_cmd  ,
"prefix PREFIX"  ,
"Set the item name prefix\n" "The prefix string\n  
)

◆ DEFUN() [15/25]

DEFUN ( cfg_stats_reporter_remote_ip  ,
cfg_stats_reporter_remote_ip_cmd  ,
"remote-ip ADDR"  ,
"Set the remote IP address to which we connect\n" "IP Address\n  
)

◆ DEFUN() [16/25]

DEFUN ( cfg_stats_reporter_remote_port  ,
cfg_stats_reporter_remote_port_cmd  ,
"remote-port <1-65535>"  ,
"Set the remote port to which we connect\n" "Remote port number\n  
)

◆ DEFUN() [17/25]

DEFUN ( cfg_stats_reporter_statsd  ,
cfg_stats_reporter_statsd_cmd  ,
"stats reporter statsd "  [NAME],
CFG_STATS_STR CFG_REPORTER_STR "Report to a STATSD server\n" "Name of the reporter\n  
)

◆ DEFUN() [18/25]

DEFUN ( cfg_tcp_stats_batch_size  ,
cfg_tcp_stats_batch_size_cmd  ,
"stats-tcp batch-size <1-65535>"  ,
CFG_STATS_STR "Set the number of tcp sockets that are processed per stats polling interval\n" "Number of sockets per interval\n  
)

◆ DEFUN() [19/25]

DEFUN ( cfg_tcp_stats_interval  ,
cfg_tcp_stats_interval_cmd  ,
"stats-tcp interval <0-65535>"  ,
CFG_STATS_STR "Set the tcp socket stats polling interval\n" "Interval in seconds (0 disables the polling interval)\n  
)

◆ DEFUN() [20/25]

DEFUN ( show_rate_counters  ,
show_rate_counters_cmd  ,
"show rate-counters "  [skip-zero],
SHOW_STR "Show all rate counters\n SKIP_ZERO_STR 
)

◆ DEFUN() [21/25]

DEFUN ( show_stats  ,
show_stats_cmd  ,
"show stats "  [skip-zero],
SHOW_STR SHOW_STATS_STR  SKIP_ZERO_STR 
)

◆ DEFUN() [22/25]

DEFUN ( show_stats_asciidoc_table  ,
show_stats_asciidoc_table_cmd  ,
"show asciidoc counters"  ,
SHOW_STR "Asciidoc generation\n" "Generate table of all registered counters\n  
)

◆ DEFUN() [23/25]

DEFUN ( show_stats_level  ,
show_stats_level_cmd  ,
"show stats level (global|peer|subscriber) "  [skip-zero],
SHOW_STR SHOW_STATS_STR "Set the maximum group level\n" "Show global groups only\n" "Show global and network peer related groups\n" "Show  global,
peer  ,
and subscriber groups\n SKIP_ZERO_STR 
)

◆ DEFUN() [24/25]

DEFUN ( stats_report  ,
stats_report_cmd  ,
"stats report"  ,
STATS_STR "Manurally trigger reporting of stats\n  
)

References CMD_SUCCESS, and osmo_stats_report().

◆ DEFUN() [25/25]

DEFUN ( stats_reset  ,
stats_reset_cmd  ,
"stats reset"  ,
STATS_STR "Reset all rate counter stats\n  
)

◆ osmo_stats_vty2srep()

static struct osmo_stats_reporter * osmo_stats_vty2srep ( struct vty vty)
static

◆ osmo_stats_vty_add_cmds()

void osmo_stats_vty_add_cmds ( void  )

Add stats related commands to the VTY Call this once during your application initialization if you would like to have stats VTY commands enabled.

References CFG_STATS_NODE, cfg_stats_node, CONFIG_NODE, config_write_stats(), ENABLE_NODE, install_lib_element(), install_lib_element_ve(), and install_node().

◆ rate_ctr_group_handler()

◆ reset_rate_ctr_group_handler()

static int reset_rate_ctr_group_handler ( struct rate_ctr_group ctrg,
void *  sctx_ 
)
static

References rate_ctr_group_reset().

Referenced by DEFUN().

◆ set_srep_parameter_int()

static int set_srep_parameter_int ( struct vty vty,
int(*)(struct osmo_stats_reporter *, int)  fun,
const char *  val,
const char *  param_name 
)
static

◆ set_srep_parameter_str()

static int set_srep_parameter_str ( struct vty vty,
int(*)(struct osmo_stats_reporter *, const char *)  fun,
const char *  val,
const char *  param_name 
)
static

Variable Documentation

◆ cfg_stats_node

struct cmd_node cfg_stats_node
Initial value:
= {
"%s(config-stats)# ",
1
}
@ CFG_STATS_NODE
Configure the statistics.
Definition: command.h:82

Referenced by osmo_stats_vty_add_cmds().

◆ stats_class_strs

const struct value_string stats_class_strs[]
static
Initial value:
= {
{ OSMO_STATS_CLASS_GLOBAL, "global" },
{ OSMO_STATS_CLASS_PEER, "peer" },
{ OSMO_STATS_CLASS_SUBSCRIBER, "subscriber" },
{ 0, NULL }
}
OSMO_STATS_CLASS_PEER
OSMO_STATS_CLASS_GLOBAL
OSMO_STATS_CLASS_SUBSCRIBER

Referenced by config_write_stats_reporter(), and DEFUN().