broker日志配置

This commit is contained in:
许晓东
2021-11-05 14:37:00 +08:00
parent 704ae1d968
commit c2dc95aba4
8 changed files with 103 additions and 9 deletions

View File

@@ -70,4 +70,19 @@ public class ConfigController {
public Object deleteBrokerConfig(@RequestBody AlterConfigDTO dto) { public Object deleteBrokerConfig(@RequestBody AlterConfigDTO dto) {
return configService.alterBrokerConfig(dto.getEntity(), dto.to(), AlterType.DELETE); 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);
}
} }

View File

@@ -16,7 +16,11 @@ public interface ConfigService {
ResponseData getBrokerConfig(String brokerId); ResponseData getBrokerConfig(String brokerId);
ResponseData getBrokerLoggerConfig(String brokerId);
ResponseData alterBrokerConfig(String brokerId, ConfigEntry entry, AlterType type); ResponseData alterBrokerConfig(String brokerId, ConfigEntry entry, AlterType type);
ResponseData alterBrokerLoggerConfig(String brokerId, ConfigEntry entry, AlterType type);
ResponseData alterTopicConfig(String topic, ConfigEntry entry, AlterType type); ResponseData alterTopicConfig(String topic, ConfigEntry entry, AlterType type);
} }

View File

@@ -36,6 +36,12 @@ public class ConfigServiceImpl implements ConfigService {
return ResponseData.create().data(vos).success(); return ResponseData.create().data(vos).success();
} }
@Override public ResponseData getBrokerLoggerConfig(String brokerId) {
List<ConfigEntry> configEntries = configConsole.getBrokerLoggerConfig(brokerId);
List<ConfigEntryVO> 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) { @Override public ResponseData alterBrokerConfig(String brokerId, ConfigEntry entry, AlterType type) {
Tuple2<Object, String> tuple2 = null; Tuple2<Object, String> tuple2 = null;
switch (type) { switch (type) {
@@ -49,6 +55,19 @@ public class ConfigServiceImpl implements ConfigService {
return (boolean) tuple2._1() ? ResponseData.create().success() : ResponseData.create().failed(tuple2._2()); return (boolean) tuple2._1() ? ResponseData.create().success() : ResponseData.create().failed(tuple2._2());
} }
@Override public ResponseData alterBrokerLoggerConfig(String brokerId, ConfigEntry entry, AlterType type) {
Tuple2<Object, String> 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 @Override
public ResponseData alterTopicConfig(String topic, ConfigEntry entry, AlterType type) { public ResponseData alterTopicConfig(String topic, ConfigEntry entry, AlterType type) {
Tuple2<Object, String> tuple2 = null; Tuple2<Object, String> tuple2 = null;

View File

@@ -5,7 +5,7 @@ import java.util.Collections
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
import com.xuxd.kafka.console.config.KafkaConfig import com.xuxd.kafka.console.config.KafkaConfig
import kafka.admin.ConfigCommand.BrokerLoggerConfigType import kafka.console.ConfigConsole.BrokerLoggerConfigType
import kafka.server.ConfigType import kafka.server.ConfigType
import org.apache.kafka.clients.admin.{AlterConfigOp, Config, ConfigEntry, DescribeConfigsOptions} import org.apache.kafka.clients.admin.{AlterConfigOp, Config, ConfigEntry, DescribeConfigsOptions}
import org.apache.kafka.common.config.ConfigResource import org.apache.kafka.common.config.ConfigResource
@@ -31,6 +31,10 @@ class ConfigConsole(config: KafkaConfig) extends KafkaConsole(config: KafkaConfi
getConfig(ConfigType.Broker, broker) getConfig(ConfigType.Broker, broker)
} }
def getBrokerLoggerConfig(broker: String): List[ConfigEntry] = {
getConfig(BrokerLoggerConfigType, broker)
}
def setBrokerConfig(broker: String, entry: ConfigEntry): (Boolean, String) = { def setBrokerConfig(broker: String, entry: ConfigEntry): (Boolean, String) = {
alterConfig(ConfigType.Broker, broker, entry, AlterConfigOp.OpType.SET) 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) 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] = { def getConfig(entityType: String, entityName: String): List[ConfigEntry] = {
getResourceConfig(entityType, entityName, false).asJava getResourceConfig(entityType, entityName, false).asJava
} }
@@ -107,3 +119,7 @@ class ConfigConsole(config: KafkaConfig) extends KafkaConsole(config: KafkaConfi
configResourceType configResourceType
} }
} }
object ConfigConsole {
val BrokerLoggerConfigType = "broker-loggers"
}

View File

@@ -58,6 +58,10 @@ export const KafkaConfigApi = {
url: "/config/broker", url: "/config/broker",
method: "get", method: "get",
}, },
getBrokerLoggerConfig: {
url: "/config/broker/logger",
method: "get",
},
setBrokerConfig: { setBrokerConfig: {
url: "/config/broker", url: "/config/broker",
method: "post", method: "post",
@@ -66,6 +70,14 @@ export const KafkaConfigApi = {
url: "/config/broker", url: "/config/broker",
method: "delete", method: "delete",
}, },
setBrokerLoggerConfig: {
url: "/config/broker/logger",
method: "post",
},
deleteBrokerLoggerConfig: {
url: "/config/broker/logger",
method: "delete",
},
}; };
export const KafkaTopicApi = { export const KafkaTopicApi = {

View File

@@ -54,6 +54,7 @@
:visible="showEditConfigDialog" :visible="showEditConfigDialog"
:record="selectData" :record="selectData"
:broker-id="id" :broker-id="id"
:is-logger-config="isLoggerConfig"
@closeEditConfigDialog="closeEditConfigDialog" @closeEditConfigDialog="closeEditConfigDialog"
></EditConfig> ></EditConfig>
</a-spin> </a-spin>
@@ -83,6 +84,10 @@ export default {
type: String, type: String,
default: "", default: "",
}, },
isLoggerConfig: {
type: Boolean,
default: false,
},
}, },
data() { data() {
return { return {
@@ -107,9 +112,12 @@ export default {
methods: { methods: {
getBrokerConfig() { getBrokerConfig() {
this.loading = true; this.loading = true;
const api = this.isLoggerConfig
? KafkaConfigApi.getBrokerLoggerConfig
: KafkaConfigApi.getBrokerConfig;
request({ request({
url: KafkaConfigApi.getBrokerConfig.url + "?brokerId=" + this.id, url: api.url + "?brokerId=" + this.id,
method: KafkaConfigApi.getBrokerConfig.method, method: api.method,
}).then((res) => { }).then((res) => {
this.loading = false; this.loading = false;
if (res.code != 0) { if (res.code != 0) {
@@ -126,9 +134,12 @@ export default {
deleteBrokerConfig(record) { deleteBrokerConfig(record) {
this.selectData = record; this.selectData = record;
this.loading = true; this.loading = true;
const api = this.isLoggerConfig
? KafkaConfigApi.deleteBrokerLoggerConfig
: KafkaConfigApi.deleteBrokerConfig;
request({ request({
url: KafkaConfigApi.deleteBrokerConfig.url, url: api.url,
method: KafkaConfigApi.deleteBrokerConfig.method, method: api.method,
data: { data: {
name: record.name, name: record.name,
value: record.value, value: record.value,

View File

@@ -18,15 +18,23 @@
size="small" size="small"
href="javascript:;" href="javascript:;"
class="operation-btn" class="operation-btn"
@click="openBrokerConfigDialog(record)" @click="openBrokerConfigDialog(record, false)"
>属性配置 >属性配置
</a-button> </a-button>
<a-button
size="small"
href="javascript:;"
class="operation-btn"
@click="openBrokerConfigDialog(record, true)"
>日志配置
</a-button>
</div> </div>
</a-table> </a-table>
</div> </div>
<BrokerConfig <BrokerConfig
:visible="showBrokerConfigDialog" :visible="showBrokerConfigDialog"
:id="this.select.idString" :id="this.select.idString"
:is-logger-config="isLoggerConfig"
@closeBrokerConfigDialog="closeBrokerConfigDialog" @closeBrokerConfigDialog="closeBrokerConfigDialog"
></BrokerConfig> ></BrokerConfig>
</a-spin> </a-spin>
@@ -49,6 +57,7 @@ export default {
clusterId: "", clusterId: "",
showBrokerConfigDialog: false, showBrokerConfigDialog: false,
select: {}, select: {},
isLoggerConfig: false,
}; };
}, },
methods: { methods: {
@@ -63,9 +72,10 @@ export default {
this.clusterId = res.data.clusterId; this.clusterId = res.data.clusterId;
}); });
}, },
openBrokerConfigDialog(record) { openBrokerConfigDialog(record, isLoggerConfig) {
this.select = record; this.select = record;
this.showBrokerConfigDialog = true; this.showBrokerConfigDialog = true;
this.isLoggerConfig = isLoggerConfig;
}, },
closeBrokerConfigDialog() { closeBrokerConfigDialog() {
this.showBrokerConfigDialog = false; this.showBrokerConfigDialog = false;

View File

@@ -67,6 +67,10 @@ export default {
type: String, type: String,
default: "", default: "",
}, },
isLoggerConfig: {
type: Boolean,
default: false,
},
}, },
data() { data() {
return { return {
@@ -87,9 +91,12 @@ export default {
this.form.validateFields((err, values) => { this.form.validateFields((err, values) => {
if (!err) { if (!err) {
this.loading = true; this.loading = true;
const api = this.isLoggerConfig
? KafkaConfigApi.setBrokerLoggerConfig
: KafkaConfigApi.setBrokerConfig;
request({ request({
url: KafkaConfigApi.setBrokerConfig.url, url: api.url,
method: KafkaConfigApi.setBrokerConfig.method, method: api.method,
data: Object.assign({ entity: this.brokerId }, values), data: Object.assign({ entity: this.brokerId }, values),
}).then((res) => { }).then((res) => {
this.loading = false; this.loading = false;