diff --git a/pom.xml b/pom.xml index 35bc7a9..3467cd7 100644 --- a/pom.xml +++ b/pom.xml @@ -186,6 +186,11 @@ 7.0.0.202409031743-r + + org.springframework.boot + spring-boot-starter-freemarker + + diff --git a/src/main/java/net/geedge/asw/common/config/FreeMarkerConfig.java b/src/main/java/net/geedge/asw/common/config/FreeMarkerConfig.java new file mode 100644 index 0000000..5256d9c --- /dev/null +++ b/src/main/java/net/geedge/asw/common/config/FreeMarkerConfig.java @@ -0,0 +1,33 @@ +package net.geedge.asw.common.config; + +import net.geedge.asw.common.util.T; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean; + +import java.util.Properties; + +@Configuration +public class FreeMarkerConfig { + + @Value("${asw.template.path:static}") + private String templatePath; + + @Bean + public FreeMarkerConfigurationFactoryBean factoryBean() { + FreeMarkerConfigurationFactoryBean freeMarkerConfigurationFactoryBean = new FreeMarkerConfigurationFactoryBean(); + // 设置 FreeMarker 模板位置 + boolean exist = T.FileUtil.exist(templatePath); + templatePath = exist ? templatePath : "classpath:" + templatePath; + freeMarkerConfigurationFactoryBean.setTemplateLoaderPath(templatePath); + + // 其他配置 + Properties settings = new Properties(); + settings.setProperty("default_encoding", "utf-8"); + settings.setProperty("number_format", "0.##"); + + freeMarkerConfigurationFactoryBean.setFreemarkerSettings(settings); + return freeMarkerConfigurationFactoryBean; + } +} \ No newline at end of file diff --git a/src/main/java/net/geedge/asw/common/util/TemplateUtil.java b/src/main/java/net/geedge/asw/common/util/TemplateUtil.java new file mode 100644 index 0000000..5561a7e --- /dev/null +++ b/src/main/java/net/geedge/asw/common/util/TemplateUtil.java @@ -0,0 +1,28 @@ +package net.geedge.asw.common.util; + +import freemarker.cache.StringTemplateLoader; +import freemarker.template.Configuration; +import freemarker.template.Template; + +import java.io.IOException; + +public class TemplateUtil { + + public static Template stringToTemplate(String templateStr,String templateKey) throws IOException { + + // 创建配置类 + Configuration configuration = new Configuration(Configuration.DEFAULT_INCOMPATIBLE_IMPROVEMENTS); + //创建模板加载器 + StringTemplateLoader templateLoader = new StringTemplateLoader(); + // 存入模板 + templateLoader.putTemplate(templateKey, templateStr); //template = 虚拟名称, 用来当作获取静态文件的key + //加载模板加载器 + configuration.setTemplateLoader(templateLoader); + //得到模板 + Template template = configuration.getTemplate(templateKey, "utf-8"); + + return template; + + } + +} diff --git a/src/main/java/net/geedge/asw/module/feign/FeignClientConfiguration.java b/src/main/java/net/geedge/asw/module/feign/FeignClientConfiguration.java index ed51910..513b6c0 100644 --- a/src/main/java/net/geedge/asw/module/feign/FeignClientConfiguration.java +++ b/src/main/java/net/geedge/asw/module/feign/FeignClientConfiguration.java @@ -85,4 +85,15 @@ public class FeignClientConfiguration { .target(PcapCommentClient.class, url); } + @Bean("dashboardClient") + public DashboardClient dashboardClient() { + String url = UrlBuilder.ofHttp(kibanaUrl).toString(); + log.info("[kibanaClient] [url: {}]", url); + return Feign.builder() + .encoder(new FormEncoder()) + .decoder(new Fastjson2Decoder()) + .client(new Http2Client()) + .target(DashboardClient.class, url); + } + } \ No newline at end of file diff --git a/src/main/java/net/geedge/asw/module/feign/client/DashboardClient.java b/src/main/java/net/geedge/asw/module/feign/client/DashboardClient.java new file mode 100644 index 0000000..c7cec4b --- /dev/null +++ b/src/main/java/net/geedge/asw/module/feign/client/DashboardClient.java @@ -0,0 +1,22 @@ +package net.geedge.asw.module.feign.client; + +import com.alibaba.fastjson2.JSONObject; +import feign.Headers; +import feign.Param; +import feign.RequestLine; +import org.springframework.cloud.openfeign.FeignClient; + +import java.io.File; + +@FeignClient(name = "dashboardClient") +@Headers("Authorization: Bearer {token}") +public interface DashboardClient { + + @Headers({ + "Content-Type: multipart/form-data", + "osd-xsrf: true", + "kbn-xsrf: true" + }) + @RequestLine("POST /api/saved_objects/_import?createNewCopies={createNewCopies}") + JSONObject importDashboard(@Param("token") String token, @Param("file") File file, @Param("createNewCopies") boolean createNewCopies); +} diff --git a/src/main/java/net/geedge/asw/module/feign/client/KibanaClient.java b/src/main/java/net/geedge/asw/module/feign/client/KibanaClient.java index 7995f28..7f45522 100644 --- a/src/main/java/net/geedge/asw/module/feign/client/KibanaClient.java +++ b/src/main/java/net/geedge/asw/module/feign/client/KibanaClient.java @@ -10,8 +10,8 @@ import org.springframework.cloud.openfeign.FeignClient; @Headers("Authorization: Bearer {token}") public interface KibanaClient { - @RequestLine("GET /api/saved_objects/_find?fields=title&per_page=10000&type=index-pattern&search_fields=title&search={name}") - JSONObject findIndexPattern(@Param("token") String token, @Param("name") String name); + @RequestLine("GET /api/saved_objects/_find?fields=title&per_page=10000&type={type}&search_fields=title&search={name}") + JSONObject findIndexPattern(@Param("token") String token, @Param("type") String type , @Param("name") String name); @Headers({ "Content-Type: application/json", @@ -20,4 +20,11 @@ public interface KibanaClient { @RequestLine("POST /api/saved_objects/index-pattern/{id}") JSONObject saveIndexPattern(@Param("token") String token, @Param("id") String id, JSONObject body); + @Headers({ + "Content-Type: application/json", + "osd-xsrf: true" + }) + @RequestLine("DELETE /api/saved_objects/index-pattern/{id}?force={force}") + JSONObject deleteIndexPattern(@Param("token") String token, @Param("id") String id , @Param("force") boolean force); + } \ No newline at end of file diff --git a/src/main/java/net/geedge/asw/module/runner/controller/PcapController.java b/src/main/java/net/geedge/asw/module/runner/controller/PcapController.java index 757e90a..b796015 100644 --- a/src/main/java/net/geedge/asw/module/runner/controller/PcapController.java +++ b/src/main/java/net/geedge/asw/module/runner/controller/PcapController.java @@ -193,4 +193,10 @@ public class PcapController { String discoverUrl = pcapService.generateKibanaDiscoverUrl(workspaceId, pcapIds, protocol, streamId); return R.ok().putData("url", discoverUrl); } + + @GetMapping("/dashboard") + public R dashboard(@RequestParam String workspaceId, @RequestParam String pcapIds) { + String dashboardUrl = pcapService.generateKibanaDashboardUrl(workspaceId, pcapIds); + return R.ok().putData("url", dashboardUrl); + } } \ No newline at end of file diff --git a/src/main/java/net/geedge/asw/module/runner/service/IPcapService.java b/src/main/java/net/geedge/asw/module/runner/service/IPcapService.java index c76de40..59f81b9 100644 --- a/src/main/java/net/geedge/asw/module/runner/service/IPcapService.java +++ b/src/main/java/net/geedge/asw/module/runner/service/IPcapService.java @@ -22,4 +22,6 @@ public interface IPcapService extends IService{ void unparse2session(String[] ids); String generateKibanaDiscoverUrl(String workspaceId, String pcapIds, String protocol, String streamId); + + String generateKibanaDashboardUrl(String workspaceId, String pcapIds); } diff --git a/src/main/java/net/geedge/asw/module/runner/service/impl/PcapServiceImpl.java b/src/main/java/net/geedge/asw/module/runner/service/impl/PcapServiceImpl.java index 00a29e3..0445643 100644 --- a/src/main/java/net/geedge/asw/module/runner/service/impl/PcapServiceImpl.java +++ b/src/main/java/net/geedge/asw/module/runner/service/impl/PcapServiceImpl.java @@ -307,7 +307,7 @@ public class PcapServiceImpl extends ServiceImpl implements SaTokenInfo tokenInfo = StpUtil.getTokenInfo(); String token = tokenInfo.getTokenValue(); - JSONObject index = kibanaClient.findIndexPattern(token, indexName); + JSONObject index = kibanaClient.findIndexPattern(token, "index-pattern" ,indexName); JSONArray savedObjects = index.getJSONArray("saved_objects"); // check if index exists @@ -371,6 +371,48 @@ public class PcapServiceImpl extends ServiceImpl implements return kibanaDiscoverUrl; } + @Override + public String generateKibanaDashboardUrl(String workspaceId, String pcapIds) { + + WorkspaceEntity workspace = workspaceService.getById(workspaceId); + T.VerifyUtil.is(workspace).notNull(RCode.SYS_RECORD_NOT_FOUND); + + List pcapIdList = T.StrUtil.split(pcapIds, ",").stream().filter(s -> T.StrUtil.isNotEmpty(s)).collect(Collectors.toList()); + List pcapList = this.list(new LambdaQueryWrapper().in(PcapEntity::getId, pcapIdList)); + T.VerifyUtil.is(pcapList).notEmpty(RCode.SYS_RECORD_NOT_FOUND); + + SaTokenInfo tokenInfo = StpUtil.getTokenInfo(); + String token = tokenInfo.getTokenValue(); + + String dashboardId = T.JSONUtil.parseObj(workspace.getProperties()).getStr("dashboardId"); + String dashboardName = String.format("workspace-%s", workspace.getName()); + + // build url + String baseUrl = UrlBuilder.ofHttp(kibanaUrl) + .addPath(T.StrUtil.concat(true, "/app/dashboards")) + .addQuery("jwt", token) + .toString(); + + String param1 = "_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-15m,to:now))"; + String filter = pcapList.stream() + .map(PcapEntity::getName) + .map(pcapName -> "\"" + pcapName + "\"") + .collect(Collectors.joining(" or ", "pcap.name:(", ")")); + String param2 = String.format("_a=(description:'',filters:!(),fullScreenMode:!f,options:(hidePanelTitles:!f,useMargins:!t),query:(language:kuery,query:'%s'),timeRestore:!f,title:%s,viewMode:view)", filter, dashboardName); + String param3 = T.StrUtil.concat(true, "#/view/", dashboardId); + + // 处理 空格 & + param2 = URLEncodeUtil.encode(param2); + param2 = param2.replaceAll("&", "%26"); + + String query = String.format("%s?%s&%s", param3, param1, param2); + String kibanaDashboardUrl = baseUrl + query; + if (log.isDebugEnabled()) { + log.debug("[generateKibanaDashboardUrl] [url: {}]", kibanaDashboardUrl); + } + return kibanaDashboardUrl; + } + /** * calculate Parse Thread Timeout * diff --git a/src/main/java/net/geedge/asw/module/workspace/entity/WorkspaceEntity.java b/src/main/java/net/geedge/asw/module/workspace/entity/WorkspaceEntity.java index cc09a7e..9d1024f 100644 --- a/src/main/java/net/geedge/asw/module/workspace/entity/WorkspaceEntity.java +++ b/src/main/java/net/geedge/asw/module/workspace/entity/WorkspaceEntity.java @@ -20,6 +20,7 @@ public class WorkspaceEntity { private String tags; private String visibility; private String description; + private String properties; private Long createTimestamp; private Long updateTimestamp; diff --git a/src/main/java/net/geedge/asw/module/workspace/service/impl/WorkspaceServiceImpl.java b/src/main/java/net/geedge/asw/module/workspace/service/impl/WorkspaceServiceImpl.java index eeace9a..00be010 100644 --- a/src/main/java/net/geedge/asw/module/workspace/service/impl/WorkspaceServiceImpl.java +++ b/src/main/java/net/geedge/asw/module/workspace/service/impl/WorkspaceServiceImpl.java @@ -1,6 +1,11 @@ package net.geedge.asw.module.workspace.service.impl; +import cn.dev33.satoken.stp.SaTokenInfo; import cn.dev33.satoken.stp.StpUtil; +import cn.hutool.extra.template.Template; +import cn.hutool.log.Log; +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -8,6 +13,9 @@ import net.geedge.asw.common.util.ASWException; import net.geedge.asw.common.util.Constants; import net.geedge.asw.common.util.RCode; import net.geedge.asw.common.util.T; +import net.geedge.asw.module.feign.client.DashboardClient; +import net.geedge.asw.module.feign.client.KibanaClient; +import net.geedge.asw.module.sys.service.ISysConfigService; import net.geedge.asw.module.workspace.dao.WorkspaceDao; import net.geedge.asw.module.workspace.entity.WorkspaceEntity; import net.geedge.asw.module.workspace.entity.WorkspaceMemberEntity; @@ -17,6 +25,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.io.File; import java.util.Arrays; import java.util.List; import java.util.Map; @@ -24,12 +33,23 @@ import java.util.Map; @Service public class WorkspaceServiceImpl extends ServiceImpl implements IWorkspaceService { + private static final Log log = Log.get(); + @Autowired private IWorkspaceService workspaceService; @Autowired private IWorkspaceMemberService workspaceMemberService; + @jakarta.annotation.Resource + private DashboardClient dashboardClient; + + @jakarta.annotation.Resource + private KibanaClient kibanaClient; + + @Autowired + private ISysConfigService sysConfigService; + @Override public Page queryList(Map params) { Page page = T.PageUtil.getPage(params); diff --git a/src/main/resources/db/mapper/workspace/WorkspaceMapper.xml b/src/main/resources/db/mapper/workspace/WorkspaceMapper.xml index 52b83fb..5efc8a0 100644 --- a/src/main/resources/db/mapper/workspace/WorkspaceMapper.xml +++ b/src/main/resources/db/mapper/workspace/WorkspaceMapper.xml @@ -8,6 +8,7 @@ + diff --git a/src/main/resources/db/migration/R__AZ_sys_config.sql b/src/main/resources/db/migration/R__AZ_sys_config.sql new file mode 100644 index 0000000..ee967e2 --- /dev/null +++ b/src/main/resources/db/migration/R__AZ_sys_config.sql @@ -0,0 +1,7 @@ +TRUNCATE sys_config; +/** + * 重置 sys_config 数据 + */ + +INSERT INTO `sys_config` (`param_key`, `param_value`, `status`, `remark`) VALUES ('opensearch_dashboard_template', '{\"attributes\":{\"fields\":\"[{\\\"count\\\":0,\\\"name\\\":\\\"_id\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"_id\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":false},{\\\"count\\\":0,\\\"name\\\":\\\"_index\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"_index\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":false},{\\\"count\\\":0,\\\"name\\\":\\\"_score\\\",\\\"type\\\":\\\"number\\\",\\\"scripted\\\":false,\\\"searchable\\\":false,\\\"aggregatable\\\":false,\\\"readFromDocValues\\\":false},{\\\"count\\\":0,\\\"name\\\":\\\"_source\\\",\\\"type\\\":\\\"_source\\\",\\\"esTypes\\\":[\\\"_source\\\"],\\\"scripted\\\":false,\\\"searchable\\\":false,\\\"aggregatable\\\":false,\\\"readFromDocValues\\\":false},{\\\"count\\\":0,\\\"name\\\":\\\"_type\\\",\\\"type\\\":\\\"string\\\",\\\"scripted\\\":false,\\\"searchable\\\":false,\\\"aggregatable\\\":false,\\\"readFromDocValues\\\":false},{\\\"count\\\":0,\\\"name\\\":\\\"conn_state\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"keyword\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"dns.AA\\\",\\\"type\\\":\\\"boolean\\\",\\\"esTypes\\\":[\\\"boolean\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"dns.RA\\\",\\\"type\\\":\\\"boolean\\\",\\\"esTypes\\\":[\\\"boolean\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"dns.RD\\\",\\\"type\\\":\\\"boolean\\\",\\\"esTypes\\\":[\\\"boolean\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"dns.TC\\\",\\\"type\\\":\\\"boolean\\\",\\\"esTypes\\\":[\\\"boolean\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"dns.TTLs\\\",\\\"type\\\":\\\"number\\\",\\\"esTypes\\\":[\\\"long\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"dns.Z\\\",\\\"type\\\":\\\"number\\\",\\\"esTypes\\\":[\\\"long\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"dns.answers\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"keyword\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"dns.qclass\\\",\\\"type\\\":\\\"number\\\",\\\"esTypes\\\":[\\\"long\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"dns.qclass_name\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"keyword\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"dns.qtype\\\",\\\"type\\\":\\\"number\\\",\\\"esTypes\\\":[\\\"long\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"dns.qtype_name\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"keyword\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"dns.query\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"keyword\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"dns.rcode\\\",\\\"type\\\":\\\"number\\\",\\\"esTypes\\\":[\\\"long\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"dns.rcode_name\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"keyword\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"dns.rejected\\\",\\\"type\\\":\\\"boolean\\\",\\\"esTypes\\\":[\\\"boolean\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"dns.rtt\\\",\\\"type\\\":\\\"number\\\",\\\"esTypes\\\":[\\\"float\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"dns.trans_id\\\",\\\"type\\\":\\\"number\\\",\\\"esTypes\\\":[\\\"long\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"duration\\\",\\\"type\\\":\\\"number\\\",\\\"esTypes\\\":[\\\"float\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"gquic.cyu\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"text\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":false,\\\"readFromDocValues\\\":false},{\\\"count\\\":0,\\\"name\\\":\\\"gquic.cyu.keyword\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"keyword\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true,\\\"subType\\\":{\\\"multi\\\":{\\\"parent\\\":\\\"gquic.cyu\\\"}}},{\\\"count\\\":0,\\\"name\\\":\\\"gquic.cyutags\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"text\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":false,\\\"readFromDocValues\\\":false},{\\\"count\\\":0,\\\"name\\\":\\\"gquic.cyutags.keyword\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"keyword\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true,\\\"subType\\\":{\\\"multi\\\":{\\\"parent\\\":\\\"gquic.cyutags\\\"}}},{\\\"count\\\":0,\\\"name\\\":\\\"gquic.server_name\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"text\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":false,\\\"readFromDocValues\\\":false},{\\\"count\\\":0,\\\"name\\\":\\\"gquic.server_name.keyword\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"keyword\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true,\\\"subType\\\":{\\\"multi\\\":{\\\"parent\\\":\\\"gquic.server_name\\\"}}},{\\\"count\\\":0,\\\"name\\\":\\\"gquic.tag_count\\\",\\\"type\\\":\\\"number\\\",\\\"esTypes\\\":[\\\"long\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"gquic.version\\\",\\\"type\\\":\\\"number\\\",\\\"esTypes\\\":[\\\"long\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"history\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"keyword\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"http.host\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"text\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":false,\\\"readFromDocValues\\\":false},{\\\"count\\\":0,\\\"name\\\":\\\"http.method\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"keyword\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"http.orig_fuids\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"keyword\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"http.orig_mime_types\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"text\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":false,\\\"readFromDocValues\\\":false},{\\\"count\\\":0,\\\"name\\\":\\\"http.orig_mime_types.keyword\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"keyword\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true,\\\"subType\\\":{\\\"multi\\\":{\\\"parent\\\":\\\"http.orig_mime_types\\\"}}},{\\\"count\\\":0,\\\"name\\\":\\\"http.origin\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"text\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":false,\\\"readFromDocValues\\\":false},{\\\"count\\\":0,\\\"name\\\":\\\"http.origin.keyword\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"keyword\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true,\\\"subType\\\":{\\\"multi\\\":{\\\"parent\\\":\\\"http.origin\\\"}}},{\\\"count\\\":0,\\\"name\\\":\\\"http.proxied\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"text\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":false,\\\"readFromDocValues\\\":false},{\\\"count\\\":0,\\\"name\\\":\\\"http.proxied.keyword\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"keyword\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true,\\\"subType\\\":{\\\"multi\\\":{\\\"parent\\\":\\\"http.proxied\\\"}}},{\\\"count\\\":0,\\\"name\\\":\\\"http.referrer\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"text\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":false,\\\"readFromDocValues\\\":false},{\\\"count\\\":0,\\\"name\\\":\\\"http.referrer.keyword\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"keyword\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true,\\\"subType\\\":{\\\"multi\\\":{\\\"parent\\\":\\\"http.referrer\\\"}}},{\\\"count\\\":0,\\\"name\\\":\\\"http.request_body_len\\\",\\\"type\\\":\\\"number\\\",\\\"esTypes\\\":[\\\"long\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"http.resp_filenames\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"text\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":false,\\\"readFromDocValues\\\":false},{\\\"count\\\":0,\\\"name\\\":\\\"http.resp_filenames.keyword\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"keyword\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true,\\\"subType\\\":{\\\"multi\\\":{\\\"parent\\\":\\\"http.resp_filenames\\\"}}},{\\\"count\\\":0,\\\"name\\\":\\\"http.resp_fuids\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"keyword\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"http.resp_mime_types\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"keyword\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"http.response_body_len\\\",\\\"type\\\":\\\"number\\\",\\\"esTypes\\\":[\\\"long\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"http.status_code\\\",\\\"type\\\":\\\"number\\\",\\\"esTypes\\\":[\\\"long\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"http.status_msg\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"keyword\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"http.trans_depth\\\",\\\"type\\\":\\\"number\\\",\\\"esTypes\\\":[\\\"long\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"http.uri\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"text\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":false,\\\"readFromDocValues\\\":false},{\\\"count\\\":0,\\\"name\\\":\\\"http.user_agent\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"text\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":false,\\\"readFromDocValues\\\":false},{\\\"count\\\":0,\\\"name\\\":\\\"http.version\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"keyword\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":2,\\\"name\\\":\\\"id.orig_h\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"keyword\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":2,\\\"name\\\":\\\"id.orig_p\\\",\\\"type\\\":\\\"number\\\",\\\"esTypes\\\":[\\\"long\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"id.resp_asn\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"keyword\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"id.resp_asname\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"keyword\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"id.resp_country\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"keyword\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"id.resp_domain\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"keyword\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":2,\\\"name\\\":\\\"id.resp_h\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"keyword\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":2,\\\"name\\\":\\\"id.resp_p\\\",\\\"type\\\":\\\"number\\\",\\\"esTypes\\\":[\\\"long\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"local_orig\\\",\\\"type\\\":\\\"boolean\\\",\\\"esTypes\\\":[\\\"boolean\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"local_resp\\\",\\\"type\\\":\\\"boolean\\\",\\\"esTypes\\\":[\\\"boolean\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"missed_bytes\\\",\\\"type\\\":\\\"number\\\",\\\"esTypes\\\":[\\\"long\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":1,\\\"name\\\":\\\"orig_bytes\\\",\\\"type\\\":\\\"number\\\",\\\"esTypes\\\":[\\\"long\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"orig_ip_bytes\\\",\\\"type\\\":\\\"number\\\",\\\"esTypes\\\":[\\\"long\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"orig_pkts\\\",\\\"type\\\":\\\"number\\\",\\\"esTypes\\\":[\\\"long\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"pcap.id\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"keyword\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"pcap.name\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"keyword\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":1,\\\"name\\\":\\\"pcap.stream_url\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"keyword\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"pcap.tcp_stream\\\",\\\"type\\\":\\\"number\\\",\\\"esTypes\\\":[\\\"long\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"pcap.udp_stream\\\",\\\"type\\\":\\\"number\\\",\\\"esTypes\\\":[\\\"long\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"proto\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"keyword\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":2,\\\"name\\\":\\\"resp_bytes\\\",\\\"type\\\":\\\"number\\\",\\\"esTypes\\\":[\\\"long\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"resp_ip_bytes\\\",\\\"type\\\":\\\"number\\\",\\\"esTypes\\\":[\\\"long\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"resp_pkts\\\",\\\"type\\\":\\\"number\\\",\\\"esTypes\\\":[\\\"long\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"service\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"keyword\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"ssl.cert_chain_fps\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"keyword\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"ssl.cipher\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"keyword\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"ssl.curve\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"keyword\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"ssl.established\\\",\\\"type\\\":\\\"boolean\\\",\\\"esTypes\\\":[\\\"boolean\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"ssl.last_alert\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"text\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":false,\\\"readFromDocValues\\\":false},{\\\"count\\\":0,\\\"name\\\":\\\"ssl.last_alert.keyword\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"keyword\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true,\\\"subType\\\":{\\\"multi\\\":{\\\"parent\\\":\\\"ssl.last_alert\\\"}}},{\\\"count\\\":0,\\\"name\\\":\\\"ssl.next_protocol\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"keyword\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"ssl.resumed\\\",\\\"type\\\":\\\"boolean\\\",\\\"esTypes\\\":[\\\"boolean\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":1,\\\"name\\\":\\\"ssl.server_name\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"keyword\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"ssl.sni_matches_cert\\\",\\\"type\\\":\\\"boolean\\\",\\\"esTypes\\\":[\\\"boolean\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"ssl.ssl_history\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"keyword\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"ssl.validation_status\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"keyword\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"ssl.version\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"keyword\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"stream_id\\\",\\\"type\\\":\\\"number\\\",\\\"esTypes\\\":[\\\"long\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":1,\\\"name\\\":\\\"time\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"keyword\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":1,\\\"name\\\":\\\"ts\\\",\\\"type\\\":\\\"number\\\",\\\"esTypes\\\":[\\\"float\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true},{\\\"count\\\":0,\\\"name\\\":\\\"tunnel_parents\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"text\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":false,\\\"readFromDocValues\\\":false},{\\\"count\\\":0,\\\"name\\\":\\\"uid\\\",\\\"type\\\":\\\"string\\\",\\\"esTypes\\\":[\\\"keyword\\\"],\\\"scripted\\\":false,\\\"searchable\\\":true,\\\"aggregatable\\\":true,\\\"readFromDocValues\\\":true}]\",\"title\":\"${indexName}\"},\"id\":\"${indexId}\",\"migrationVersion\":{\"index-pattern\":\"7.6.0\"},\"references\":[],\"type\":\"index-pattern\",\"updated_at\":\"2024-10-23T06:42:09.325Z\",\"version\":\"WzcwNywzMV0=\"}\r\n{\"attributes\":{\"description\":\"\",\"kibanaSavedObjectMeta\":{\"searchSourceJSON\":\"{\\\"query\\\":{\\\"language\\\":\\\"lucene\\\",\\\"query\\\":\\\"\\\"},\\\"filter\\\":[]}\"},\"title\":\"Source Control\",\"uiStateJSON\":\"{}\",\"version\":1,\"visState\":\"{\\\"aggs\\\":[],\\\"params\\\":{\\\"controls\\\":[{\\\"fieldName\\\":\\\"pcap.name\\\",\\\"id\\\":\\\"1722930757960\\\",\\\"label\\\":\\\"Source\\\",\\\"options\\\":{\\\"dynamicOptions\\\":false,\\\"multiselect\\\":true,\\\"order\\\":\\\"desc\\\",\\\"size\\\":100,\\\"type\\\":\\\"terms\\\"},\\\"parent\\\":\\\"\\\",\\\"type\\\":\\\"list\\\",\\\"indexPatternRefName\\\":\\\"control_0_index_pattern\\\"},{\\\"fieldName\\\":\\\"proto\\\",\\\"id\\\":\\\"1722930981375\\\",\\\"label\\\":\\\"Protocol\\\",\\\"options\\\":{\\\"dynamicOptions\\\":false,\\\"multiselect\\\":true,\\\"order\\\":\\\"desc\\\",\\\"size\\\":5,\\\"type\\\":\\\"terms\\\"},\\\"parent\\\":\\\"\\\",\\\"type\\\":\\\"list\\\",\\\"indexPatternRefName\\\":\\\"control_1_index_pattern\\\"},{\\\"fieldName\\\":\\\"service\\\",\\\"id\\\":\\\"1722931054320\\\",\\\"label\\\":\\\"Service\\\",\\\"options\\\":{\\\"dynamicOptions\\\":false,\\\"multiselect\\\":true,\\\"order\\\":\\\"desc\\\",\\\"size\\\":5,\\\"type\\\":\\\"terms\\\"},\\\"parent\\\":\\\"\\\",\\\"type\\\":\\\"list\\\",\\\"indexPatternRefName\\\":\\\"control_2_index_pattern\\\"}],\\\"pinFilters\\\":false,\\\"updateFiltersOnChange\\\":false,\\\"useTimeFilter\\\":false},\\\"title\\\":\\\"Source Control\\\",\\\"type\\\":\\\"input_control_vis\\\"}\"},\"id\":\"fe0575b0-53c8-11ef-8525-67c9010eca05\",\"migrationVersion\":{\"visualization\":\"7.10.0\"},\"references\":[{\"id\":\"${indexId}\",\"name\":\"control_0_index_pattern\",\"type\":\"index-pattern\"},{\"id\":\"${indexId}\",\"name\":\"control_1_index_pattern\",\"type\":\"index-pattern\"},{\"id\":\"${indexId}\",\"name\":\"control_2_index_pattern\",\"type\":\"index-pattern\"}],\"type\":\"visualization\",\"updated_at\":\"2024-09-02T06:30:43.986Z\",\"version\":\"WzQ3OSwzMV0=\"}\r\n{\"attributes\":{\"description\":\"\",\"kibanaSavedObjectMeta\":{\"searchSourceJSON\":\"{\\\"query\\\":{\\\"query\\\":\\\"\\\",\\\"language\\\":\\\"lucene\\\"},\\\"filter\\\":[],\\\"indexRefName\\\":\\\"kibanaSavedObjectMeta.searchSourceJSON.index\\\"}\"},\"title\":\"Sum by tetrad\",\"uiStateJSON\":\"{}\",\"version\":1,\"visState\":\"{\\\"title\\\":\\\"Sum by tetrad\\\",\\\"type\\\":\\\"table\\\",\\\"aggs\\\":[{\\\"id\\\":\\\"1\\\",\\\"enabled\\\":true,\\\"type\\\":\\\"sum\\\",\\\"params\\\":{\\\"field\\\":\\\"orig_bytes\\\"},\\\"schema\\\":\\\"metric\\\"},{\\\"id\\\":\\\"2\\\",\\\"enabled\\\":true,\\\"type\\\":\\\"sum\\\",\\\"params\\\":{\\\"field\\\":\\\"resp_bytes\\\"},\\\"schema\\\":\\\"metric\\\"},{\\\"id\\\":\\\"3\\\",\\\"enabled\\\":true,\\\"type\\\":\\\"terms\\\",\\\"params\\\":{\\\"field\\\":\\\"id.orig_h\\\",\\\"orderBy\\\":\\\"1\\\",\\\"order\\\":\\\"desc\\\",\\\"size\\\":1000,\\\"otherBucket\\\":false,\\\"otherBucketLabel\\\":\\\"Other\\\",\\\"missingBucket\\\":false,\\\"missingBucketLabel\\\":\\\"Missing\\\"},\\\"schema\\\":\\\"bucket\\\"},{\\\"id\\\":\\\"4\\\",\\\"enabled\\\":true,\\\"type\\\":\\\"terms\\\",\\\"params\\\":{\\\"field\\\":\\\"id.orig_p\\\",\\\"orderBy\\\":\\\"1\\\",\\\"order\\\":\\\"desc\\\",\\\"size\\\":1000,\\\"otherBucket\\\":false,\\\"otherBucketLabel\\\":\\\"Other\\\",\\\"missingBucket\\\":false,\\\"missingBucketLabel\\\":\\\"Missing\\\"},\\\"schema\\\":\\\"bucket\\\"},{\\\"id\\\":\\\"5\\\",\\\"enabled\\\":true,\\\"type\\\":\\\"terms\\\",\\\"params\\\":{\\\"field\\\":\\\"id.resp_h\\\",\\\"orderBy\\\":\\\"1\\\",\\\"order\\\":\\\"desc\\\",\\\"size\\\":1000,\\\"otherBucket\\\":false,\\\"otherBucketLabel\\\":\\\"Other\\\",\\\"missingBucket\\\":false,\\\"missingBucketLabel\\\":\\\"Missing\\\"},\\\"schema\\\":\\\"bucket\\\"},{\\\"id\\\":\\\"6\\\",\\\"enabled\\\":true,\\\"type\\\":\\\"terms\\\",\\\"params\\\":{\\\"field\\\":\\\"id.resp_p\\\",\\\"orderBy\\\":\\\"1\\\",\\\"order\\\":\\\"desc\\\",\\\"size\\\":1000,\\\"otherBucket\\\":false,\\\"otherBucketLabel\\\":\\\"Other\\\",\\\"missingBucket\\\":false,\\\"missingBucketLabel\\\":\\\"Missing\\\"},\\\"schema\\\":\\\"bucket\\\"},{\\\"id\\\":\\\"7\\\",\\\"enabled\\\":true,\\\"type\\\":\\\"terms\\\",\\\"params\\\":{\\\"field\\\":\\\"id.resp_country\\\",\\\"orderBy\\\":\\\"1\\\",\\\"order\\\":\\\"desc\\\",\\\"size\\\":1000,\\\"otherBucket\\\":false,\\\"otherBucketLabel\\\":\\\"Other\\\",\\\"missingBucket\\\":false,\\\"missingBucketLabel\\\":\\\"Missing\\\"},\\\"schema\\\":\\\"bucket\\\"},{\\\"id\\\":\\\"8\\\",\\\"enabled\\\":true,\\\"type\\\":\\\"terms\\\",\\\"params\\\":{\\\"field\\\":\\\"id.resp_domain\\\",\\\"orderBy\\\":\\\"1\\\",\\\"order\\\":\\\"desc\\\",\\\"size\\\":1000,\\\"otherBucket\\\":false,\\\"otherBucketLabel\\\":\\\"Other\\\",\\\"missingBucket\\\":false,\\\"missingBucketLabel\\\":\\\"Missing\\\"},\\\"schema\\\":\\\"bucket\\\"},{\\\"id\\\":\\\"9\\\",\\\"enabled\\\":true,\\\"type\\\":\\\"terms\\\",\\\"params\\\":{\\\"field\\\":\\\"id.resp_asname\\\",\\\"orderBy\\\":\\\"1\\\",\\\"order\\\":\\\"desc\\\",\\\"size\\\":1000,\\\"otherBucket\\\":false,\\\"otherBucketLabel\\\":\\\"Other\\\",\\\"missingBucket\\\":false,\\\"missingBucketLabel\\\":\\\"Missing\\\"},\\\"schema\\\":\\\"bucket\\\"},{\\\"id\\\":\\\"10\\\",\\\"enabled\\\":true,\\\"type\\\":\\\"terms\\\",\\\"params\\\":{\\\"field\\\":\\\"proto\\\",\\\"orderBy\\\":\\\"1\\\",\\\"order\\\":\\\"desc\\\",\\\"size\\\":1000,\\\"otherBucket\\\":false,\\\"otherBucketLabel\\\":\\\"Other\\\",\\\"missingBucket\\\":false,\\\"missingBucketLabel\\\":\\\"Missing\\\"},\\\"schema\\\":\\\"bucket\\\"}],\\\"params\\\":{\\\"perPage\\\":50,\\\"showPartialRows\\\":true,\\\"showMetricsAtAllLevels\\\":false,\\\"showTotal\\\":false,\\\"totalFunc\\\":\\\"sum\\\",\\\"percentageCol\\\":\\\"\\\"}}\"},\"id\":\"fed5b7b0-68f5-11ef-b6aa-658d02e10b82\",\"migrationVersion\":{\"visualization\":\"7.10.0\"},\"references\":[{\"id\":\"${indexId}\",\"name\":\"kibanaSavedObjectMeta.searchSourceJSON.index\",\"type\":\"index-pattern\"}],\"type\":\"visualization\",\"updated_at\":\"2024-10-21T10:19:01.412Z\",\"version\":\"WzU3MSwzMV0=\"}\r\n{\"attributes\":{\"description\":\"\",\"kibanaSavedObjectMeta\":{\"searchSourceJSON\":\"{\\\"query\\\":{\\\"query\\\":\\\"\\\",\\\"language\\\":\\\"lucene\\\"},\\\"filter\\\":[],\\\"indexRefName\\\":\\\"kibanaSavedObjectMeta.searchSourceJSON.index\\\"}\"},\"title\":\"SSL statistics\",\"uiStateJSON\":\"{}\",\"version\":1,\"visState\":\"{\\\"title\\\":\\\"SSL statistics\\\",\\\"type\\\":\\\"table\\\",\\\"aggs\\\":[{\\\"id\\\":\\\"1\\\",\\\"enabled\\\":true,\\\"type\\\":\\\"count\\\",\\\"params\\\":{},\\\"schema\\\":\\\"metric\\\"},{\\\"id\\\":\\\"2\\\",\\\"enabled\\\":true,\\\"type\\\":\\\"terms\\\",\\\"params\\\":{\\\"field\\\":\\\"ssl.server_name\\\",\\\"orderBy\\\":\\\"1\\\",\\\"order\\\":\\\"desc\\\",\\\"size\\\":1000,\\\"otherBucket\\\":false,\\\"otherBucketLabel\\\":\\\"Other\\\",\\\"missingBucket\\\":false,\\\"missingBucketLabel\\\":\\\"Missing\\\",\\\"customLabel\\\":\\\"SSL server name\\\"},\\\"schema\\\":\\\"bucket\\\"}],\\\"params\\\":{\\\"perPage\\\":10,\\\"showPartialRows\\\":false,\\\"showMetricsAtAllLevels\\\":false,\\\"showTotal\\\":false,\\\"totalFunc\\\":\\\"sum\\\",\\\"percentageCol\\\":\\\"\\\"}}\"},\"id\":\"38734390-7a38-11ef-b6aa-658d02e10b82\",\"migrationVersion\":{\"visualization\":\"7.10.0\"},\"references\":[{\"id\":\"${indexId}\",\"name\":\"kibanaSavedObjectMeta.searchSourceJSON.index\",\"type\":\"index-pattern\"}],\"type\":\"visualization\",\"updated_at\":\"2024-09-24T05:45:35.561Z\",\"version\":\"WzU2MSwzMV0=\"}\r\n{\"attributes\":{\"description\":\"\",\"kibanaSavedObjectMeta\":{\"searchSourceJSON\":\"{\\\"query\\\":{\\\"query\\\":\\\"\\\",\\\"language\\\":\\\"lucene\\\"},\\\"filter\\\":[],\\\"indexRefName\\\":\\\"kibanaSavedObjectMeta.searchSourceJSON.index\\\"}\"},\"title\":\"DNS IP mapping\",\"uiStateJSON\":\"{}\",\"version\":1,\"visState\":\"{\\\"title\\\":\\\"DNS IP mapping\\\",\\\"type\\\":\\\"table\\\",\\\"aggs\\\":[{\\\"id\\\":\\\"1\\\",\\\"enabled\\\":true,\\\"type\\\":\\\"count\\\",\\\"params\\\":{},\\\"schema\\\":\\\"metric\\\"},{\\\"id\\\":\\\"2\\\",\\\"enabled\\\":true,\\\"type\\\":\\\"terms\\\",\\\"params\\\":{\\\"field\\\":\\\"dns.query\\\",\\\"orderBy\\\":\\\"1\\\",\\\"order\\\":\\\"desc\\\",\\\"size\\\":100,\\\"otherBucket\\\":false,\\\"otherBucketLabel\\\":\\\"Other\\\",\\\"missingBucket\\\":false,\\\"missingBucketLabel\\\":\\\"Missing\\\",\\\"customLabel\\\":\\\"Query\\\"},\\\"schema\\\":\\\"bucket\\\"},{\\\"id\\\":\\\"3\\\",\\\"enabled\\\":true,\\\"type\\\":\\\"terms\\\",\\\"params\\\":{\\\"field\\\":\\\"dns.answers\\\",\\\"orderBy\\\":\\\"1\\\",\\\"order\\\":\\\"desc\\\",\\\"size\\\":5,\\\"otherBucket\\\":false,\\\"otherBucketLabel\\\":\\\"Other\\\",\\\"missingBucket\\\":false,\\\"missingBucketLabel\\\":\\\"Missing\\\"},\\\"schema\\\":\\\"bucket\\\"}],\\\"params\\\":{\\\"perPage\\\":10,\\\"showPartialRows\\\":false,\\\"showMetricsAtAllLevels\\\":false,\\\"showTotal\\\":false,\\\"totalFunc\\\":\\\"sum\\\",\\\"percentageCol\\\":\\\"\\\"}}\"},\"id\":\"97ec0780-7a38-11ef-b6aa-658d02e10b82\",\"migrationVersion\":{\"visualization\":\"7.10.0\"},\"references\":[{\"id\":\"${indexId}\",\"name\":\"kibanaSavedObjectMeta.searchSourceJSON.index\",\"type\":\"index-pattern\"}],\"type\":\"visualization\",\"updated_at\":\"2024-09-24T05:48:15.736Z\",\"version\":\"WzU2MiwzMV0=\"}\r\n{\"attributes\":{\"description\":\"\",\"kibanaSavedObjectMeta\":{\"searchSourceJSON\":\"{\\\"query\\\":{\\\"query\\\":\\\"\\\",\\\"language\\\":\\\"lucene\\\"},\\\"filter\\\":[],\\\"indexRefName\\\":\\\"kibanaSavedObjectMeta.searchSourceJSON.index\\\"}\"},\"title\":\"HTTP statistics (default)\",\"uiStateJSON\":\"{}\",\"version\":1,\"visState\":\"{\\\"title\\\":\\\"HTTP statistics (default)\\\",\\\"type\\\":\\\"table\\\",\\\"aggs\\\":[{\\\"id\\\":\\\"1\\\",\\\"enabled\\\":true,\\\"type\\\":\\\"count\\\",\\\"params\\\":{},\\\"schema\\\":\\\"metric\\\"},{\\\"id\\\":\\\"2\\\",\\\"enabled\\\":true,\\\"type\\\":\\\"terms\\\",\\\"params\\\":{\\\"field\\\":\\\"http.method\\\",\\\"orderBy\\\":\\\"1\\\",\\\"order\\\":\\\"desc\\\",\\\"size\\\":100,\\\"otherBucket\\\":false,\\\"otherBucketLabel\\\":\\\"Other\\\",\\\"missingBucket\\\":false,\\\"missingBucketLabel\\\":\\\"Missing\\\",\\\"customLabel\\\":\\\"HTTP method\\\"},\\\"schema\\\":\\\"bucket\\\"},{\\\"id\\\":\\\"3\\\",\\\"enabled\\\":true,\\\"type\\\":\\\"terms\\\",\\\"params\\\":{\\\"field\\\":\\\"http.version\\\",\\\"orderBy\\\":\\\"1\\\",\\\"order\\\":\\\"desc\\\",\\\"size\\\":100,\\\"otherBucket\\\":false,\\\"otherBucketLabel\\\":\\\"Other\\\",\\\"missingBucket\\\":false,\\\"missingBucketLabel\\\":\\\"Missing\\\",\\\"customLabel\\\":\\\"HTTP version\\\"},\\\"schema\\\":\\\"bucket\\\"}],\\\"params\\\":{\\\"perPage\\\":10,\\\"showPartialRows\\\":false,\\\"showMetricsAtAllLevels\\\":false,\\\"showTotal\\\":false,\\\"totalFunc\\\":\\\"sum\\\",\\\"percentageCol\\\":\\\"\\\"}}\"},\"id\":\"9ea46aa0-7a37-11ef-b6aa-658d02e10b82\",\"migrationVersion\":{\"visualization\":\"7.10.0\"},\"references\":[{\"id\":\"${indexId}\",\"name\":\"kibanaSavedObjectMeta.searchSourceJSON.index\",\"type\":\"index-pattern\"}],\"type\":\"visualization\",\"updated_at\":\"2024-09-24T05:41:17.514Z\",\"version\":\"WzUzOCwzMV0=\"}\r\n{\"attributes\":{\"description\":\"\",\"kibanaSavedObjectMeta\":{\"searchSourceJSON\":\"{\\\"query\\\":{\\\"query\\\":\\\"\\\",\\\"language\\\":\\\"lucene\\\"},\\\"filter\\\":[],\\\"indexRefName\\\":\\\"kibanaSavedObjectMeta.searchSourceJSON.index\\\"}\"},\"title\":\"ServerIP unique count by pcap file\",\"uiStateJSON\":\"{}\",\"version\":1,\"visState\":\"{\\\"title\\\":\\\"ServerIP unique count by pcap file\\\",\\\"type\\\":\\\"table\\\",\\\"aggs\\\":[{\\\"id\\\":\\\"1\\\",\\\"enabled\\\":true,\\\"type\\\":\\\"cardinality\\\",\\\"params\\\":{\\\"field\\\":\\\"pcap.id\\\",\\\"customLabel\\\":\\\"Occurrences in Pcap Files\\\"},\\\"schema\\\":\\\"metric\\\"},{\\\"id\\\":\\\"2\\\",\\\"enabled\\\":true,\\\"type\\\":\\\"terms\\\",\\\"params\\\":{\\\"field\\\":\\\"id.resp_h\\\",\\\"orderBy\\\":\\\"1\\\",\\\"order\\\":\\\"desc\\\",\\\"size\\\":100,\\\"otherBucket\\\":false,\\\"otherBucketLabel\\\":\\\"Other\\\",\\\"missingBucket\\\":false,\\\"missingBucketLabel\\\":\\\"Missing\\\",\\\"customLabel\\\":\\\"Server IP\\\"},\\\"schema\\\":\\\"bucket\\\"}],\\\"params\\\":{\\\"perPage\\\":10,\\\"showPartialRows\\\":false,\\\"showMetricsAtAllLevels\\\":false,\\\"showTotal\\\":false,\\\"totalFunc\\\":\\\"sum\\\",\\\"percentageCol\\\":\\\"\\\"}}\"},\"id\":\"21ab8c70-7a39-11ef-b6aa-658d02e10b82\",\"migrationVersion\":{\"visualization\":\"7.10.0\"},\"references\":[{\"id\":\"${indexId}\",\"name\":\"kibanaSavedObjectMeta.searchSourceJSON.index\",\"type\":\"index-pattern\"}],\"type\":\"visualization\",\"updated_at\":\"2024-10-21T09:33:53.901Z\",\"version\":\"WzU2OCwzMV0=\"}\r\n{\"attributes\":{\"description\":\"\",\"kibanaSavedObjectMeta\":{\"searchSourceJSON\":\"{\\\"query\\\":{\\\"query\\\":\\\"\\\",\\\"language\\\":\\\"lucene\\\"},\\\"filter\\\":[],\\\"indexRefName\\\":\\\"kibanaSavedObjectMeta.searchSourceJSON.index\\\"}\"},\"title\":\"Protocol statistics\",\"uiStateJSON\":\"{}\",\"version\":1,\"visState\":\"{\\\"title\\\":\\\"Protocol statistics\\\",\\\"type\\\":\\\"table\\\",\\\"aggs\\\":[{\\\"id\\\":\\\"1\\\",\\\"enabled\\\":true,\\\"type\\\":\\\"count\\\",\\\"params\\\":{\\\"customLabel\\\":\\\"Combinations\\\"},\\\"schema\\\":\\\"metric\\\"},{\\\"id\\\":\\\"2\\\",\\\"enabled\\\":true,\\\"type\\\":\\\"terms\\\",\\\"params\\\":{\\\"field\\\":\\\"proto\\\",\\\"orderBy\\\":\\\"1\\\",\\\"order\\\":\\\"desc\\\",\\\"size\\\":100,\\\"otherBucket\\\":false,\\\"otherBucketLabel\\\":\\\"Other\\\",\\\"missingBucket\\\":false,\\\"missingBucketLabel\\\":\\\"Missing\\\",\\\"customLabel\\\":\\\"Protocol\\\"},\\\"schema\\\":\\\"bucket\\\"},{\\\"id\\\":\\\"3\\\",\\\"enabled\\\":true,\\\"type\\\":\\\"terms\\\",\\\"params\\\":{\\\"field\\\":\\\"service\\\",\\\"orderBy\\\":\\\"1\\\",\\\"order\\\":\\\"desc\\\",\\\"size\\\":100,\\\"otherBucket\\\":false,\\\"otherBucketLabel\\\":\\\"Other\\\",\\\"missingBucket\\\":false,\\\"missingBucketLabel\\\":\\\"Missing\\\",\\\"customLabel\\\":\\\"Service\\\"},\\\"schema\\\":\\\"bucket\\\"}],\\\"params\\\":{\\\"perPage\\\":10,\\\"showPartialRows\\\":false,\\\"showMetricsAtAllLevels\\\":false,\\\"showTotal\\\":false,\\\"totalFunc\\\":\\\"sum\\\",\\\"percentageCol\\\":\\\"\\\"}}\"},\"id\":\"69df2150-7a39-11ef-b6aa-658d02e10b82\",\"migrationVersion\":{\"visualization\":\"7.10.0\"},\"references\":[{\"id\":\"${indexId}\",\"name\":\"kibanaSavedObjectMeta.searchSourceJSON.index\",\"type\":\"index-pattern\"}],\"type\":\"visualization\",\"updated_at\":\"2024-10-21T09:30:26.568Z\",\"version\":\"WzU2NiwzMV0=\"}\r\n{\"attributes\":{\"description\":\"\",\"hits\":0,\"kibanaSavedObjectMeta\":{\"searchSourceJSON\":\"{\\\"query\\\":{\\\"language\\\":\\\"kuery\\\",\\\"query\\\":\\\"\\\"},\\\"filter\\\":[]}\"},\"optionsJSON\":\"{\\\"hidePanelTitles\\\":false,\\\"useMargins\\\":true}\",\"panelsJSON\":\"[{\\\"version\\\":\\\"2.15.0\\\",\\\"gridData\\\":{\\\"h\\\":21,\\\"i\\\":\\\"f0f5835e-dc49-401c-8a87-33e5be93d744\\\",\\\"w\\\":10,\\\"x\\\":0,\\\"y\\\":0},\\\"panelIndex\\\":\\\"f0f5835e-dc49-401c-8a87-33e5be93d744\\\",\\\"embeddableConfig\\\":{\\\"hidePanelTitles\\\":true},\\\"panelRefName\\\":\\\"panel_0\\\"},{\\\"version\\\":\\\"2.15.0\\\",\\\"gridData\\\":{\\\"h\\\":21,\\\"i\\\":\\\"d6fe115f-8a48-483d-9408-9b39bdde3262\\\",\\\"w\\\":38,\\\"x\\\":10,\\\"y\\\":0},\\\"panelIndex\\\":\\\"d6fe115f-8a48-483d-9408-9b39bdde3262\\\",\\\"embeddableConfig\\\":{\\\"hidePanelTitles\\\":false},\\\"title\\\":\\\"Sessions\\\",\\\"panelRefName\\\":\\\"panel_1\\\"},{\\\"version\\\":\\\"2.15.0\\\",\\\"gridData\\\":{\\\"h\\\":15,\\\"i\\\":\\\"2911e8d3-ccbd-432d-898f-cbb74ed658e1\\\",\\\"w\\\":24,\\\"x\\\":0,\\\"y\\\":21},\\\"panelIndex\\\":\\\"2911e8d3-ccbd-432d-898f-cbb74ed658e1\\\",\\\"embeddableConfig\\\":{},\\\"panelRefName\\\":\\\"panel_2\\\"},{\\\"version\\\":\\\"2.15.0\\\",\\\"gridData\\\":{\\\"h\\\":15,\\\"i\\\":\\\"1a589685-72c1-43c6-b2f1-8f3994107cef\\\",\\\"w\\\":24,\\\"x\\\":24,\\\"y\\\":21},\\\"panelIndex\\\":\\\"1a589685-72c1-43c6-b2f1-8f3994107cef\\\",\\\"embeddableConfig\\\":{},\\\"panelRefName\\\":\\\"panel_3\\\"},{\\\"version\\\":\\\"2.15.0\\\",\\\"gridData\\\":{\\\"h\\\":15,\\\"i\\\":\\\"f9b8678f-4e3e-4f20-934e-a6c9ab0b01bb\\\",\\\"w\\\":24,\\\"x\\\":0,\\\"y\\\":51},\\\"panelIndex\\\":\\\"f9b8678f-4e3e-4f20-934e-a6c9ab0b01bb\\\",\\\"embeddableConfig\\\":{\\\"hidePanelTitles\\\":false},\\\"title\\\":\\\"HTTP statistics\\\",\\\"panelRefName\\\":\\\"panel_4\\\"},{\\\"version\\\":\\\"2.15.0\\\",\\\"gridData\\\":{\\\"h\\\":15,\\\"i\\\":\\\"faa0cf21-7bfa-4f84-95b5-cb88cd487c17\\\",\\\"w\\\":24,\\\"x\\\":0,\\\"y\\\":36},\\\"panelIndex\\\":\\\"faa0cf21-7bfa-4f84-95b5-cb88cd487c17\\\",\\\"embeddableConfig\\\":{\\\"hidePanelTitles\\\":false},\\\"title\\\":\\\"Server IP Occurrences\\\",\\\"panelRefName\\\":\\\"panel_5\\\"},{\\\"version\\\":\\\"2.15.0\\\",\\\"gridData\\\":{\\\"h\\\":15,\\\"i\\\":\\\"67f3820e-d365-4d8a-9ce7-670e6a675f40\\\",\\\"w\\\":24,\\\"x\\\":24,\\\"y\\\":36},\\\"panelIndex\\\":\\\"67f3820e-d365-4d8a-9ce7-670e6a675f40\\\",\\\"embeddableConfig\\\":{},\\\"panelRefName\\\":\\\"panel_6\\\"}]\",\"timeRestore\":false,\"title\":\"${dashboardName}\",\"version\":1},\"id\":\"3b18e260-52cb-11ef-8525-67c9010eca05\",\"migrationVersion\":{\"dashboard\":\"7.9.3\"},\"references\":[{\"id\":\"fe0575b0-53c8-11ef-8525-67c9010eca05\",\"name\":\"panel_0\",\"type\":\"visualization\"},{\"id\":\"fed5b7b0-68f5-11ef-b6aa-658d02e10b82\",\"name\":\"panel_1\",\"type\":\"visualization\"},{\"id\":\"38734390-7a38-11ef-b6aa-658d02e10b82\",\"name\":\"panel_2\",\"type\":\"visualization\"},{\"id\":\"97ec0780-7a38-11ef-b6aa-658d02e10b82\",\"name\":\"panel_3\",\"type\":\"visualization\"},{\"id\":\"9ea46aa0-7a37-11ef-b6aa-658d02e10b82\",\"name\":\"panel_4\",\"type\":\"visualization\"},{\"id\":\"21ab8c70-7a39-11ef-b6aa-658d02e10b82\",\"name\":\"panel_5\",\"type\":\"visualization\"},{\"id\":\"69df2150-7a39-11ef-b6aa-658d02e10b82\",\"name\":\"panel_6\",\"type\":\"visualization\"}],\"type\":\"dashboard\",\"updated_at\":\"2024-10-23T07:42:24.041Z\",\"version\":\"WzcxMywzMV0=\"}\r\n{\"exportedCount\":9,\"missingRefCount\":0,\"missingReferences\":[]}', 1, '仪表盘配置模板'); +INSERT INTO `sys_config` (`param_key`, `param_value`, `status`, `remark`) VALUES ('timezone', 'Asia/Shanghai', 1, '时区配置'); diff --git a/src/main/resources/db/migration/V1.0.01__INIT_TABLES.sql b/src/main/resources/db/migration/V1.0.01__INIT_TABLES.sql index a926916..2af5db9 100644 --- a/src/main/resources/db/migration/V1.0.01__INIT_TABLES.sql +++ b/src/main/resources/db/migration/V1.0.01__INIT_TABLES.sql @@ -448,6 +448,7 @@ CREATE TABLE `workspace` ( `name` varchar(256) NOT NULL DEFAULT '' COMMENT '名称', `tags` varchar(256) NOT NULL DEFAULT '' COMMENT '标签,多个逗号分隔', `visibility` varchar(16) NOT NULL DEFAULT 'private' COMMENT '可见程度,可选值:private,public 默认:private', + `properties` varchar(256) NOT NULL DEFAULT '' COMMENT '属性', `description` text NOT NULL DEFAULT '' COMMENT '描述信息', `create_timestamp` bigint(20) NOT NULL COMMENT '创建时间戳', `update_timestamp` bigint(20) NOT NULL COMMENT '更新时间戳',