From c2dc95aba4ef5dc205767108acfad4ca6d047535 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=AE=B8=E6=99=93=E4=B8=9C?= <763795151@qq.com> Date: Fri, 5 Nov 2021 14:37:00 +0800 Subject: [PATCH] =?UTF-8?q?broker=E6=97=A5=E5=BF=97=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../console/controller/ConfigController.java | 15 +++++++++++++++ .../kafka/console/service/ConfigService.java | 4 ++++ .../service/impl/ConfigServiceImpl.java | 19 +++++++++++++++++++ .../scala/kafka/console/ConfigConsole.scala | 18 +++++++++++++++++- ui/src/utils/api.js | 12 ++++++++++++ ui/src/views/cluster/BrokerConfig.vue | 19 +++++++++++++++---- ui/src/views/cluster/Cluster.vue | 14 ++++++++++++-- ui/src/views/cluster/EditConfig.vue | 11 +++++++++-- 8 files changed, 103 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/xuxd/kafka/console/controller/ConfigController.java b/src/main/java/com/xuxd/kafka/console/controller/ConfigController.java index d11ca37..3c2983f 100644 --- a/src/main/java/com/xuxd/kafka/console/controller/ConfigController.java +++ b/src/main/java/com/xuxd/kafka/console/controller/ConfigController.java @@ -70,4 +70,19 @@ public class ConfigController { public Object deleteBrokerConfig(@RequestBody AlterConfigDTO dto) { return configService.alterBrokerConfig(dto.getEntity(), dto.to(), AlterType.DELETE); } + + @GetMapping("/broker/logger") + public Object getBrokerLoggerConfig(String brokerId) { + return configService.getBrokerLoggerConfig(brokerId); + } + + @PostMapping("/broker/logger") + public Object setBrokerLoggerConfig(@RequestBody AlterConfigDTO dto) { + return configService.alterBrokerLoggerConfig(dto.getEntity(), dto.to(), AlterType.SET); + } + + @DeleteMapping("/broker/logger") + public Object deleteBrokerLoggerConfig(@RequestBody AlterConfigDTO dto) { + return configService.alterBrokerLoggerConfig(dto.getEntity(), dto.to(), AlterType.DELETE); + } } diff --git a/src/main/java/com/xuxd/kafka/console/service/ConfigService.java b/src/main/java/com/xuxd/kafka/console/service/ConfigService.java index 182866d..6f20dad 100644 --- a/src/main/java/com/xuxd/kafka/console/service/ConfigService.java +++ b/src/main/java/com/xuxd/kafka/console/service/ConfigService.java @@ -16,7 +16,11 @@ public interface ConfigService { ResponseData getBrokerConfig(String brokerId); + ResponseData getBrokerLoggerConfig(String brokerId); + ResponseData alterBrokerConfig(String brokerId, ConfigEntry entry, AlterType type); + ResponseData alterBrokerLoggerConfig(String brokerId, ConfigEntry entry, AlterType type); + ResponseData alterTopicConfig(String topic, ConfigEntry entry, AlterType type); } diff --git a/src/main/java/com/xuxd/kafka/console/service/impl/ConfigServiceImpl.java b/src/main/java/com/xuxd/kafka/console/service/impl/ConfigServiceImpl.java index d6fc418..112c71e 100644 --- a/src/main/java/com/xuxd/kafka/console/service/impl/ConfigServiceImpl.java +++ b/src/main/java/com/xuxd/kafka/console/service/impl/ConfigServiceImpl.java @@ -36,6 +36,12 @@ public class ConfigServiceImpl implements ConfigService { return ResponseData.create().data(vos).success(); } + @Override public ResponseData getBrokerLoggerConfig(String brokerId) { + List configEntries = configConsole.getBrokerLoggerConfig(brokerId); + List vos = configEntries.stream().map(ConfigEntryVO::from).sorted().collect(Collectors.toList()); + return ResponseData.create().data(vos).success(); + } + @Override public ResponseData alterBrokerConfig(String brokerId, ConfigEntry entry, AlterType type) { Tuple2 tuple2 = null; switch (type) { @@ -49,6 +55,19 @@ public class ConfigServiceImpl implements ConfigService { return (boolean) tuple2._1() ? ResponseData.create().success() : ResponseData.create().failed(tuple2._2()); } + @Override public ResponseData alterBrokerLoggerConfig(String brokerId, ConfigEntry entry, AlterType type) { + Tuple2 tuple2 = null; + switch (type) { + case SET: + tuple2 = configConsole.setBrokerLoggerConfig(brokerId, entry); + break; + case DELETE: + tuple2 = configConsole.deleteBrokerLoggerConfig(brokerId, entry); + break; + } + return (boolean) tuple2._1() ? ResponseData.create().success() : ResponseData.create().failed(tuple2._2()); + } + @Override public ResponseData alterTopicConfig(String topic, ConfigEntry entry, AlterType type) { Tuple2 tuple2 = null; diff --git a/src/main/scala/kafka/console/ConfigConsole.scala b/src/main/scala/kafka/console/ConfigConsole.scala index fbf5d62..6232eff 100644 --- a/src/main/scala/kafka/console/ConfigConsole.scala +++ b/src/main/scala/kafka/console/ConfigConsole.scala @@ -5,7 +5,7 @@ import java.util.Collections import java.util.concurrent.TimeUnit import com.xuxd.kafka.console.config.KafkaConfig -import kafka.admin.ConfigCommand.BrokerLoggerConfigType +import kafka.console.ConfigConsole.BrokerLoggerConfigType import kafka.server.ConfigType import org.apache.kafka.clients.admin.{AlterConfigOp, Config, ConfigEntry, DescribeConfigsOptions} import org.apache.kafka.common.config.ConfigResource @@ -31,6 +31,10 @@ class ConfigConsole(config: KafkaConfig) extends KafkaConsole(config: KafkaConfi getConfig(ConfigType.Broker, broker) } + def getBrokerLoggerConfig(broker: String): List[ConfigEntry] = { + getConfig(BrokerLoggerConfigType, broker) + } + def setBrokerConfig(broker: String, entry: ConfigEntry): (Boolean, String) = { alterConfig(ConfigType.Broker, broker, entry, AlterConfigOp.OpType.SET) } @@ -47,6 +51,14 @@ class ConfigConsole(config: KafkaConfig) extends KafkaConsole(config: KafkaConfi alterConfig(ConfigType.Topic, topic, entry, AlterConfigOp.OpType.DELETE) } + def setBrokerLoggerConfig(topic: String, entry: ConfigEntry): (Boolean, String) = { + alterConfig(BrokerLoggerConfigType, topic, entry, AlterConfigOp.OpType.SET) + } + + def deleteBrokerLoggerConfig(topic: String, entry: ConfigEntry): (Boolean, String) = { + alterConfig(BrokerLoggerConfigType, topic, entry, AlterConfigOp.OpType.DELETE) + } + def getConfig(entityType: String, entityName: String): List[ConfigEntry] = { getResourceConfig(entityType, entityName, false).asJava } @@ -107,3 +119,7 @@ class ConfigConsole(config: KafkaConfig) extends KafkaConsole(config: KafkaConfi configResourceType } } + +object ConfigConsole { + val BrokerLoggerConfigType = "broker-loggers" +} diff --git a/ui/src/utils/api.js b/ui/src/utils/api.js index a071277..99d972f 100644 --- a/ui/src/utils/api.js +++ b/ui/src/utils/api.js @@ -58,6 +58,10 @@ export const KafkaConfigApi = { url: "/config/broker", method: "get", }, + getBrokerLoggerConfig: { + url: "/config/broker/logger", + method: "get", + }, setBrokerConfig: { url: "/config/broker", method: "post", @@ -66,6 +70,14 @@ export const KafkaConfigApi = { url: "/config/broker", method: "delete", }, + setBrokerLoggerConfig: { + url: "/config/broker/logger", + method: "post", + }, + deleteBrokerLoggerConfig: { + url: "/config/broker/logger", + method: "delete", + }, }; export const KafkaTopicApi = { diff --git a/ui/src/views/cluster/BrokerConfig.vue b/ui/src/views/cluster/BrokerConfig.vue index eb4e0f3..0a9741a 100644 --- a/ui/src/views/cluster/BrokerConfig.vue +++ b/ui/src/views/cluster/BrokerConfig.vue @@ -54,6 +54,7 @@ :visible="showEditConfigDialog" :record="selectData" :broker-id="id" + :is-logger-config="isLoggerConfig" @closeEditConfigDialog="closeEditConfigDialog" > @@ -83,6 +84,10 @@ export default { type: String, default: "", }, + isLoggerConfig: { + type: Boolean, + default: false, + }, }, data() { return { @@ -107,9 +112,12 @@ export default { methods: { getBrokerConfig() { this.loading = true; + const api = this.isLoggerConfig + ? KafkaConfigApi.getBrokerLoggerConfig + : KafkaConfigApi.getBrokerConfig; request({ - url: KafkaConfigApi.getBrokerConfig.url + "?brokerId=" + this.id, - method: KafkaConfigApi.getBrokerConfig.method, + url: api.url + "?brokerId=" + this.id, + method: api.method, }).then((res) => { this.loading = false; if (res.code != 0) { @@ -126,9 +134,12 @@ export default { deleteBrokerConfig(record) { this.selectData = record; this.loading = true; + const api = this.isLoggerConfig + ? KafkaConfigApi.deleteBrokerLoggerConfig + : KafkaConfigApi.deleteBrokerConfig; request({ - url: KafkaConfigApi.deleteBrokerConfig.url, - method: KafkaConfigApi.deleteBrokerConfig.method, + url: api.url, + method: api.method, data: { name: record.name, value: record.value, diff --git a/ui/src/views/cluster/Cluster.vue b/ui/src/views/cluster/Cluster.vue index 7152f0c..eeb6cb9 100644 --- a/ui/src/views/cluster/Cluster.vue +++ b/ui/src/views/cluster/Cluster.vue @@ -18,15 +18,23 @@ size="small" href="javascript:;" class="operation-btn" - @click="openBrokerConfigDialog(record)" + @click="openBrokerConfigDialog(record, false)" >属性配置 + 日志配置 + @@ -49,6 +57,7 @@ export default { clusterId: "", showBrokerConfigDialog: false, select: {}, + isLoggerConfig: false, }; }, methods: { @@ -63,9 +72,10 @@ export default { this.clusterId = res.data.clusterId; }); }, - openBrokerConfigDialog(record) { + openBrokerConfigDialog(record, isLoggerConfig) { this.select = record; this.showBrokerConfigDialog = true; + this.isLoggerConfig = isLoggerConfig; }, closeBrokerConfigDialog() { this.showBrokerConfigDialog = false; diff --git a/ui/src/views/cluster/EditConfig.vue b/ui/src/views/cluster/EditConfig.vue index bf48c4f..74670ed 100644 --- a/ui/src/views/cluster/EditConfig.vue +++ b/ui/src/views/cluster/EditConfig.vue @@ -67,6 +67,10 @@ export default { type: String, default: "", }, + isLoggerConfig: { + type: Boolean, + default: false, + }, }, data() { return { @@ -87,9 +91,12 @@ export default { this.form.validateFields((err, values) => { if (!err) { this.loading = true; + const api = this.isLoggerConfig + ? KafkaConfigApi.setBrokerLoggerConfig + : KafkaConfigApi.setBrokerConfig; request({ - url: KafkaConfigApi.setBrokerConfig.url, - method: KafkaConfigApi.setBrokerConfig.method, + url: api.url, + method: api.method, data: Object.assign({ entity: this.brokerId }, values), }).then((res) => { this.loading = false;