summaryrefslogtreecommitdiff
path: root/src/extensions
diff options
context:
space:
mode:
author杨威 <[email protected]>2023-06-20 22:20:22 +0800
committer杨威 <[email protected]>2023-06-26 22:16:49 +0800
commit8d30a7f74f45e3694f9d865cfba2b01fb109ec10 (patch)
tree43b022b15692816cf7741d12b3c926ca944f699b /src/extensions
parent6c4fa6c8d563c14297c641dc24c25a8124a62e03 (diff)
✨ feat(sapp metric): 支持输出fs3
Diffstat (limited to 'src/extensions')
-rw-r--r--src/extensions/sapp_metrics.cpp352
1 files changed, 262 insertions, 90 deletions
diff --git a/src/extensions/sapp_metrics.cpp b/src/extensions/sapp_metrics.cpp
index 185d1eb..5e51ebb 100644
--- a/src/extensions/sapp_metrics.cpp
+++ b/src/extensions/sapp_metrics.cpp
@@ -2,6 +2,7 @@
#include "fieldstat.h"
#include "sapp_declaration.h"
+#include "sapp_pkt_stat.h"
void sapp_fs2_update_count(int field_index, unsigned long long value)
{
@@ -132,68 +133,12 @@ void sapp_fuzzy_latency_update(void)
}
}
-
-static int fs2_plug_entry_historgram_init(sapp_gval_individual_fixed_fs_t *fs_rt)
-{
- int i;
- /* 0������sapp���ò��, index��1��ʼ */
- for(i = 1; i < g_plug_global_entry_index; i++){
- fs_rt->fs_latency_plug_entrg_id_array[i] = FS_register_histogram(fs_rt->fs_metric_handle, //Field Stat���
- FS_CALC_SPEED, //����ۼ�ֵ��˲ʱֵ
- g_plug_global_entry[i].plug_entry_name, //ͳ�������ƣ��ַ���
- 1, //��׷�ٵ���Сֵ
- 1000000, //��׷�ٵ����ֵ
- 2); //���ȣ���С�����λ����Χ1~4
- if(fs_rt->fs_latency_plug_entrg_id_array[i] < 0){
- sapp_runtime_log(RLOG_LV_FATAL, "FS_register_histogram() error, plug name:%s", g_plug_global_entry[i].plug_entry_name);
- return -1;
- }
- }
-
- return 0;
-}
-
-void sapp_fs2_set_tcp_unorder_historgram(int thead_seq, long long unorder_num)
-{
- if(sapp_global_val->individual_fixed.fs2_runtime.fs_metric_handle != NULL){
- FS_operate(sapp_global_val->individual_fixed.fs2_runtime.fs_metric_handle,
- sapp_global_val->individual_fixed.fs2_runtime.fs_tcp_unorder_id_array[thead_seq],
- 0, FS_OP_SET, unorder_num);
- }
-}
-
-static int fs2_tcp_unorder_historgram_init(sapp_gval_individual_fixed_fs_t *fs_rt)
-{
- int i;
- char histogram_name[16];
- /* 0������sapp���ò��, index��1��ʼ */
- for (i = 1; i < g_packet_io_thread_num; i++)
- {
- sprintf(histogram_name, "OoO_num(tid_%d)", i);
- fs_rt->fs_tcp_unorder_id_array[i] =
- FS_register_histogram(fs_rt->fs_metric_handle, // Field Stat���
- FS_CALC_SPEED, //����ۼ�ֵ��˲ʱֵ
- histogram_name, //ͳ�������ƣ��ַ���
- 1, //��׷�ٵ���Сֵ
- 65536, //��׷�ٵ����ֵ
- 2); //���ȣ���С�����λ����Χ1~4
- if (fs_rt->fs_tcp_unorder_id_array[i] < 0)
- {
- sapp_runtime_log(RLOG_LV_FATAL, "FS_fs2_tcp_unorder_historgram_init() error, name:%s",
- histogram_name);
- return -1;
- }
- }
-
- return 0;
-}
-
/************************ C++ compiler **************************************/
static int sapp_fs2_init(sapp_global_t *global_paramters)
{
void *fs2_handle=NULL;
int fs2_opt;
- sapp_gval_individual_fixed_fs_t *p_fs2_rt = &global_paramters->individual_fixed.fs2_runtime;
+ sapp_gval_individual_fixed_fs2_t *p_fs2_rt = &global_paramters->individual_fixed.fs2_runtime;
sapp_config_profiling_metric_t *p_fs2_para = &global_paramters->config.profiling.fs2;
int fs2_local_enabled = 0;
int fs2_prometheus_enabled = 0;
@@ -237,9 +182,12 @@ static int sapp_fs2_init(sapp_global_t *global_paramters)
fs2_opt = 1;
FS_set_para(fs2_handle, NOT_SEND_METRIC_TO_SERVER, &fs2_opt, sizeof(int));
- if(fs2_local_enabled){
- FS_set_para(fs2_handle, OUTPUT_DEVICE, ABBR_FS2_LOG_DATA_FILE, strlen(ABBR_FS2_LOG_DATA_FILE)+1);
- }else{
+ if (fs2_local_enabled)
+ {
+ FS_set_para(fs2_handle, OUTPUT_DEVICE, ABBR_FS2_LOG_DATA_FILE, strlen(ABBR_FS2_LOG_DATA_FILE) + 1);
+ }
+ else
+ {
sapp_log(RLOG_LV_INFO, 10, 10, "profiling.log.local.enabled is 0, not save local stat log file.\n");
FS_set_para(fs2_handle, OUTPUT_DEVICE, "/dev/null", strlen("/dev/null") + 1);
}
@@ -340,32 +288,39 @@ static int sapp_fs2_init(sapp_global_t *global_paramters)
p_fs2_rt->fs_id_count_array[SAPP_STAT_UDP_OFFLOAD_STREAM] = FS_register(fs2_handle, FS_STYLE_FIELD, FS_CALC_CURRENT, "Udp_Offload_STM");
p_fs2_rt->fs_id_count_array[SAPP_STAT_UDP_OFFLOAD_PKTS] = FS_register(fs2_handle, FS_STYLE_FIELD, FS_CALC_CURRENT, "Udp_Offload_Pkt");
p_fs2_rt->fs_id_length_array[SAPP_STAT_UDP_OFFLOAD_BYTES] = FS_register(fs2_handle, FS_STYLE_FIELD, FS_CALC_CURRENT, "Udp_Offload_Bit");
-
- if (unlikely(g_timestamp_record_sw))
- {
- if (fs2_tcp_unorder_historgram_init(p_fs2_rt) < 0)
- {
- return -1;
- }
- for (int i = 0; i < g_packet_io_thread_num; i++)
- {
- char histogram_name[16];
- sprintf(histogram_name, "TD_ns(tid_%d)", i);
- p_fs2_rt->fs_latency_id_array[i] = FS_register_histogram(fs2_handle, // Field Stat���
- FS_CALC_SPEED, //����ۼ�ֵ��˲ʱֵ
- histogram_name, //ͳ�������ƣ��ַ���
- 1, //��׷�ٵ���Сֵ
- 1000000, //��׷�ٵ����ֵ
- 2); //���ȣ���С�����λ����Χ1~4
- FS_set_para(fs2_handle, NOT_SEND_METRIC_TO_SERVER, &p_fs2_rt->fs_latency_id_array[i], sizeof(int));
- }
-
- if (fs2_plug_entry_historgram_init(p_fs2_rt) < 0)
- {
- return -1;
- }
- }
- FS_start(fs2_handle);
+
+ if (unlikely(g_timestamp_record_sw))
+ {
+ for (int i = 0; i < g_packet_io_thread_num; i++)
+ {
+ char histogram_name[16];
+ sprintf(histogram_name, "TD_ns(tid_%d)", i);
+ p_fs2_rt->fs_latency_id_array[i] = FS_register_histogram(fs2_handle, // Field Stat���
+ FS_CALC_SPEED, // ����ۼ�ֵ��˲ʱֵ
+ histogram_name, // ͳ�������ƣ��ַ���
+ 1, // ��׷�ٵ���Сֵ
+ 1000000, // ��׷�ٵ����ֵ
+ 2); // ���ȣ���С�����λ����Χ1~4
+ FS_set_para(fs2_handle, NOT_SEND_METRIC_TO_SERVER, &p_fs2_rt->fs_latency_id_array[i], sizeof(int));
+ }
+
+ /* 0������sapp���ò��, index��1��ʼ */
+ for (int i = 1; i < g_plug_global_entry_index; i++)
+ {
+ p_fs2_rt->fs_latency_plug_entrg_id_array[i] = FS_register_histogram(p_fs2_rt->fs_metric_handle, // Field Stat���
+ FS_CALC_SPEED, // ����ۼ�ֵ��˲ʱֵ
+ g_plug_global_entry[i].plug_entry_name, // ͳ�������ƣ��ַ���
+ 1, // ��׷�ٵ���Сֵ
+ 1000000, // ��׷�ٵ����ֵ
+ 2); // ���ȣ���С�����λ����Χ1~4
+ if (p_fs2_rt->fs_latency_plug_entrg_id_array[i] < 0)
+ {
+ sapp_runtime_log(RLOG_LV_FATAL, "FS_register_histogram() error, plug name:%s", g_plug_global_entry[i].plug_entry_name);
+ return -1;
+ }
+ }
+ }
+ FS_start(fs2_handle);
return 0;
}
@@ -373,7 +328,7 @@ static int sapp_fs2_init(sapp_global_t *global_paramters)
static void sapp_fs2_destroy(sapp_global_t *global_paramters)
{
sapp_config_profiling_metric_t *p_fs2_para = &global_paramters->config.profiling.fs2;
- sapp_gval_individual_fixed_fs_t *p_fs2_rt = &global_paramters->individual_fixed.fs2_runtime;
+ sapp_gval_individual_fixed_fs2_t *p_fs2_rt = &global_paramters->individual_fixed.fs2_runtime;
if (strlen(p_fs2_para->prometheus_service_uri) > 0 && p_fs2_para->prometheus_service_port > 0)
{
FS_library_destroy();
@@ -385,16 +340,233 @@ static void sapp_fs2_destroy(sapp_global_t *global_paramters)
}
}
+
+void sapp_fs3_metric_set(int metric_idx, int metric_idy, long long value)
+{
+ sapp_gval_individual_fixed_fs3_t *fs3_rt = &sapp_global_val->individual_fixed.fs3_runtime;
+ if(fs3_rt->fs_metric_handle!=NULL)
+ {
+ fieldstat_value_set(fs3_rt->fs_metric_handle,
+ fs3_rt->metrics_ids[metric_idx][metric_idy],
+ value);
+ }
+ return;
+}
+
+void sapp_fs3_metric_incrby(int column_idx, int column_idy,long long value)
+{
+ sapp_gval_individual_fixed_fs3_t *fs3_rt = &sapp_global_val->individual_fixed.fs3_runtime;
+ if(fs3_rt->fs_metric_handle!=NULL)
+ {
+ fieldstat_value_incrby(fs3_rt->fs_metric_handle,
+ fs3_rt->metrics_ids[column_idx][column_idy],
+ value);
+ }
+ return;
+}
+
static int sapp_fs3_init(sapp_global_t *global_paramters)
{
- sapp_config_profiling_metric_t *p_fs3_para = &global_paramters->config.profiling.fs3;
- sapp_gval_individual_fixed_fs_t *p_fs3_rt = &global_paramters->individual_fixed.fs3_runtime;
+ sapp_config_profiling_metric_t *fs3_para = &global_paramters->config.profiling.fs3;
+ sapp_gval_individual_fixed_fs3_t *fs3_rt = &global_paramters->individual_fixed.fs3_runtime;
+
+ fs3_rt->fs_metric_handle = fieldstat_instance_new(sapp_global_val->config.system.instance_name);
+ if(fs3_rt->fs_metric_handle == NULL)
+ {
+ return -1;
+ }
+ struct fieldstat_instance *fs3_handle = fs3_rt->fs_metric_handle;
+ fieldstat_set_output_interval(fs3_handle, fs3_para->refresh_interval_s * 1000);
+ if(strlen(fs3_para->local_file) > 0)
+ {
+ fieldstat_set_local_output(fs3_handle, ABBR_FS3_LOG_DATA_FILE, "default");
+ }
+ if(strlen(fs3_para->prometheus_service_uri) > 0 && fs3_para->prometheus_service_port > 0)
+ {
+ fieldstat_global_enable_prometheus_endpoint(fs3_para->prometheus_service_port, fs3_para->prometheus_service_uri);
+ fieldstat_enable_prometheus_output(fs3_handle);
+ }
+
+
+ fs3_rt->metrics_ids[0][SAPP_STAT_RCV_LINE] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Line_Pkt",
+ NULL, 0);
+ fs3_rt->metrics_ids[1][SAPP_STAT_RCV_LINE] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Line_Bit",
+ NULL, 0);
+
+ fs3_rt->metrics_ids[0][SAPP_STAT_RCV_ETHERNET] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Eth_Pkt",
+ NULL, 0);
+ fs3_rt->metrics_ids[1][SAPP_STAT_RCV_ETHERNET] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Eth_Bit",
+ NULL, 0);
+
+ fs3_rt->metrics_ids[0][SAPP_STAT_ETH_INBOUND] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Pkt_Inbound",
+ NULL, 0);
+ fs3_rt->metrics_ids[1][SAPP_STAT_ETH_INBOUND] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Bit_Inbound",
+ NULL, 0);
+ fs3_rt->metrics_ids[0][SAPP_STAT_ETH_INBOUND] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Pkt_Outbound",
+ NULL, 0);
+ fs3_rt->metrics_ids[1][SAPP_STAT_RCV_ETHERNET] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Bit_Outbound",
+ NULL, 0);
+
+
+ fs3_rt->metrics_ids[0][SAPP_STAT_RCV_UNKNOWN] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Unknown_Pkt",
+ NULL, 0);
+ fs3_rt->metrics_ids[1][SAPP_STAT_RCV_UNKNOWN] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Unknown_Bit",
+ NULL, 0);
+
+ fs3_rt->metrics_ids[0][SAPP_STAT_SND_ERROR] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Snd_Err_Pkt",
+ NULL, 0);
+
+ fs3_rt->metrics_ids[0][SAPP_STAT_RCV_IPV4] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Ipv4_Pkt",
+ NULL, 0);
+ fs3_rt->metrics_ids[1][SAPP_STAT_RCV_IPV4] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Ipv4_Bit",
+ NULL, 0);
+
+ fs3_rt->metrics_ids[0][SAPP_STAT_RCV_IPV6] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Ipv6_Pkt",
+ NULL, 0);
+ fs3_rt->metrics_ids[1][SAPP_STAT_RCV_IPV6] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Ipv6_Bit",
+ NULL, 0);
+
+ fs3_rt->metrics_ids[0][SAPP_STAT_RCV_TCP] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Tcp_Pkt",
+ NULL, 0);
+ fs3_rt->metrics_ids[1][SAPP_STAT_RCV_TCP] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Tcp_Bit",
+ NULL, 0);
+
+ fs3_rt->metrics_ids[0][SAPP_STAT_RCV_DUP_TCP] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Dup_Tcp_Pkt",
+ NULL, 0);
+ fs3_rt->metrics_ids[1][SAPP_STAT_RCV_DUP_TCP] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Dup_Tcp_Bit",
+ NULL, 0);
+
+ fs3_rt->metrics_ids[0][SAPP_STAT_TCP_LOST_PKT_STREAM_NUM] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Tcp_Lost_STM",
+ NULL, 0);
+ fs3_rt->metrics_ids[1][SAPP_STAT_TCP_LOST_PKT] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Tcp_Lost_Bit",
+ NULL, 0);
+
+ fs3_rt->metrics_ids[0][SAPP_STAT_DUP_IDENTIFY_ERR] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Dup_Key_Err",
+ NULL, 0);
+
+ fs3_rt->metrics_ids[0][SAPP_STAT_TCP_CLOSE_BY_TIMEOUT] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Tcp_Close_byT",
+ NULL, 0);
+ fs3_rt->metrics_ids[0][SAPP_STAT_TCP_CLOSE_BY_KICKOUT] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Tcp_Close_byK",
+ NULL, 0);
+
+ fs3_rt->metrics_ids[0][SAPP_STAT_RCV_UDP] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Udp_Pkt",
+ NULL, 0);
+ fs3_rt->metrics_ids[1][SAPP_STAT_RCV_UDP] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Udp_Bit",
+ NULL, 0);
+ fs3_rt->metrics_ids[0][SAPP_STAT_RCV_DUP_UDP] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Dup_Udp_Pkt",
+ NULL, 0);
+ fs3_rt->metrics_ids[1][SAPP_STAT_RCV_DUP_UDP] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Dup_Udp_Bit",
+ NULL, 0);
+
+ fs3_rt->metrics_ids[0][SAPP_STAT_UDP_CLOSE_BY_TIMEOUT] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Udp_Close_byT",
+ NULL, 0);
+ fs3_rt->metrics_ids[0][SAPP_STAT_UDP_CLOSE_BY_KICKOUT] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Udp_Close_byK",
+ NULL, 0);
+
+ fs3_rt->metrics_ids[0][SAPP_STAT_TCP_STREAM_NEW] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Tcp_Link_New",
+ NULL, 0);
+ fs3_rt->metrics_ids[0][SAPP_STAT_TCP_STREAM_DEL] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Tcp_Link_Del",
+ NULL, 0);
+
+ fs3_rt->metrics_ids[0][SAPP_STAT_TCP_STREAM_DATA] = fieldstat_register(fs3_handle, FIELD_TYPE_GAUGE, "Tcp_Concurrent",
+ NULL, 0);
+
+ fs3_rt->metrics_ids[0][SAPP_STAT_UDP_STREAM_NEW] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Udp_Link_New",
+ NULL, 0);
+ fs3_rt->metrics_ids[0][SAPP_STAT_UDP_STREAM_DEL] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Udp_Link_Del",
+ NULL, 0);
+
+ fs3_rt->metrics_ids[0][SAPP_STAT_UDP_STREAM_MORE] = fieldstat_register(fs3_handle, FIELD_TYPE_GAUGE, "Udp_Concurrent",
+ NULL, 0);
+
+
+ fs3_rt->metrics_ids[0][SAPP_STAT_TCP_STREAM_DOUBLE] = fieldstat_register(fs3_handle, FIELD_TYPE_GAUGE, "Tcp_Link_Double",
+ NULL, 0);
+ fs3_rt->metrics_ids[0][SAPP_STAT_TCP_STREAM_C2S] = fieldstat_register(fs3_handle, FIELD_TYPE_GAUGE, "Tcp_Link_C2S",
+ NULL, 0);
+ fs3_rt->metrics_ids[0][SAPP_STAT_TCP_STREAM_C2S] = fieldstat_register(fs3_handle, FIELD_TYPE_GAUGE, "Tcp_Link_S2C",
+ NULL, 0);
+
+ fs3_rt->metrics_ids[0][SAPP_STAT_TCP_STREAM_TOTAL_DOUBLE] = fieldstat_register(fs3_handle, FIELD_TYPE_GAUGE, "Tcp_Link_Double_ALL",
+ NULL, 0);
+ fs3_rt->metrics_ids[0][SAPP_STAT_TCP_STREAM_TOTAL_C2S] = fieldstat_register(fs3_handle, FIELD_TYPE_GAUGE, "Tcp_Link_C2S_ALL",
+ NULL, 0);
+ fs3_rt->metrics_ids[0][SAPP_STAT_TCP_STREAM_TOTAL_S2C] = fieldstat_register(fs3_handle, FIELD_TYPE_GAUGE, "Tcp_Link_S2C_ALL",
+ NULL, 0);
+
+ fs3_rt->metrics_ids[0][SAPP_STAT_UDP_STREAM_DOUBLE] = fieldstat_register(fs3_handle, FIELD_TYPE_GAUGE, "Udp_Link_Double",
+ NULL, 0);
+ fs3_rt->metrics_ids[0][SAPP_STAT_UDP_STREAM_C2S] = fieldstat_register(fs3_handle, FIELD_TYPE_GAUGE, "Udp_Link_C2S",
+ NULL, 0);
+ fs3_rt->metrics_ids[0][SAPP_STAT_UDP_STREAM_S2C] = fieldstat_register(fs3_handle, FIELD_TYPE_GAUGE, "Udp_Link_S2C",
+ NULL, 0);
+
+ fs3_rt->metrics_ids[0][SAPP_STAT_UDP_STREAM_TOTAL_DOUBLE] = fieldstat_register(fs3_handle, FIELD_TYPE_GAUGE, "Udp_Link_Double_ALL",
+ NULL, 0);
+ fs3_rt->metrics_ids[0][SAPP_STAT_UDP_STREAM_TOTAL_C2S] = fieldstat_register(fs3_handle, FIELD_TYPE_GAUGE, "Udp_Link_C2S_ALL",
+ NULL, 0);
+ fs3_rt->metrics_ids[0][SAPP_STAT_UDP_STREAM_TOTAL_S2C] = fieldstat_register(fs3_handle, FIELD_TYPE_GAUGE, "Udp_Link_S2C_ALL",
+ NULL, 0);
+
+ fs3_rt->metrics_ids[0][SAPP_STAT_UDP_STREAM_TOTAL_DOUBLE] = fieldstat_register(fs3_handle, FIELD_TYPE_GAUGE, "Udp_Link_Double_ALL",
+ NULL, 0);
+ fs3_rt->metrics_ids[0][SAPP_STAT_UDP_STREAM_TOTAL_C2S] = fieldstat_register(fs3_handle, FIELD_TYPE_GAUGE, "Udp_Link_C2S_ALL",
+ NULL, 0);
+ fs3_rt->metrics_ids[0][SAPP_STAT_UDP_STREAM_TOTAL_S2C] = fieldstat_register(fs3_handle, FIELD_TYPE_GAUGE, "Udp_Link_S2C_ALL",
+ NULL, 0);
+
+ fs3_rt->metrics_ids[0][SAPP_STAT_SND_TCP_RST] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Send_Tcp_Rst",
+ NULL, 0);
+ fs3_rt->metrics_ids[0][SAPP_STAT_SND_TCP_SYNACK] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Send_Tcp_S/A",
+ NULL, 0);
+ fs3_rt->metrics_ids[0][SAPP_STAT_SND_UDP] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Send_Udp",
+ NULL, 0);
+
+
+ fs3_rt->metrics_ids[0][SAPP_STAT_GLOBAL_BYPASS] = fieldstat_register(fs3_handle, FIELD_TYPE_GAUGE, "DDOS_Bypass",
+ NULL, 0);
+
+ fs3_rt->metrics_ids[0][SAPP_STAT_TCP_BYPASS_STREAM] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Tcp_Bypass_STM",
+ NULL, 0);
+ fs3_rt->metrics_ids[0][SAPP_STAT_TCP_BYPASS_PKTS] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Tcp_Bypass_Pkt",
+ NULL, 0);
+ fs3_rt->metrics_ids[1][SAPP_STAT_TCP_BYPASS_BYTES] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Tcp_Bypass_Bit",
+ NULL, 0);
+
+ fs3_rt->metrics_ids[0][SAPP_STAT_UDP_BYPASS_STREAM] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Udp_Bypass_STM",
+ NULL, 0);
+ fs3_rt->metrics_ids[0][SAPP_STAT_UDP_BYPASS_PKTS] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Udp_Bypass_Pkt",
+ NULL, 0);
+ fs3_rt->metrics_ids[1][SAPP_STAT_UDP_BYPASS_BYTES] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Udp_Bypass_Bit",
+ NULL, 0);
+
+ fs3_rt->metrics_ids[0][SAPP_STAT_TCP_OFFLOAD_STREAM] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Tcp_Offload_STM",
+ NULL, 0);
+ fs3_rt->metrics_ids[0][SAPP_STAT_TCP_OFFLOAD_PKTS] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Tcp_Offload_Pkt",
+ NULL, 0);
+ fs3_rt->metrics_ids[1][SAPP_STAT_TCP_OFFLOAD_BYTES] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Tcp_Offload_Bit",
+ NULL, 0);
+
+ fs3_rt->metrics_ids[0][SAPP_STAT_UDP_OFFLOAD_STREAM] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Udp_Offload_STM",
+ NULL, 0);
+ fs3_rt->metrics_ids[0][SAPP_STAT_UDP_OFFLOAD_PKTS] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Udp_Offload_Pkt",
+ NULL, 0);
+ fs3_rt->metrics_ids[1][SAPP_STAT_UDP_OFFLOAD_BYTES] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Udp_Offload_Bit",
+ NULL, 0);
+ // TODO: histogram for process lanency
+ fieldstat_instance_start(fs3_handle);
return 0;
}
static void sapp_fs3_destroy(sapp_global_t *global_paramters)
{
- return;
+ sapp_gval_individual_fixed_fs3_t *fs3_rt = &global_paramters->individual_fixed.fs3_runtime;
+ if(fs3_rt->fs_metric_handle != NULL)
+ {
+ fieldstat_instance_free(fs3_rt->fs_metric_handle);
+ }
+ fs3_rt->fs_metric_handle=NULL;
+ return;
}