From ec1e7a2c2838625a108fa33a2fccfe8299f126e8 Mon Sep 17 00:00:00 2001 From: "kelvin.guo" Date: Mon, 19 Jul 2021 10:42:15 +0800 Subject: [PATCH] * debug thread model (timer) --- .../chaosblade/box/collector/model/Query.java | 4 ++++ .../collector/kubeapi/KubeApiContainerCollector.java | 8 +++++++- .../box/collector/kubeapi/KubeApiPodCollector.java | 2 +- .../box/service/collect/CollectorTimer.java | 12 +++++++++++- .../src/main/resources/application.yml | 3 +++ 5 files changed, 26 insertions(+), 3 deletions(-) diff --git a/chaosblade-box-collector/chaosblade-box-collector-api/src/main/java/com/alibaba/chaosblade/box/collector/model/Query.java b/chaosblade-box-collector/chaosblade-box-collector-api/src/main/java/com/alibaba/chaosblade/box/collector/model/Query.java index f571ec08..0556dbf5 100644 --- a/chaosblade-box-collector/chaosblade-box-collector-api/src/main/java/com/alibaba/chaosblade/box/collector/model/Query.java +++ b/chaosblade-box-collector/chaosblade-box-collector-api/src/main/java/com/alibaba/chaosblade/box/collector/model/Query.java @@ -30,6 +30,10 @@ public class Query { private String podName; + private String fieldSelector; + + private String labelSelector; + private Long clusterId; private String config; diff --git a/chaosblade-box-collector/chaosblade-box-collector-kubeapi/src/main/java/com/alibaba/chaosblade/box/collector/kubeapi/KubeApiContainerCollector.java b/chaosblade-box-collector/chaosblade-box-collector-kubeapi/src/main/java/com/alibaba/chaosblade/box/collector/kubeapi/KubeApiContainerCollector.java index 2c2c856d..a8424482 100644 --- a/chaosblade-box-collector/chaosblade-box-collector-kubeapi/src/main/java/com/alibaba/chaosblade/box/collector/kubeapi/KubeApiContainerCollector.java +++ b/chaosblade-box-collector/chaosblade-box-collector-kubeapi/src/main/java/com/alibaba/chaosblade/box/collector/kubeapi/KubeApiContainerCollector.java @@ -55,6 +55,11 @@ public void afterPropertiesSet() throws Exception { @Override public CompletableFuture> collect(Query query) { + String fieldSelector = StrUtil.isBlank(query.getFieldSelector()) ? + String.format("metadata.name=%s", query.getPodName()) : + String.format("metadata.name=%s,%s", query.getPodName(), query.getFieldSelector()); + String labelSelector = query.getLabelSelector(); + CompletableFuture> future = new CompletableFuture<>(); CoreV1Api api; try { @@ -64,7 +69,8 @@ public CompletableFuture> collect(Query query) { ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(query.getConfig().getBytes()); api = new CoreV1Api(Config.fromConfig(byteArrayInputStream)); } - api.listPodForAllNamespacesAsync(null, null, String.format("metadata.name=%s", query.getPodName()), null, + + api.listPodForAllNamespacesAsync(null, null, fieldSelector, labelSelector, null, null, null, null, null, new ApiCallback() { @Override diff --git a/chaosblade-box-collector/chaosblade-box-collector-kubeapi/src/main/java/com/alibaba/chaosblade/box/collector/kubeapi/KubeApiPodCollector.java b/chaosblade-box-collector/chaosblade-box-collector-kubeapi/src/main/java/com/alibaba/chaosblade/box/collector/kubeapi/KubeApiPodCollector.java index dcc8b200..d8a0ab2e 100644 --- a/chaosblade-box-collector/chaosblade-box-collector-kubeapi/src/main/java/com/alibaba/chaosblade/box/collector/kubeapi/KubeApiPodCollector.java +++ b/chaosblade-box-collector/chaosblade-box-collector-kubeapi/src/main/java/com/alibaba/chaosblade/box/collector/kubeapi/KubeApiPodCollector.java @@ -63,7 +63,7 @@ public CompletableFuture> collect(Query query) { ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(query.getConfig().getBytes()); api = new CoreV1Api(Config.fromConfig(byteArrayInputStream)); } - api.listPodForAllNamespacesAsync(null, null, null, null, + api.listPodForAllNamespacesAsync(null, null, query.getFieldSelector(), query.getLabelSelector(), null, null, null, null, null, new ApiCallback() { @Override diff --git a/chaosblade-box-service/src/main/java/com/alibaba/chaosblade/box/service/collect/CollectorTimer.java b/chaosblade-box-service/src/main/java/com/alibaba/chaosblade/box/service/collect/CollectorTimer.java index ea76dde8..19a9227c 100644 --- a/chaosblade-box-service/src/main/java/com/alibaba/chaosblade/box/service/collect/CollectorTimer.java +++ b/chaosblade-box-service/src/main/java/com/alibaba/chaosblade/box/service/collect/CollectorTimer.java @@ -88,6 +88,12 @@ public class CollectorTimer implements InitializingBean { @Value("${chaos.collector.period}") private Integer period; + @Value("${chaos.collector.search.fieldSelector}") + private String fieldSelector; + + @Value("${chaos.collector.search.labelSelector}") + private String labelSelector; + @Autowired private ApplicationContext applicationContext; @@ -193,8 +199,10 @@ private void podCollect(PodCollector collector, Query query) { q.setClusterId(query.getClusterId()); q.setConfig(query.getConfig()); q.setNodeName(node.getNodeName()); - CompletableFuture> future = collector.collect(q); + q.setFieldSelector(fieldSelector) ; + q.setLabelSelector(labelSelector); + CompletableFuture> future = collector.collect(q); QueryWrapper queryWrapper = QueryWrapperBuilder.build(); queryWrapper.lambda().eq(DeviceDO::getType, DeviceType.POD.getCode()); deviceMapper.update(DeviceDO.builder().lastPingTime(DateUtil.date()).build(), queryWrapper); @@ -260,6 +268,8 @@ private void containerCollect(ContainerCollector collector, Query query) { q.setClusterId(query.getClusterId()); q.setConfig(query.getConfig()); q.setPodName(devicePod.getPodName()); + q.setFieldSelector(fieldSelector) ; + q.setLabelSelector(labelSelector); CompletableFuture> future = collector.collect(q); future.handle((containers, e) -> { diff --git a/chaosblade-box-web/src/main/resources/application.yml b/chaosblade-box-web/src/main/resources/application.yml index ec025d0c..3daa22e5 100644 --- a/chaosblade-box-web/src/main/resources/application.yml +++ b/chaosblade-box-web/src/main/resources/application.yml @@ -61,6 +61,9 @@ chaos: enable: false type: kube_api period: 30 + search: + fieldSelector: + labelSelector: prometheus: api: metric: