summaryrefslogtreecommitdiff
path: root/platform
diff options
context:
space:
mode:
authorluwenpeng <[email protected]>2024-11-08 18:19:13 +0800
committerluwenpeng <[email protected]>2024-11-08 18:47:06 +0800
commit37c0b1b783f53ba7dab1658315019805bcc415c8 (patch)
treee6a29d30676dd051493182be8ef7279472aa2cb1 /platform
parent4f48b59b703c4ab40b655e7f79b581b462da0440 (diff)
PacketAdapter移除FieldStat2,为适配AArch64做准备
Diffstat (limited to 'platform')
-rw-r--r--platform/CMakeLists.txt2
-rw-r--r--platform/include/packet_stat.h3
-rw-r--r--platform/src/packet_adapter.cpp4
-rw-r--r--platform/src/packet_stat.cpp150
4 files changed, 69 insertions, 90 deletions
diff --git a/platform/CMakeLists.txt b/platform/CMakeLists.txt
index 48fc431..cdbe9f2 100644
--- a/platform/CMakeLists.txt
+++ b/platform/CMakeLists.txt
@@ -10,7 +10,7 @@ target_include_directories(packet_adapter PUBLIC ${CMAKE_CURRENT_LIST_DIR}/inclu
target_link_libraries(packet_adapter common)
target_link_libraries(packet_adapter pthread)
-target_link_libraries(packet_adapter MESA_field_stat)
+target_link_libraries(packet_adapter fieldstat4)
install(TARGETS packet_adapter RUNTIME DESTINATION bin COMPONENT Program)
add_subdirectory(test) \ No newline at end of file
diff --git a/platform/include/packet_stat.h b/platform/include/packet_stat.h
index 3e56cd8..1d8ba84 100644
--- a/platform/include/packet_stat.h
+++ b/platform/include/packet_stat.h
@@ -10,8 +10,7 @@ struct packet_stat;
struct packet_stat *packet_stat_create(const char *profile);
void packet_stat_destory(struct packet_stat *handle);
-void packet_stat_output(struct packet_stat *handle, struct metrics *metrics);
-int packet_stat_cycle(struct packet_stat *handle);
+void packet_stat_flush(struct packet_stat *handle, struct metrics *metrics);
#ifdef __cpluscplus
}
diff --git a/platform/src/packet_adapter.cpp b/platform/src/packet_adapter.cpp
index 6fa94f0..3075c81 100644
--- a/platform/src/packet_adapter.cpp
+++ b/platform/src/packet_adapter.cpp
@@ -227,8 +227,8 @@ int main(int argc, char **argv)
while (!runtime->need_stop)
{
- packet_stat_output(runtime->stat, &runtime->metrics);
- sleep(packet_stat_cycle(runtime->stat));
+ packet_stat_flush(runtime->stat, &runtime->metrics);
+ sleep(1);
}
error:
diff --git a/platform/src/packet_stat.cpp b/platform/src/packet_stat.cpp
index d9d3e40..c3f41c4 100644
--- a/platform/src/packet_stat.cpp
+++ b/platform/src/packet_stat.cpp
@@ -1,7 +1,7 @@
#include <stdlib.h>
#include <string.h>
#include <assert.h>
-#include <MESA/field_stat2.h>
+#include <fieldstat/fieldstat_easy.h>
#include <MESA/MESA_prof_load.h>
#include "log.h"
@@ -55,45 +55,38 @@ static const char *stat_map[] =
struct stat_config
{
char output_file[256];
- char statsd_server[32];
- int statsd_port;
- int statsd_format;
int statsd_cycle;
-
- int prometheus_listen_port;
- char prometheus_listen_url[256];
};
struct packet_stat
{
struct stat_config config;
- screen_stat_handle_t fs_handle;
+ struct fieldstat_easy *fs_handle;
int fs_id[512];
};
static void packet_stat_config(const char *profile, struct stat_config *config)
{
MESA_load_profile_string_def(profile, "STAT", "output_file", config->output_file, sizeof(config->output_file), "log/packet_adapter.fs2");
- MESA_load_profile_string_def(profile, "STAT", "statsd_server", config->statsd_server, sizeof(config->statsd_server), "127.0.0.1");
- MESA_load_profile_int_def(profile, "STAT", "statsd_port", &(config->statsd_port), 8100);
- MESA_load_profile_int_def(profile, "STAT", "statsd_format", &(config->statsd_format), 1); // FS_OUTPUT_STATSD=1, FS_OUTPUT_INFLUX_LINE=2
MESA_load_profile_int_def(profile, "STAT", "statsd_cycle", &(config->statsd_cycle), 1);
- MESA_load_profile_int_def(profile, "STAT", "prometheus_listen_port", &(config->prometheus_listen_port), 9001);
- MESA_load_profile_string_def(profile, "STAT", "prometheus_listen_url", config->prometheus_listen_url, sizeof(config->prometheus_listen_url), "/packet_prometheus");
+ LOG_DEBUG("STAT->output_file : %s", config->output_file);
+ LOG_DEBUG("STAT->statsd_cycle : %d", config->statsd_cycle);
+}
- if (config->statsd_format != 1 && config->statsd_format != 2)
+void packet_stat_destory(struct packet_stat *handle)
+{
+ if (handle)
{
- config->statsd_format = 1;
- }
+ if (handle->fs_handle)
+ {
+ fieldstat_easy_free(handle->fs_handle);
+ handle->fs_handle = NULL;
+ }
- LOG_DEBUG("STAT->output_file : %s", config->output_file);
- LOG_DEBUG("STAT->statsd_server : %s", config->statsd_server);
- LOG_DEBUG("STAT->statsd_port : %d", config->statsd_port);
- LOG_DEBUG("STAT->statsd_format : %d", config->statsd_format);
- LOG_DEBUG("STAT->statsd_cycle : %d", config->statsd_cycle);
- LOG_DEBUG("STAT->prometheus_listen_port : %d", config->prometheus_listen_port);
- LOG_DEBUG("STAT->prometheus_listen_url : %s", config->prometheus_listen_url);
+ free(handle);
+ handle = NULL;
+ }
}
struct packet_stat *packet_stat_create(const char *profile)
@@ -103,79 +96,66 @@ struct packet_stat *packet_stat_create(const char *profile)
packet_stat_config(profile, &handle->config);
- FS_library_set_prometheus_port(handle->config.prometheus_listen_port);
- FS_library_set_prometheus_url_path(handle->config.prometheus_listen_url);
- FS_library_init();
-
- int value = 0;
- handle->fs_handle = FS_create_handle(); // TODO memleak no free() API
- FS_set_para(handle->fs_handle, APP_NAME, "packet_adapter", 13);
- FS_set_para(handle->fs_handle, OUTPUT_DEVICE, handle->config.output_file, strlen(handle->config.output_file));
- value = 1;
- FS_set_para(handle->fs_handle, OUTPUT_PROMETHEUS, &value, sizeof(value));
- value = 1;
- FS_set_para(handle->fs_handle, PRINT_MODE, &value, sizeof(value));
- value = 0;
- FS_set_para(handle->fs_handle, CREATE_THREAD, &value, sizeof(value));
-
- if (strlen(handle->config.statsd_server) > 0 && handle->config.statsd_port != 0)
+ handle->fs_handle = fieldstat_easy_new(1, "packet_adapter", NULL, 0);
+ if (handle->fs_handle == NULL)
{
- FS_set_para(handle->fs_handle, STATS_SERVER_IP, handle->config.statsd_server, strlen(handle->config.statsd_server));
- FS_set_para(handle->fs_handle, STATS_SERVER_PORT, &(handle->config.statsd_port), sizeof(handle->config.statsd_port));
- FS_set_para(handle->fs_handle, STATS_FORMAT, &handle->config.statsd_format, sizeof(handle->config.statsd_format));
+ LOG_ERROR("fieldstat_easy_new failed");
+ goto error_out;
}
- for (int i = 0; i < STAT_MAX; i++)
+ if (fieldstat_easy_enable_auto_output(handle->fs_handle, handle->config.output_file, handle->config.statsd_cycle) != 0)
{
- handle->fs_id[i] = FS_register(handle->fs_handle, FS_STYLE_FIELD, FS_CALC_CURRENT, stat_map[i]);
+ LOG_ERROR("fieldstat_easy_enable_auto_output failed");
+ goto error_out;
}
- FS_start(handle->fs_handle);
-
- return handle;
-}
-
-void packet_stat_destory(struct packet_stat *handle)
-{
- if (handle)
+ for (int i = 0; i < STAT_MAX; i++)
{
- FS_library_destroy();
- free(handle);
- handle = NULL;
+ handle->fs_id[i] = fieldstat_easy_register_counter(handle->fs_handle, stat_map[i]);
}
-}
-
-void packet_stat_output(struct packet_stat *handle, struct metrics *metrics)
-{
- FS_operate(handle->fs_handle, handle->fs_id[STAT_RX_PKT], 0, FS_OP_SET, ATOMIC_READ(&(metrics->rx_pkts)));
- FS_operate(handle->fs_handle, handle->fs_id[STAT_RX_B], 0, FS_OP_SET, ATOMIC_READ(&(metrics->rx_bytes)));
-
- FS_operate(handle->fs_handle, handle->fs_id[STAT_RX_ERR_PKT], 0, FS_OP_SET, ATOMIC_READ(&(metrics->rx_err_pkts)));
- FS_operate(handle->fs_handle, handle->fs_id[STAT_RX_ERR_B], 0, FS_OP_SET, ATOMIC_READ(&(metrics->rx_err_bytes)));
- FS_operate(handle->fs_handle, handle->fs_id[STAT_SUCC_TX_V4_PKT], 0, FS_OP_SET, ATOMIC_READ(&(metrics->succ_tx_v4_pkts)));
- FS_operate(handle->fs_handle, handle->fs_id[STAT_SUCC_TX_V4_B], 0, FS_OP_SET, ATOMIC_READ(&(metrics->succ_tx_v4_bytes)));
-
- FS_operate(handle->fs_handle, handle->fs_id[STAT_SUCC_TX_V6_PKT], 0, FS_OP_SET, ATOMIC_READ(&(metrics->succ_tx_v6_pkts)));
- FS_operate(handle->fs_handle, handle->fs_id[STAT_SUCC_TX_V6_B], 0, FS_OP_SET, ATOMIC_READ(&(metrics->succ_tx_v6_bytes)));
-
- FS_operate(handle->fs_handle, handle->fs_id[STAT_ERR_TX_V4_PKT], 0, FS_OP_SET, ATOMIC_READ(&(metrics->err_tx_v4_pkts)));
- FS_operate(handle->fs_handle, handle->fs_id[STAT_ERR_TX_V4_B], 0, FS_OP_SET, ATOMIC_READ(&(metrics->err_tx_v4_bytes)));
-
- FS_operate(handle->fs_handle, handle->fs_id[STAT_ERR_TX_V6_PKT], 0, FS_OP_SET, ATOMIC_READ(&(metrics->err_tx_v6_pkts)));
- FS_operate(handle->fs_handle, handle->fs_id[STAT_ERR_TX_V6_B], 0, FS_OP_SET, ATOMIC_READ(&(metrics->err_tx_v6_bytes)));
+ return handle;
- FS_passive_output(handle->fs_handle);
+error_out:
+ packet_stat_destory(handle);
+ return NULL;
}
-int packet_stat_cycle(struct packet_stat *handle)
+void packet_stat_flush(struct packet_stat *handle, struct metrics *metrics)
{
- if (handle)
- {
- return handle->config.statsd_cycle;
- }
- else
- {
- return 0;
- }
+ static struct metrics last_metrics = {0};
+ struct metrics curr_metrics = {
+ .rx_pkts = ATOMIC_READ(&(metrics->rx_pkts)),
+ .rx_bytes = ATOMIC_READ(&(metrics->rx_bytes)),
+ .rx_err_pkts = ATOMIC_READ(&(metrics->rx_err_pkts)),
+ .rx_err_bytes = ATOMIC_READ(&(metrics->rx_err_bytes)),
+ .succ_tx_v4_pkts = ATOMIC_READ(&(metrics->succ_tx_v4_pkts)),
+ .succ_tx_v4_bytes = ATOMIC_READ(&(metrics->succ_tx_v4_bytes)),
+ .succ_tx_v6_pkts = ATOMIC_READ(&(metrics->succ_tx_v6_pkts)),
+ .succ_tx_v6_bytes = ATOMIC_READ(&(metrics->succ_tx_v6_bytes)),
+ .err_tx_v4_pkts = ATOMIC_READ(&(metrics->err_tx_v4_pkts)),
+ .err_tx_v4_bytes = ATOMIC_READ(&(metrics->err_tx_v4_bytes)),
+ .err_tx_v6_pkts = ATOMIC_READ(&(metrics->err_tx_v6_pkts)),
+ .err_tx_v6_bytes = ATOMIC_READ(&(metrics->err_tx_v6_bytes)),
+ };
+
+ fieldstat_easy_counter_incrby(handle->fs_handle, 0, handle->fs_id[STAT_RX_PKT], NULL, 0, curr_metrics.rx_pkts - last_metrics.rx_pkts);
+ fieldstat_easy_counter_incrby(handle->fs_handle, 0, handle->fs_id[STAT_RX_B], NULL, 0, curr_metrics.rx_bytes - last_metrics.rx_bytes);
+
+ fieldstat_easy_counter_incrby(handle->fs_handle, 0, handle->fs_id[STAT_RX_ERR_PKT], NULL, 0, curr_metrics.rx_err_pkts - last_metrics.rx_err_pkts);
+ fieldstat_easy_counter_incrby(handle->fs_handle, 0, handle->fs_id[STAT_RX_ERR_B], NULL, 0, curr_metrics.rx_err_bytes - last_metrics.rx_err_bytes);
+
+ fieldstat_easy_counter_incrby(handle->fs_handle, 0, handle->fs_id[STAT_SUCC_TX_V4_PKT], NULL, 0, curr_metrics.succ_tx_v4_pkts - last_metrics.succ_tx_v4_pkts);
+ fieldstat_easy_counter_incrby(handle->fs_handle, 0, handle->fs_id[STAT_SUCC_TX_V4_B], NULL, 0, curr_metrics.succ_tx_v4_bytes - last_metrics.succ_tx_v4_bytes);
+
+ fieldstat_easy_counter_incrby(handle->fs_handle, 0, handle->fs_id[STAT_SUCC_TX_V6_PKT], NULL, 0, curr_metrics.succ_tx_v6_pkts - last_metrics.succ_tx_v6_pkts);
+ fieldstat_easy_counter_incrby(handle->fs_handle, 0, handle->fs_id[STAT_SUCC_TX_V6_B], NULL, 0, curr_metrics.succ_tx_v6_bytes - last_metrics.succ_tx_v6_bytes);
+
+ fieldstat_easy_counter_incrby(handle->fs_handle, 0, handle->fs_id[STAT_ERR_TX_V4_PKT], NULL, 0, curr_metrics.err_tx_v4_pkts - last_metrics.err_tx_v4_pkts);
+ fieldstat_easy_counter_incrby(handle->fs_handle, 0, handle->fs_id[STAT_ERR_TX_V4_B], NULL, 0, curr_metrics.err_tx_v4_bytes - last_metrics.err_tx_v4_bytes);
+
+ fieldstat_easy_counter_incrby(handle->fs_handle, 0, handle->fs_id[STAT_ERR_TX_V6_PKT], NULL, 0, curr_metrics.err_tx_v6_pkts - last_metrics.err_tx_v6_pkts);
+ fieldstat_easy_counter_incrby(handle->fs_handle, 0, handle->fs_id[STAT_ERR_TX_V6_B], NULL, 0, curr_metrics.err_tx_v6_bytes - last_metrics.err_tx_v6_bytes);
+
+ last_metrics = curr_metrics;
} \ No newline at end of file