diff --git a/pom.xml b/pom.xml
index 221db19..aa4dbae 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
com.zdjizhi
knowledge-log
- 20220722
+ 20220819
log-completion-schema
http://www.example.com
@@ -218,7 +218,7 @@
ru.yandex.clickhouse
clickhouse-jdbc
- 0.2.6
+ 0.2.4
diff --git a/properties/default_config.properties b/properties/default_config.properties
index 25a975d..0adb876 100644
--- a/properties/default_config.properties
+++ b/properties/default_config.properties
@@ -44,4 +44,4 @@ mail.default.charset=UTF-8
log.transform.type=1
#\u4E24\u4E2A\u8F93\u51FA\u4E4B\u95F4\u7684\u6700\u5927\u65F6\u95F4(\u5355\u4F4Dmilliseconds)
-buffer.timeout=5000
+buffer.timeout=15000
diff --git a/properties/service_flow_config.properties b/properties/service_flow_config.properties
index 874188e..3f47eda 100644
--- a/properties/service_flow_config.properties
+++ b/properties/service_flow_config.properties
@@ -8,23 +8,23 @@ sink.kafka.servers=
tools.library=
#--------------------------------Kafka\u6D88\u8D39/\u751F\u4EA7\u914D\u7F6E------------------------------#
#\u8BFB\u53D6topic,\u5B58\u50A8\u8BE5spout id\u7684\u6D88\u8D39offset\u4FE1\u606F\uFF0C\u53EF\u901A\u8FC7\u8BE5\u62D3\u6251\u547D\u540D;\u5177\u4F53\u5B58\u50A8offset\u7684\u4F4D\u7F6E\uFF0C\u786E\u5B9A\u4E0B\u6B21\u8BFB\u53D6\u4E0D\u91CD\u590D\u7684\u6570\u636E\uFF1B
-group.id=KNOWLEDGE-GROUP3
+group.id=KNOWLEDGE-GROUP5
#--------------------------------topology\u914D\u7F6E------------------------------#
#consumer \u5E76\u884C\u5EA6
source.parallelism=1
#\u8F6C\u6362\u51FD\u6570\u5E76\u884C\u5EA6
transform.parallelism=1
#kafka producer \u5E76\u884C\u5EA6
-sink.parallelism=1
+sink.parallelism=3
#--------------------------------\u4E1A\u52A1\u914D\u7F6E------------------------------#
#1 connection\u65E5\u5FD7 \uFF0C2 dns\u65E5\u5FD7
-log.type=1
+log.type=2
#\u751F\u4EA7\u8005\u538B\u7F29\u6A21\u5F0F none or snappy
producer.kafka.compression.type=none
#kafka\u6570\u636E\u6E90topic
-source.kafka.topic.connection=test12
+source.kafka.topic.connection=CONNECTION-RECORD-LOG
source.kafka.topic.sketch=CONNECTION-SKETCH-RECORD-LOG
source.kafka.topic.dns=DNS-RECORD-LOG
#\u5199\u5165clickhouse\u672C\u5730\u8868
@@ -43,27 +43,27 @@ sink.arangodb.table.r.nx.domain2domain=R_NX_DOMAIN2DOMAIN
#\u4F7F\u7528flink\u5165\u5E93\u539F\u59CB\u65E5\u5FD70\uFF1A\u5426\uFF0C1\uFF1A\u662F
sink.ck.raw.log.insert.open=1
#clickhouse\u914D\u7F6E\uFF0C\u591A\u4E2A\u9017\u53F7\u8FDE\u63A5 ip1:8123,ip2:8123
-ck.hosts=192.168.44.12:8123
+ck.hosts=192.168.44.85:8123,192.168.44.86:8123,192.168.44.87:8123
ck.database=tsg_galaxy_v3
-ck.username=default
+ck.username=tsg_insert
ck.pin=galaxy2019
#\u8D85\u65F6\u65F6\u95F4\u5355\u4F4D\u6BEB\u79D2
ck.connection.timeout=10000
-ck.socket.timeout=300000
+ck.socket.timeout=600000
#clickhouse\u5165\u5E93\u6279\u91CF\u5355\u4F4D\u6761
-ck.batch=10
+ck.batch=100000
#clickhouse\u5165\u5E93\u524D\u79EF\u7D2F\u6279\u91CF\u65F6\u95F4\u5355\u4F4D\u6BEB\u79D2
-sink.ck.batch.delay.time=2000
+sink.ck.batch.delay.time=30000
#flink \u65E5\u5FD7\u5EF6\u8FDF\u8D85\u65F6\u65F6\u95F4
-flink.watermark.max.delay.time=50
+flink.watermark.max.delay.time=60
#ck relation\u7EDF\u8BA1\u65F6\u95F4\u95F4\u9694 \u5355\u4F4Ds
-log.aggregate.duration=5
+log.aggregate.duration=30
#arangodb \u7EDF\u8BA1\u65F6\u95F4\u95F4\u9694 \u5355\u4F4Ds
-log.aggregate.duration.graph=5
+log.aggregate.duration.graph=600
#arangoDB\u53C2\u6570\u914D\u7F6E
-arangodb.host=192.168.44.12
+arangodb.host=192.168.44.83
arangodb.port=8529
arangodb.user=root
arangodb.password=galaxy_2019
diff --git a/src/main/java/com/zdjizhi/enums/LogMetadata.java b/src/main/java/com/zdjizhi/enums/LogMetadata.java
index d3a7f49..2949085 100644
--- a/src/main/java/com/zdjizhi/enums/LogMetadata.java
+++ b/src/main/java/com/zdjizhi/enums/LogMetadata.java
@@ -1,6 +1,11 @@
package com.zdjizhi.enums;
import cn.hutool.core.util.EnumUtil;
+import cn.hutool.core.util.StrUtil;
+
+import java.util.Arrays;
+
+import static com.zdjizhi.common.FlowWriteConfig.CK_DATABASE;
/**
* @description: \
@@ -10,23 +15,27 @@ import cn.hutool.core.util.EnumUtil;
public enum LogMetadata {
/*
- * 日志名称topic,表名
+ * 日志名称,表名,字段
* */
- CONNECTION_RECORD_LOG("connection_record_log", "connection_record_log"),
- CONNECTION_SKETCH_RECORD_LOG("connection_sketch_record_log", "connection_sketch_record_log"),
- DNS_RECORD_LOG("dns_record_log", "dns_record_log"),
+ CONNECTION_RECORD_LOG("connection_record_log", "connection_record_log_local", new String[]{"cap_ip", "recv_ip", "src_ip", "dst_ip", "src_port", "dst_port", "addr_type", "protocol", "fxo_id", "link_status", "dir_status", "total_cs_pkts", "total_sc_pkts", "total_cs_bytes", "total_sc_bytes", "log_gen_time", "aa", "wv", "yy", "user_mask", "conn_start_time", "app_class", "app_id", "http_host", "http_url", "http_cookie", "http_user_agent", "http_method", "http_accept", "http_accept_encoding", "http_referer", "http_rescode", "tls_sni", "tls_cert", "phone_num", "imei", "imsi"}),
+ CONNECTION_RELATION_LOG("connection_relation_log", "connection_relation_log_local", new String[]{"start_time", "end_time", "src_ip", "dst_ip", "sessions", "packets", "bytes"}),
+ CONNECTION_SKETCH_RECORD_LOG("connection_sketch_record_log", "connection_sketch_record_log_local", new String[]{"sled_ip", "sketch_start_time", "sketch_duration", "src_ip", "dst_ip", "sketch_sessions", "sketch_packets", "sketch_bytes"}),
+ DNS_RECORD_LOG("dns_record_log", "dns_record_log_local", new String[]{"capture_time", "recv_ip", "src_ip", "dst_ip", "src_port", "dst_port", "addr_type", "dns_flag", "ttl", "protocol", "fxo_id", "req_type", "qname", "response", "dns_a", "dns_a_num", "dns_cname", "dns_cname_num", "dns_aaaa", "dns_aaaa_num", "dns_mx", "dns_mx_num", "dns_ns", "dns_ns_num"}),
+ DNS_RELATION_LOG("dns_relation_log", "dns_relation_log_local", new String[]{"start_time", "end_time", "record_type", "qname", "record", "sessions"}),
;
private String source;
private String sink;
+ private String[] fields;
LogMetadata() {
}
- LogMetadata(String source, String sink) {
+ LogMetadata(String source, String sink, String[] fields) {
this.source = source;
this.sink = sink;
+ this.fields = fields;
}
public String getSource() {
@@ -37,10 +46,31 @@ public enum LogMetadata {
return sink;
}
+ public String[] getFields() {
+ return fields;
+ }
+
public static String getLogSink(String source) {
LogMetadata logMetadata = EnumUtil.fromString(LogMetadata.class, source);
return logMetadata.getSink();
-
}
+ public static String[] getLogFields(String tableName) {
+ LogMetadata[] values = LogMetadata.values();
+ for (LogMetadata value : values) {
+ if (value.sink.equals(tableName)) {
+ return value.fields;
+ }
+ }
+ return null;
+ }
+
+ public static String preparedSql(String tableName) {
+ String[] fields = LogMetadata.getLogFields(tableName);
+ String[] placeholders = new String[fields.length];
+ Arrays.fill(placeholders, "?");
+
+ return StrUtil.concat(true, "INSERT INTO ", CK_DATABASE, ".", tableName,
+ "(", StrUtil.join(",", fields), ") VALUES (", StrUtil.join(",", placeholders), ")");
+ }
}
diff --git a/src/main/java/com/zdjizhi/etl/LogFormat.java b/src/main/java/com/zdjizhi/etl/LogFormat.java
deleted file mode 100644
index c0edaa8..0000000
--- a/src/main/java/com/zdjizhi/etl/LogFormat.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.zdjizhi.etl;
-
-import com.zdjizhi.utils.json.TypeUtils;
-
-import java.util.Map;
-
-public class LogFormat {
-
- public static Map connTime(Map value) {
- value.put("conn_start_time", TypeUtils.coverMSToS(value.get("conn_start_time")));
- return value;
- }
-
-
- public static Map sketchTime(Map value) {
- value.put("sketch_start_time", TypeUtils.coverMSToS(value.get("sketch_start_time")));
- return value;
- }
-}
diff --git a/src/main/java/com/zdjizhi/etl/LogService.java b/src/main/java/com/zdjizhi/etl/LogService.java
new file mode 100644
index 0000000..56989b1
--- /dev/null
+++ b/src/main/java/com/zdjizhi/etl/LogService.java
@@ -0,0 +1,38 @@
+package com.zdjizhi.etl;
+
+import com.zdjizhi.etl.connection.ArangodbBatchIPWindow;
+import com.zdjizhi.utils.arangodb.ArangoDBSink;
+import com.zdjizhi.utils.ck.ClickhouseSink;
+import org.apache.flink.streaming.api.TimeCharacteristic;
+import org.apache.flink.streaming.api.datastream.DataStream;
+import org.apache.flink.streaming.api.windowing.assigners.TumblingProcessingTimeWindows;
+import org.apache.flink.streaming.api.windowing.time.Time;
+
+import java.util.Map;
+
+import static com.zdjizhi.common.FlowWriteConfig.*;
+
+public interface LogService {
+
+ public static void getLogCKSink(DataStream