summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorluwenpeng <[email protected]>2023-04-10 14:52:12 +0800
committerluwenpeng <[email protected]>2023-04-10 18:48:27 +0800
commit30f1bda4d478ce63fb17923ee9f71a272e2cfbeb (patch)
treed44b182dc16ac7d803e8662f1ff1b30e6b821803
parente62ea7e9f9a3862e087740491e2859f924410e9c (diff)
TSG-14599 tsg-service-chaining-engine支持新的Metrics结构
-rw-r--r--conf/sce.conf2
-rw-r--r--conf/sce_telegraf.conf12
-rw-r--r--platform/src/sf_metrics.cpp2
-rw-r--r--platform/src/sf_status.cpp2
-rw-r--r--platform/test/CMakeLists.txt20
-rw-r--r--platform/test/gtest_sf_metrics.cpp18
-rw-r--r--platform/test/gtest_sf_status.cpp19
-rw-r--r--platform/test/test_resource/sce.conf7
-rw-r--r--test/test_data/conf/sce.conf2
9 files changed, 72 insertions, 12 deletions
diff --git a/conf/sce.conf b/conf/sce.conf
index 2301c37..73af692 100644
--- a/conf/sce.conf
+++ b/conf/sce.conf
@@ -63,7 +63,7 @@ prometheus_listen_port=9001
prometheus_listen_url=/sce_prometheus
[metrics]
-# Kafka Topic: SERVICE-CHAINING-METRICS
+# Kafka Topic: POLICY-RULE-METRICS
enable=1
interval_s=1
telegraf_bind_address=127.0.0.1
diff --git a/conf/sce_telegraf.conf b/conf/sce_telegraf.conf
index cb64c02..0e6fbe2 100644
--- a/conf/sce_telegraf.conf
+++ b/conf/sce_telegraf.conf
@@ -46,21 +46,17 @@
drop_original = true
stats = ["sum"]
fieldpass = ["sent_pkts", "sent_bytes", "recv_pkts", "recv_bytes"]
- namepass = ["service_chaining_metrics"] # only "pass" swap metrics through the aggregator.
+ namepass = ["service_chaining_rule_hits"] # only "pass" swap metrics through the aggregator.
[[outputs.file]]
files = ["/tmp/sce_metrics.json", "stdout"]
data_format = "json"
- json_transformation = '''
- $merge([{"timestamp": timestamp}, tags, fields])
- '''
+ json_timestamp_units = "1ms"
[[outputs.kafka]]
sasl_username = "admin"
sasl_password = "galaxy2019"
brokers = [ "192.168.44.12:9094" ]
- topic = "SERVICE-CHAINING-METRICS"
+ topic = "POLICY-RULE-METRICS"
data_format = "json"
- json_transformation = '''
- $merge([{"timestamp": timestamp}, tags, fields])
- ''' \ No newline at end of file
+ json_timestamp_units = "1ms" \ No newline at end of file
diff --git a/platform/src/sf_metrics.cpp b/platform/src/sf_metrics.cpp
index 7337ade..9f797f8 100644
--- a/platform/src/sf_metrics.cpp
+++ b/platform/src/sf_metrics.cpp
@@ -10,7 +10,7 @@
#include "utils.h"
#include "sf_metrics.h"
-#define SCE_SF_METRICS "SCE-SF-METRICS,rule_id=%lu,sff_profile_id=%d,sf_profile_id=%d,type=service_chaining_metrics sent_pkts=%lu,sent_bytes=%lu,recv_pkts=%lu,recv_bytes=%lu"
+#define SCE_SF_METRICS "service_chaining_rule_hits,rule_id=%lu,sff_profile_id=%d,sf_profile_id=%d sent_pkts=%lu,sent_bytes=%lu,recv_pkts=%lu,recv_bytes=%lu"
struct key_tuple
{
diff --git a/platform/src/sf_status.cpp b/platform/src/sf_status.cpp
index 359caf3..2fdeefc 100644
--- a/platform/src/sf_status.cpp
+++ b/platform/src/sf_status.cpp
@@ -9,7 +9,7 @@
#include "utils.h"
#include "sf_status.h"
-#define SCE_SF_STATUS "SCE-SF-STATUS,sf_profile_id=%d,type=service_function_status sf_status=%d,sf_latency_us=%d"
+#define SCE_SF_STATUS "service_function_status,sf_profile_id=%d sf_status=%d,sf_latency_us=%d"
struct node
{
diff --git a/platform/test/CMakeLists.txt b/platform/test/CMakeLists.txt
index cd66ab2..ba09d63 100644
--- a/platform/test/CMakeLists.txt
+++ b/platform/test/CMakeLists.txt
@@ -8,11 +8,31 @@ target_include_directories(gtest_policy PUBLIC ${CMAKE_SOURCE_DIR}/platform/incl
target_link_libraries(gtest_policy common platform gtest)
###############################################################################
+# gtest_sf_metrics
+###############################################################################
+
+add_executable(gtest_sf_metrics gtest_sf_metrics.cpp)
+target_include_directories(gtest_sf_metrics PUBLIC ${CMAKE_SOURCE_DIR}/common/include)
+target_include_directories(gtest_sf_metrics PUBLIC ${CMAKE_SOURCE_DIR}/platform/include)
+target_link_libraries(gtest_sf_metrics common platform gtest)
+
+###############################################################################
+# gtest_sf_status
+###############################################################################
+
+add_executable(gtest_sf_status gtest_sf_status.cpp)
+target_include_directories(gtest_sf_status PUBLIC ${CMAKE_SOURCE_DIR}/common/include)
+target_include_directories(gtest_sf_status PUBLIC ${CMAKE_SOURCE_DIR}/platform/include)
+target_link_libraries(gtest_sf_status common platform gtest)
+
+###############################################################################
# gtest_discover_tests
###############################################################################
include(GoogleTest)
gtest_discover_tests(gtest_policy)
+gtest_discover_tests(gtest_sf_metrics)
+gtest_discover_tests(gtest_sf_status)
file(COPY ./test_resource/ DESTINATION ./test_resource/)
file(COPY ${CMAKE_SOURCE_DIR}/resource/table_info.conf DESTINATION ./test_resource/) \ No newline at end of file
diff --git a/platform/test/gtest_sf_metrics.cpp b/platform/test/gtest_sf_metrics.cpp
new file mode 100644
index 0000000..41e1394
--- /dev/null
+++ b/platform/test/gtest_sf_metrics.cpp
@@ -0,0 +1,18 @@
+#include <gtest/gtest.h>
+
+#include "sf_metrics.h"
+
+TEST(SF_METRICS, TEST)
+{
+ struct sf_metrics *metrics = sf_metrics_create("./test_resource/sce.conf");
+ EXPECT_TRUE(sf_metrics_get_interval(metrics) == 1);
+ sf_metrics_inc(metrics, 1, 2, 3, 4, 5, 6, 7);
+ sf_metrics_send(metrics);
+ sf_metrics_destory(metrics);
+}
+
+int main(int argc, char **argv)
+{
+ ::testing::InitGoogleTest(&argc, argv);
+ return RUN_ALL_TESTS();
+} \ No newline at end of file
diff --git a/platform/test/gtest_sf_status.cpp b/platform/test/gtest_sf_status.cpp
new file mode 100644
index 0000000..c77efd4
--- /dev/null
+++ b/platform/test/gtest_sf_status.cpp
@@ -0,0 +1,19 @@
+#include <gtest/gtest.h>
+
+#include "sf_status.h"
+
+TEST(SF_STATUS, TEST)
+{
+ struct sf_status *status = sf_status_create("./test_resource/sce.conf");
+ EXPECT_TRUE(sf_status_get_interval(status) == 1);
+ sf_status_update(status, 1, 0, 0);
+ sf_status_update(status, 2, 1, 1);
+ sf_status_send(status);
+ sf_status_destory(status);
+}
+
+int main(int argc, char **argv)
+{
+ ::testing::InitGoogleTest(&argc, argv);
+ return RUN_ALL_TESTS();
+} \ No newline at end of file
diff --git a/platform/test/test_resource/sce.conf b/platform/test/test_resource/sce.conf
index 3d51ddb..38a6702 100644
--- a/platform/test/test_resource/sce.conf
+++ b/platform/test/test_resource/sce.conf
@@ -23,6 +23,13 @@ redis_db_idx=0
redis_server=127.0.0.1
redis_port_range=6379
+[metrics]
+# Kafka Topic: POLICY-RULE-METRICS
+enable=1
+interval_s=1
+telegraf_bind_address=127.0.0.1
+telegraf_listen_port=8300
+
[bfdd]
path=/var/run/frr/bfdd.vty
device=eth0
diff --git a/test/test_data/conf/sce.conf b/test/test_data/conf/sce.conf
index 5a362f8..4657e47 100644
--- a/test/test_data/conf/sce.conf
+++ b/test/test_data/conf/sce.conf
@@ -63,7 +63,7 @@ prometheus_listen_port=9001
prometheus_listen_url=/sce_prometheus
[metrics]
-# Kafka Topic: SERVICE-CHAINING-METRICS
+# Kafka Topic: POLICY-RULE-METRICS
enable=0
interval_s=1
telegraf_bind_address=127.0.0.1